Xvfb是流行的虚拟现实库,可以使很多需要图形界面的程序虚拟运行;
使用原因
淘宝列表页爬取经常会跳滑动验证码,需要使用puppeteer控制浏览器模拟人工滑动,而在无头模式下,无论怎么滑动都无法通过,必须使用有头模式,而CentOS服务器上没有界面,所以只能使用虚拟屏幕,使浏览器运行在虚拟屏幕上。
安装及使用
# 安装
yum install Xvfb
# 启动 7:虚拟屏幕id,使用时需要用到; 1336x768x24:屏幕分辨率;
Xvfb :7 -screen 0 1336x768x24 2>/dev/null &
# 使用 启动puppeteer程序前需指定运行在哪个虚拟屏幕上,如下命令,运行在虚拟屏幕id为7的上
export DISPLAY=:7
远程控制、监控
一般情况下,Xvfb都运行在Linux服务器上,你无法看到虚拟屏幕的运行情况,程序的调试十分麻烦,所以你需要在本地远程连接你服务器上所在的虚拟屏幕,进行监控控制。
服务器端
x11vnc:远程桌面,可以使人远程连接服务器上的虚拟屏幕;
# 安装 ubuntu
sudo apt install x11vnc
# 安装 centos
yum install -y x11vnc
# 启动 5900:连接端口 password:连接密码 7:虚拟屏幕id
x11vnc -listen 0.0.0.0 -rfbport 5900 -noipv6 -passwd password -display :7
用户端
可以使用vncviewer工具远程连接。
其它
python有一个第三方库PyVirtualDisplay,该库可以在python程序中启动指定运行端口xvfb程序,并且可远程监听。
正文完