chrome in --headless模式:为代理提供凭证/身份验证

时间:2017-09-01 14:34:50

标签: google-chrome headless-browser

我按以下方式运行chrome:

google-chrome --headless --disable-gpu --dump-dom --disable-web-security

由于公司代理,它似乎碰到要求输入凭据的身份验证弹出窗口。如何在命令行上注入这些凭据?

1 个答案:

答案 0 :(得分:1)

他们不是直接做到这一点的方法。 Google不允许以无头模式连接具有登录名/密码的代理。

但是,我可以通过使用MITMProxy将代理与凭据一起使用。像Squid这样的其他技术也可以使用,但是使用起来更复杂。

技巧是使用MITMProxy创建本地上游代理,该代理通过您要使用的真实代理转移了您的呼叫。 MITMProxy为您代劳。

安装MITMProxy后,可以在命令行中使用它:

~/mitmdump -p 9000 --mode upstream:http://proxy:port --set upstream_auth=login:password --ssl-insecure

您必须将〜/ mitmdump替换为mitmproxy的真实路径(mitmdump将在控制台上运行它)。 -p 9000表示MITMProxy正在监听http://localhost:9000,因此您必须使用无头的Chrome调用此代理。 --mode上游将告诉MITMProxy将您的流量重定向到您要使用的真实代理。 --set upper_auth允许您使用正确的凭据进行连接。 --ssl-insecure允许您使用https并忽略错误的证书验证。

然后,您只需致电chrome即可:

google-chrome --headless --disable-gpu --dump-dom --disable-web-security --proxy-server=http://localhost:9000

在能够正确使用它进行https调用之前,您必须使用certutil导入MITMProxy安全证书:

certutil -d  sql:$HOME/.pki/nssdb -A -t "C,," -n mitm -i ~/.mitmproxy/mitmproxy-ca-cert.pem

如果您在使用此技巧时遇到任何麻烦,则MITMProxy的文档做得很好:https://mitmproxy.org/