我通过以下方式运行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/