Bij*_*jan 2 python selenium python-3.x docker undetected-chromedriver
我一直在 Synology NAS 上使用https://hub.docker.com/r/selenium/standalone-chrome,以使用 Selenium Webdriver 执行自动请求。
我不记得我运行的命令,但我启动了容器并driver = webdriver.Remote("http://127.0.0.1:4444/wd/hub")
在 Python 中运行以连接到 selenium chrome 图像。
但是我有一个用例需要我使用unDetected-chromedriver。如何安装https://hub.docker.com/r/bruvv/undetected_chromedriver之类的东西并从 NAS 的 python 终端连接到它?
请注意,每个人都可以在 docker hub 上发布,因此存在大量未检测到的 chromedriver。因此,您尝试安装的是其他人的(失败的)尝试。
官方: https: //hub.docker.com/r/ultrafunk/unDetected-chromedriver
根据 @nnhthuan 的评论,更多细节。
unDetected-chromedriver 将启动 Chrome 二进制文件,但会从 python 执行此操作,而不是让 chromedriver 二进制文件运行 Chrome。由于 unDetected-chromedriver 并不正式支持无头模式,因此您需要一种在 docker 上运行“窗口化”chrome 的方法。为了实现这一点,您可以使用 Xvfb 来模拟 X 服务器桌面。如果您忘记了这一步,您将无法连接到 chrome,因为 chrome 会在 unDetected-chromedriver 能够连接之前自行关闭(找不到屏幕),因此会崩溃。
为了确保 xvfb 继续运行,您可以在入口点中使用类似的内容:
#!/bin/bash
export DISPLAY=:1
function keepUpScreen() {
echo "running keepUpScreen()"
while true; do
sleep .25
if [ -z $(pidof Xvfb) ]; then
Xvfb $DISPLAY -screen $DISPLAY 1280x1024x16 &
fi;
done;
}
keepUpScreen &
echo "running: ${@}"
exec "$@"
Run Code Online (Sandbox Code Playgroud)
一旦您的映像运行稳定,您可以将 chromedriver debug_host 设置为您的内部 IP 地址而不是 127.0.0.1,并将 debug_port 设置为静态值。这将启用来自远程主机的连接。不要忘记在 docker 中转发它们。
归档时间: |
|
查看次数: |
3477 次 |
最近记录: |