所以问题是这样的:当在docker镜像中打开一些网站时(例如https://iamstripes.com-大多数url都正确加载,这是一个不正确的例子),网页没有正确渲染,显然页面中缺少一些JavaScript。
如果在本地浏览器中打开相同的网站,则所有内容都正确加载。
我尝试了多个docker镜像,从基于selenium的,“简单”的docker镜像,只与浏览器,甚至sause labs示例,所有这些都有相同的结果。
我的第一个假设是,我在启动浏览器时丢失了某种标志,但我已经尝试了(几乎)所有在互联网上建议的方法都没有成功:(
TL;DR
Browser (chrome, firefox) launched in docker fails to open the URL correctly
Browser (chrome, firefox) launched locally opens the URL correctly
docker镜像示例:
docker run -d --name=firefox -p 5800:5800 -v /docker/appdata/firefox:/config:rw jlesage/firefox
然后你可以在任何浏览器窗口中使用http://localhost:5800打开docker浏览器
在docker selenium中启动浏览器时,我尝试了几个浏览器选项(这里缺少一些):
--disable-security
--no-sandbox
在Chrome的功能中:excludeSwitches: ["enable-automation"]
我已经尝试过使用和不使用这些设置,在Firefox的情况下,甚至直接进入浏览器about:config
并直接更改了一些安全参数,但没有成功。
2条答案
按热度按时间zour9fqk1#
1.可能是主机的网络设置有问题。
--name=firefox --net=host
启动docker容器到docker命令。1.在docker容器中手动设置DNS服务器,但将
--dns=<dns_ip>
添加到docker命令中。py49o6xq2#
对于任何遇到类似问题的人来说...
默认用户代理包含对Apple和Safari的引用,并且由于某种原因,该网站正在启用Chrome和Firefox根本不支持的功能,并且无法正确加载内容。也就是说,如果您发送标志:
然后该网站将正确加载没有任何问题...