我按以下方式运行chrome:
google-chrome --headless --disable-gpu --dump-dom --disable-web-security
由于公司代理,它似乎碰到要求输入凭据的身份验证弹出窗口。如何在命令行上注入这些凭据?
答案 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/