Consigo usar o Google Chrome no Linux Mint por meio de um proxy. Mas quando o navegador inicia, sempre tenho que inserir o nome de usuário e a senha para autenticação.
Existe alguma maneira de definir a senha do nome de usuário ao iniciar o navegador?
Eu já tentei:
chrome --proxy-server="username:password@yourIP:PORT"
(por exemplo, )chrome --proxy-server="username:[email protected]:8080"
Isso não funcionou.
Responder1
Observaçãoa seguir:
Os arquivos de configuração automática de proxy não suportam nomes de usuário e senhas codificados. Há um bom raciocínio por trás disso também, já que fornecer suporte para credenciais codificadas abriria brechas de segurança significativas, já que qualquer pessoa seria capaz de visualizar facilmente as credenciais necessárias para acessar o proxy.
Em vez disso, configure o proxy como um proxy transparente, dessa forma você não precisará de nome de usuário e senha. Você menciona em um de seus comentários que o servidor proxy está localizado fora da sua LAN, e é por isso que você precisa de autenticação. No entanto, a maioria dos proxies suporta regras baseadas no IP de origem; nesse caso, é uma simples questão de permitir apenas solicitações originadas da sua rede corporativa.
A especificação original de configuração automática do proxy foi originalmente elaborada pela Netscape em 1996. A especificação original não está mais disponível diretamente, mas você ainda pode acessá-la usando o The Wayback Machine'scópia arquivada. A especificação não mudou muito e ainda é praticamente a mesma que era originalmente. Você verá que a especificação é bastante simples e que não há provisão para credenciais embutidas em código.
Para resolver este problema - você pode usar esta ferramenta:
https://github.com/sjitech/proxy-login-automator
Esta ferramenta pode criar um proxy local e injetar automaticamente usuário/senha no servidor proxy real. Suporte a script PAC.
Responder2
Se você estiver no modo headless, poderá usar o protocolo devtools para fornecer o nome de usuário/senha do proxy.
Você faz isso ativando setRequestInterception
e fazendo continueInterceptedRequest
quando authChallengeResponse
solicitado.
Eu sou um cara de PHP e usohttps://github.com/chrome-php/chrome/, mas espero que meu exemplo possa lhe dar algumas ideias:
// 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"]])
);
}
});
Responder3
Tentei várias abordagens CLI, mas não consegui fazê-la funcionar com autenticação. No entanto, oExtensão Switchy Omegafunciona bem até agora.