使用用户名和密码设置 Google Chrome 代理

使用用户名和密码设置 Google Chrome 代理

我可以在 Linux Mint 下通过代理使用 Google Chrome。但是每次启动浏览器时,我都必须输入用户名和密码进行身份验证。

有什么方法可以在启动浏览器时设置用户名密码吗?

我已经尝试过:

chrome --proxy-server="username:password@yourIP:PORT"

(例如,)chrome --proxy-server="username:[email protected]:8080"

这不起作用。

答案1

笔记下列

代理自动配置文件不支持硬编码的用户名和密码。这背后也有很好的理由,因为提供对硬编码凭据的支持将带来重大的安全漏洞,因为任何人都可以轻松查看访问代理所需的凭据。

最好将代理配置为透明代理,这样就不需要用户名和密码了。您在一条评论中提到代理服务器位于 LAN 之外,这就是您需要身份验证的原因。但是,大多数代理都支持基于源 IP 的规则,在这种情况下,只需允许来自公司网络的请求即可。

最初的代理自动配置规范最初由 Netscape 于 1996 年起草。原始规范不再直接可用,但您仍可以使用 Wayback Machine 的存档副本。规范没有太大变化,与原来基本相同。您会发现规范非常简单,并且没有提供硬编码凭证。

为了解决这个问题 - 你可以使用这个工具:

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 扩展到目前为止运行良好。

相关内容