프록시 뒤의 Linux Mint에서 Google Chrome을 사용할 수 있습니다. 하지만 브라우저가 시작될 때마다 인증을 위해 사용자 이름과 비밀번호를 입력해야 합니다.
브라우저를 시작할 때 사용자 이름 비밀번호를 설정할 수 있는 방법이 있습니까?
나는 이미 시도했습니다:
chrome --proxy-server="username:password@yourIP:PORT"
(예: )chrome --proxy-server="username:[email protected]:8080"
이것은 작동하지 않았습니다.
답변1
메모다음과 같은:
프록시 자동 구성 파일은 하드 코딩된 사용자 이름과 비밀번호를 지원하지 않습니다. 하드 코딩된 자격 증명에 대한 지원을 제공하면 누구나 프록시에 액세스하는 데 필요한 자격 증명을 쉽게 볼 수 있으므로 심각한 보안 허점이 열릴 수 있기 때문에 여기에는 그럴 만한 이유가 있습니다.
대신 프록시를 투명 프록시로 구성하면 사용자 이름과 비밀번호가 필요하지 않습니다. 귀하의 의견 중 하나에서 프록시 서버가 LAN 외부에 있으므로 인증이 필요하다고 언급했습니다. 그러나 대부분의 프록시는 소스 IP를 기반으로 하는 규칙을 지원하며, 이 경우 회사 네트워크에서 발생하는 요청만 허용하면 됩니다.
원본 프록시 자동 구성 사양은 원래 1996년 Netscape에 의해 초안이 작성되었습니다. 원본 사양은 더 이상 직접 사용할 수 없지만 The Wayback Machine's를 사용하여 계속 액세스할 수 있습니다.보관된 사본. 사양은 크게 변경되지 않았으며 여전히 원래와 거의 동일합니다. 사양이 매우 간단하고 하드 코딩된 자격 증명을 제공하지 않는다는 것을 알 수 있습니다.
이 문제를 해결하려면 다음 도구를 사용할 수 있습니다.
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 확장지금까지는 잘 작동합니다.