在docker中运行的浏览器无法从网页加载(一些)JavaScript

puruo6ea  于 2023-04-05  发布在  Docker
关注(0)|答案(2)|浏览(324)

所以问题是这样的:当在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并直接更改了一些安全参数,但没有成功。

zour9fqk

zour9fqk1#

1.可能是主机的网络设置有问题。

  1. Docker容器具有不同的网络配置,因此使用--name=firefox --net=host启动docker容器到docker命令。
    1.在docker容器中手动设置DNS服务器,但将--dns=<dns_ip>添加到docker命令中。
py49o6xq

py49o6xq2#

对于任何遇到类似问题的人来说...
默认用户代理包含对Apple和Safari的引用,并且由于某种原因,该网站正在启用Chrome和Firefox根本不支持的功能,并且无法正确加载内容。也就是说,如果您发送标志:

--user-agent=Chrome

然后该网站将正确加载没有任何问题...

相关问题