사용자 이름 및 비밀번호를 사용한 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를 기반으로 하는 규칙을 지원하며, 이 경우 회사 네트워크에서 발생하는 요청만 허용하면 됩니다.

원본 프록시 자동 구성 사양은 원래 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 확장지금까지는 잘 작동합니다.

관련 정보