web-dev-qa-db-ja.com

chrome --headlessモードの場合:プロキシの資格情報/認証情報を提供します

私はchrome次の方法で実行しています:

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

企業プロキシが原因で、資格情報の入力を要求する認証ポップアップにぶつかっているようです。これらの資格情報をコマンドラインに挿入するにはどうすればよいですか?

13
cgsd

これを直接行う方法はありません。 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:90 したがって、このプロキシをChromeヘッドレスで呼び出す必要があります。--modeupstreamはMITMProxyに通知します使用する実際のプロキシにトラフィックをリダイレクトします。--setupstream_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/

1
Anorgar