如何使用selenium和python在无头chorme浏览器中使用代理和身份验证?

时间:2018-01-24 16:39:41

标签: python google-chrome selenium proxy

我使用了DesiredCapabilities

capabilities = dict(DesiredCapabilities.CHROME)
capabilities['proxy'] = {'proxyType': 'MANUAL',
                         'httpProxy': proxy['address'],
                         'ftpProxy': proxy['address'],
                         'sslProxy': proxy['address'],
                         'noProxy': '',
                         'class': "org.openqa.selenium.Proxy",
                         'autodetect': False
                         }
chrome_options = Options()
chrome_options.add_argument('--headless')

但没有任何事情发生,如果我删除无头,我会看到身份验证需要警报。

我也用过

chrome_options.add_argument('--proxy-server=http://%s:%s@%s:%s'%(Config.PROXY_USERNAME,Config.PROXY_PASSWORD,Config.PROXY_URL,Config.PROXY_PORT))

但这没有用。我改变的地方" http"袜子"袜子"袜子4"和" socks5"这并没有帮助。

1 个答案:

答案 0 :(得分:0)

不幸的是,无头Chrome会丢弃警报(Issue 718235),并且不支持扩展(Issue 706008),因此我们无法使用在GUI模式下有效的技巧。剩下两个主要选择:

选项1-代理重定向

运行一个没有身份验证的单独代理,然后通过身份验证将其重定向到目标代理。

您可以使用mitmproxy在一行中完成此操作:
mitmproxy --mode upstream:http://<target-proxy-ip>:<target-proxy-port> --upstream-auth <user>:<password> -p 3128并将您的客户端配置为使用localhost:3128作为代理。

  

您可以通过pip pip install mitmproxy安装mitmproxy(要求   python3)
  参考: https://docs.mitmproxy.org/stable/overview-installation/

或使用 Squid 代理:Squid: forward to another proxy (with authentication details for the parent proxy)

选项2-使用Xvfb显示服务器

  

Xvfb在虚拟内存中执行所有图形操作,而无需   显示任何屏幕输出
  参考: https://www.x.org/releases/X11R7.7/doc/man/man1/Xvfb.1.xhtml

以下是与Selenium结合使用的说明:How do I run Selenium in Xvfb?
Xvfb的Python包装器:https://github.com/ponty/pyvirtualdisplay

祝你好运!