我通过以下方式运行chrome:
google-chrome --headless --disable-gpu --dump-dom --disable-web-security
由于存在公司代理,它似乎正进入要求输入凭据的身份验证弹出窗口。如何在命令行上注入(inject)这些凭据?

最佳答案

他们不是直接做到这一点的方法。 Google不允许在 headless 模式下使用登录名/密码连接到代理。

但是,我可以通过使用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,因此您必须使用 headless 的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/

关于google-chrome - 在--headless模式下的chrome : Provide credentials/auth for proxy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46002582/

10-09 14:59