プロキシの背後にある Linux Mint で Google Chrome を使用できます。ただし、ブラウザを起動するたびに、認証のためにユーザー名とパスワードを入力する必要があります。
ブラウザを起動するときにユーザー名とパスワードを設定する方法はありますか?
すでに試しました:
chrome --proxy-server="username:password@yourIP:PORT"
(例)chrome --proxy-server="username:[email protected]:8080"
これは機能しませんでした。
答え1
注記次の:
プロキシ自動構成ファイルは、ハードコードされたユーザー名とパスワードをサポートしていません。これには正当な理由があり、ハードコードされた資格情報のサポートを提供すると、プロキシにアクセスするために必要な資格情報を誰でも簡単に表示できるため、重大なセキュリティホールが生じることになります。
プロキシを透過プロキシとして構成すると、ユーザー名とパスワードは不要になります。コメントの 1 つで、プロキシ サーバーが LAN の外部にあるため認証が必要であると述べられています。ただし、ほとんどのプロキシはソース IP に基づくルールをサポートしているため、企業ネットワークからのリクエストのみを許可するだけで済みます。
プロキシ自動設定の仕様は、もともと1996年にNetscapeによって起草されました。元の仕様は直接入手できなくなりましたが、Wayback Machineのアーカイブされたコピー仕様はあまり変更されておらず、元の仕様とほぼ同じです。仕様は非常にシンプルで、ハードコードされた資格情報が用意されていないことがわかります。
この問題を解決するには、次のツールを使用できます。
https://github.com/sjitech/proxy-login-automator
このツールは、ローカル プロキシを作成し、実際のプロキシ サーバーにユーザー/パスワードを自動的に挿入できます。PAC スクリプトをサポートします。
答え2
ヘッドレス モードの場合は、devtools プロトコルを使用してプロキシのユーザー名とパスワードを指定できます。
これを実行するには、有効にしてsetRequestInterception
、要求されたときcontinueInterceptedRequest
に実行しますauthChallengeResponse
。
私はPHPを使っていて出典: chromeしかし、私の例が皆さんに何らかのアイデアを与えてくれることを願っています:
// enable request interception (important!!!)
// it allows the browser to inform us that we need to complete a username/password authorization.
$page->getSession()->sendMessageSync(new Message('Network.setRequestInterception', ['patterns' => [['urlPattern' => '*']]]));
// this method allows you to approve or block request (we are only approving here)
$page->getSession()->on('method:Network.requestIntercepted', function (array $params): void {
// the browser is letting us know that we need to provide proxy (or 401) credentials (normally, happens only once)
if (isset($params["authChallenge"])) {
// approving request and sending username/password
$page->getSession()->sendMessageSync(
new Message('Network.continueInterceptedRequest', ['interceptionId' => $params["interceptionId"], 'authChallengeResponse' => ['response' => 'ProvideCredentials', 'username' => "proxy_username", 'password' => "proxy_password"]])
);
} else {
// simply approving request
$page->getSession()->sendMessageSync(
new Message('Network.continueInterceptedRequest', ['interceptionId' => $params["interceptionId"]])
);
}
});
答え3
さまざまなCLIアプローチを試しましたが、認証で動作させることはできませんでした。しかし、スイッチオメガ拡張機能これまでのところ問題なく動作しています。