ARM
版本的服务器运行selenium
的一大难点是chrome-headless-shell
没有ARM
版,官方也明确说了不支持~Linux ARM64 support? · Issue #1 · GoogleChromeLabs/chrome-for-testing
Chrome for Testing availability
因此,只能是用民间大神的headless shell docker
版本,我们是思路是在青龙面板中连接headless docker
中的Chrome
,从而完成脚本的运行,下面以node
为例。
1、配置基础环境
首先创建一个共同的网络,让青龙和headless shell
在同一个网络下面:
docker network create ql-net || true
然后安装docker
版本的headless shell
:
docker run -d --name headless-shell \ --network ql-net \ -p 9222:9222 \ --restart unless-stopped \ docker.io/chromedp/headless-shell:latest
接着,获取容器IP
,
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' headless-shell
172.24.0.2
然后把ql-net
加到青龙容器中(注意把qinglong
替换为你的容器ID
或者容器name
):
docker network connect ql-net qinglong 2>/dev/null || true
进到青龙容器,docker exec -it qinglong bash
测试下从青龙能否连接headless shell
:curl -s http://172.24.0.2:9222/json/version
,出现下面这个就是成功了~
root@fd67df273ee5:/ql/scripts/navix $ curl -s http://172.24.0.2:9222/json/version { "Browser": "Chrome/139.0.7258.128", "Protocol-Version": "1.3", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.7258.128 Safari/537.36", "V8-Version": "13.9.205.19", "WebKit-Version": "537.36 (@e1327e2d24baeb55a21b90cba19a31ca892c50da)", "webSocketDebuggerUrl": "ws://172.24.0.2:9222/devtools/browser/03a3e548-5c8b-4c74-b87e-2d16a050278b" }
2、配置脚本环境
进到青龙面板的脚本目录,创建一个node
目录并安装依赖(用 pnpm
/ npm
都行,注意不要用中文目录):
mkdir -p /ql/data/scripts/xx && cd /ql/data/scripts/xx
npm init -y
因为我需要用PushDeer
通知,所以需要安装:
PUPPETEER_SKIP_DOWNLOAD=1 npm i puppeteer@22 node-fetch@3
到这里脚本环境基本就成了,最后就是创建js
文件,然后进行测试了~
可以看到,脚本运行正常~
最后,打开青龙面板界面
—定时任务
—创建任务
:
添加之后可以运行测试下: