我可以在代理程式後面的 Linux Mint 下使用 Google Chrome。但是當瀏覽器啟動時,每次我都必須輸入使用者名稱和密碼進行身份驗證。
有什麼方法可以在啟動瀏覽器時設定使用者名稱密碼嗎?
我已經嘗試過:
chrome --proxy-server="username:password@yourIP:PORT"
(例如,)chrome --proxy-server="username:[email protected]:8080"
這不起作用。
答案1
筆記下列:
代理自動設定檔不支援硬編碼的使用者名稱和密碼。這背後也有很好的理由,因為提供對硬編碼憑證的支援會帶來重大的安全漏洞,因為任何人都可以輕鬆查看存取代理程式所需的憑證。
而是將代理配置為透明代理,這樣您就不需要使用者名稱和密碼。您在評論之一中提到代理伺服器位於您的 LAN 之外,這就是您需要身份驗證的原因。但是,大多數代理程式支援基於來源 IP 的規則,在這種情況下,只需允許來自公司網路的請求就很簡單了。
原始代理自動設定規格最初由 Netscape 於 1996 年起草。存檔副本。該規範沒有太大變化,仍然與原來的基本相同。您將看到該規範非常簡單,並且沒有提供硬編碼憑證。
要解決這個問題 - 你可以使用這個工具:
https://github.com/sjitech/proxy-login-automator
該工具可以建立本地代理並自動將使用者/密碼注入真實代理伺服器。支援PAC腳本。
答案2
如果您處於無頭模式,則可以使用 devtools 協定提供代理程式的使用者名稱/密碼。
您可以透過在請求時啟用setRequestInterception
並執行操作continueInterceptedRequest
來實現此目的。authChallengeResponse
我是一名 PHP 人員,我使用https://github.com/chrome-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 方法,但無法使其與身份驗證一起使用。但是,那Switchy Omega 擴充到目前為止工作正常。