使用 Selenium 使用 Google Chrome 无头访问代理服务器后面的网站,这在使用 Fiddler 时有效
Accessing a website behind a proxy server with Google Chrome headless, using Selenium, which works when using Fiddler
我在运行使用google chrome 无外设的selenium 测试运行 时遇到问题,访问只能通过代理服务器访问的站点。
TLDR:Chrome headless 无法通过代理服务器访问站点,除非 fiddler 是 运行ning
在尝试诊断问题时,我发现了一组奇怪的情况导致它起作用:
- Internet Explorer 配置为使用代理,只有在代理开启时才能访问站点。如果没有设置 Internet Explorer 代理,则无法连接到该站点。
- Chrome使用Internet explorer代理设置,所以访问
使用 chrome 的站点取决于所设置的 Internet Explorer 代理。
只要设置了Internet Explorer代理:
- 当 Selenium 测试 运行 和 chrome(不是无头)时,网站访问成功。
- 当 Selenium 测试 运行 和 chrome(无头)时,该站点未成功访问(超时)。
- 如果代理服务器配置传递给 chrome*(无头),
网站访问不成功。
- 如果未将代理服务器配置传递给 chrome(无头),则无法成功访问该站点。
如果我们在服务器上安装 fiddler,代理设置被替换为 Fiddler 代理,突然 selenium 测试 运行ning 通过 chrome(无头)成功工作。并且:
- 如果代理服务器配置传递给 chrome*
(headless),网站访问成功。
如果未将代理服务器配置传递给chrome(无头),则站点访问成功。
代理服务器配置传递给 chrome 使用
chrome_options.add_argument.
备注:
- 没有启用 chrome 个扩展。
该网站使用的是 HTTP,因此不存在由证书引起的问题
通过不需要代理服务器的路由访问网站,例如从我们的桌面,chrome headless 工作。
我在两台不同的服务器上试过这个,行为相同。
代理服务器不需要身份验证。
所以 chrome headless 无法通过代理访问站点,除非 fiddler 运行ning。有谁知道为什么会这样,以及我如何在没有 Fiddler 运行ning 的情况下让它工作?
我使用网络监视器看到无头 chrome 调用正在解析网站 IP 地址,而不是代理的 IP 地址,因此看起来无头 chrome 没有使用怀疑是默认代理。
最后,使用 --proxy-server 参数配置 nunit 测试以将代理服务器传递给无头 chrome 成功了。
我在运行使用google chrome 无外设的selenium 测试运行 时遇到问题,访问只能通过代理服务器访问的站点。
TLDR:Chrome headless 无法通过代理服务器访问站点,除非 fiddler 是 运行ning
在尝试诊断问题时,我发现了一组奇怪的情况导致它起作用:
- Internet Explorer 配置为使用代理,只有在代理开启时才能访问站点。如果没有设置 Internet Explorer 代理,则无法连接到该站点。
- Chrome使用Internet explorer代理设置,所以访问 使用 chrome 的站点取决于所设置的 Internet Explorer 代理。
只要设置了Internet Explorer代理:
- 当 Selenium 测试 运行 和 chrome(不是无头)时,网站访问成功。
- 当 Selenium 测试 运行 和 chrome(无头)时,该站点未成功访问(超时)。
- 如果代理服务器配置传递给 chrome*(无头), 网站访问不成功。
- 如果未将代理服务器配置传递给 chrome(无头),则无法成功访问该站点。
如果我们在服务器上安装 fiddler,代理设置被替换为 Fiddler 代理,突然 selenium 测试 运行ning 通过 chrome(无头)成功工作。并且:
- 如果代理服务器配置传递给 chrome* (headless),网站访问成功。
如果未将代理服务器配置传递给chrome(无头),则站点访问成功。
代理服务器配置传递给 chrome 使用 chrome_options.add_argument.
备注: - 没有启用 chrome 个扩展。
该网站使用的是 HTTP,因此不存在由证书引起的问题
通过不需要代理服务器的路由访问网站,例如从我们的桌面,chrome headless 工作。
我在两台不同的服务器上试过这个,行为相同。
代理服务器不需要身份验证。
所以 chrome headless 无法通过代理访问站点,除非 fiddler 运行ning。有谁知道为什么会这样,以及我如何在没有 Fiddler 运行ning 的情况下让它工作?
我使用网络监视器看到无头 chrome 调用正在解析网站 IP 地址,而不是代理的 IP 地址,因此看起来无头 chrome 没有使用怀疑是默认代理。
最后,使用 --proxy-server 参数配置 nunit 测试以将代理服务器传递给无头 chrome 成功了。