马春杰杰 Exit Reader Mode

青龙面板运行Chrome selenium爬虫脚本-ARM版本

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 shellcurl -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文件,然后进行测试了~

可以看到,脚本运行正常~

最后,打开青龙面板界面定时任务创建任务

添加之后可以运行测试下: