CentOS服务器运行Firefox Headless

之前搞了一个自动下载Volmoe.com上的漫画的小脚本,基于Selenium和火狐Headless模式,最近想把这个脚本跑在VPS上。在VPS上搭建火狐Headless的运行环境经历了一些波折,在此记录一下。

1. 安装Python3

yum install python3
python3 -V

2.安装火狐 ( https://www.mozilla.org/zh-CN/firefox/new/ )

#安装yum中的火狐,解决依赖问题
yum install firefox
firefox -V
#查询旧火狐版本
rpm -qa | grep firefox
#卸载
rpm -e firefox-68.5.0-2.el8_1.x86_64
#下载并安装新版火狐
yum install wget tar bzip2 nano
wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/73.0.1/linux-x86_64/zh-CN/firefox-73.0.1.tar.bz2
tar -jxvf firefox-73.0.1.tar.bz2
mv firefox /usr/local/
ln -s /usr/local/firefox/firefox /usr/bin/firefox
firefox -V

3.下载geckodriver ( https://github.com/mozilla/geckodriver/releases )

mkdir vol && cd vol
wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
tar zxvf geckodriver-v0.26.0-linux64.tar.gz
mv geckodriver /usr/local/bin
geckodriver -V

4.安装虚拟桌面环境

yum install Xvfb xorg-x11-fonts* xdpyinfo
yum install libXfont

5.安装依赖

pip3 -V
pip3 install --user pyvirtualdisplay selenium

6.测试脚本

nano test.py

之后输入下面的脚本,ctrl+o保存,ctrl+x退出。

#!/usr/bin/python3
# -*- coding:utf-8 -*-
from selenium import webdriver
from pyvirtualdisplay import Display
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
display = Display(visible=0, size=(800,600))
display.start()
binary = FirefoxBinary('/usr/bin/firefox')
driver = webdriver.Firefox(firefox_binary=binary)
driver.get('https://www.baidu.com')
print(driver.title)
driver.quit()
display.stop()

7.运行测试脚本

python3 test.py

不出意外应该会输出“百度一下,你就知道”,至此Headless模式的火狐就运行成功了。