헤드리스 브라우저 프록시 인증은 VPN 경로가 아닙니다
VPN은 브라우저를 프록시로 라우팅합니다. 프록시의 407에 응답할 수 없습니다. 선택, 챌린지, 해당 작업의 실제 네트워크 경로를 별도로 확인하세요.
VPN은 브라우저의 트래픽을 프록시 서버로 전달하면서도 브라우저가 해당 프록시를 사용할 수 없도록 할 수 있습니다, 경로와 자격 증명은 다르기 때문입니다. 헤드리스 자동화는 창이 없고 알림 메시지가 없기 때문에 격차를 확인하기가 더 어렵습니다. 실패는 일반적으로 중단 또는 일반적인 탐색 오류로 나타나며 첫 번째 본능은 터널을 비난하는 것입니다. 아래 체크리스트는 인증된 프록시를 통한 헤드리스 요청이 성공하기 전에 충족되어야 하는 네 가지 사항을 구분합니다.
두 개의 대화, 두 개의 자격 증명
두 가지 대화가 이루어지며 두 대화는 서로 다른 당사자에 속합니다. 브라우저는 먼저 자격 증명을 요구할 수 있는 프록시 수신기에 연결합니다, 그런 다음 프록시는 대상에 대한 계속 연결을 만들거나 허용합니다. VPN은 브라우저에 도전하는 엔드포인트가 되지 않고도 첫 번째 구간을 수행할 수 있으며 두 번째 구간에 대해서는 아무 말도 하지 않습니다.
HTTP 407 클라이언트가 프록시 요청에 대해 인증해야 한다는 신호이며, Proxy-Authenticate 에 담겨 전달되고 응답은 Proxy-Authorization 에서 예상됩니다. 이는 대상 웹사이트의 로그인이 아니며, 두 가지를 혼동하는 것이 여기서 가장 일반적인 혼란의 원인입니다.
따라서 네 가지 확인 사항은 브라우저가 실제로 선택한 프록시, 407에 응답하는 사람, 브라우저 프로세스가 있는 네트워크, 사람 없이 자격 증명이 전달되는 방법입니다. 각각은 독립적으로 실패할 수 있으며 각 실패는 외부에서 유사하게 보입니다. 나중에 확인하면 이전 확인을 보상할 수 없으므로 순서대로 작업하십시오. 선택되지 않은 프록시는 인증할 수 없으며 랩톱에만 존재하는 자격 증명은 컨테이너에 도달할 수 없습니다.
1 확인: 실제로 선택된 프록시
프록시 설정을 무시하는 브라우저는 전혀 도전에 도달하지 않기 때문에 선택부터 시작하십시오. Chrome에서 플래그는 --proxy-server=proxy.example:3128 이며 제외를 위한 --proxy-bypass-list 이며 Selenium은 브라우저 옵션을 통해 동일한 것을 노출합니다. PAC 파일은 자체 오류 모드가 있는 다른 메커니즘입니다.
그런 다음 셸이 아닌 실행 중인 브라우저 환경 내부에서 확인하세요. 동일한 프록시를 사용하는 독립 프로브는 curl -x http://proxy.example:3128 -v https://example.com 이며 자세한 출력에는 CONNECT 성공 여부, Proxy-Authenticate가 반환된 내용, 407가 반환되었는지 여부가 표시됩니다. 컬이 407를 받고 브라우저가 중단되면 네트워크가 아니라 자격 증명 경로에 문제가 있는 것입니다. 컬이 성공하고 브라우저가 실패한다면 브라우저는 사용자가 생각하는 프록시를 사용하고 있지 않은 것입니다.
2 확인: 407에 응답하는 사람
407에는 소유자가 있으며 이름을 지정하면 수정 사항이 어디로 갈지 결정됩니다. 문제가 회사 프록시에서 발생하는 경우 브라우저가 무인으로 표시할 수 있는 자격 증명이 해결 방법입니다. 첫 번째 프록시가 전달되는 업스트림 프록시에서 오는 경우 자격 증명은 해당 두 번째 홉에 속하며 첫 번째 프록시는 변경되지 않은 채 챌린지를 중계할 수 있습니다. Proxy-Authenticate 헤더에서 인증 범위와 호스트를 읽어보세요, 요청하는 상자의 이름이 지정되기 때문입니다.
무엇을 기록하든 그 차이를 유지하세요. 프록시 질문, 계속 연결 거부, 웹 사이트 로그인 및 VPN 전송 시간 초과는 네명의 소유자가 있는 네가지 실패이며 하나의 일반 오류 메시지는 필요한 정보를 파괴합니다.
3 확인: 자격 증명 경로
자격 증명 자체는 대부분의 무인 설정이 중단되는 부분입니다. Selenium은 프록시 호스트 및 포트를 설정할 수 있지만 HTTP 프록시 인증은 해당 구성의 이식 가능한 부분이 아니며 프록시 URL의 자격 증명은 브라우저 및 드라이버 버전 전체에서 신뢰할 수 있는 메커니즘이 아닙니다. 지원되는 옵션은 실제 스택 문서입니다, 즉, 챌린지에 응답하는 브라우저 확장, 헤더를 추가하고 작업에서만 연결할 수 있는 로컬 전달 프록시 또는 다른 방법으로 워크로드를 인증하는 프록시입니다. 의도적으로 하나를 선택하고 실행할 정확한 브라우저, 드라이버 및 Selenium 버전과 비교하여 확인하십시오.
자격증명을 유출하는 장소에 보관하세요. 명령줄은 프로세스 목록에 표시되고, 스크린샷은 테스트 보고서에 표시되고, 브라우저 추적 및 HAR 파일은 헤더를 캡처하며, 커밋된 테스트 구성은 영구적입니다. 작업의 비밀 전달 메커니즘과 해당 수정 규칙을 사용하고 프록시 계정의 범위를 필요한 대상이나 역할로 지정하세요.
조직에서 필수 프록시 대신 허용된 직접 VPN 경로를 제공하는 경우 두 디자인을 명시적으로 비교하십시오. 정책을 회피하기 위해 조용히 프록시를 비활성화하거나 다른 클라이언트의 인증을 모방하지 마십시오.
4 확인: 브라우저 프로세스의 자체 네트워크 컨텍스트
이것은 사람들이 건너뛰는 수표입니다. 작업자, 컨테이너 또는 원격 Selenium Grid 노드가 시작한 브라우저는 해당 환경의 네트워킹을 사용하므로 랩톱의 VPN 연결과 셸의 프록시 변수는 브라우저가 절대 건드릴 수 없는 경로를 설명합니다.
실패한 작업에 대한 다섯가지 사실(브라우저 호스트, 구성된 프록시, 초기 확인자 경로, 선택한 경로 및 인증 소유자)을 기록합니다. 그런 다음 일반 대상 TLS 확인 및 애플리케이션 승인을 그대로 유지한 채 정확한 컨텍스트에서 무해한 승인 요청을 하나 수행합니다. 성공적으로 시작되는 헤드리스 브라우저는 프록시 허용이나 VPN 적용 범위를 증명하지 않으며, 빈 페이지의 스크린샷은 전혀 아무것도 증명하지 않습니다. 전체 체인을 통해 200를 반환하는 요청은 중요한 유일한 증거입니다.
완성된 워크플로에는 세트로 확인할 가치가 있는 세 가지 속성이 있습니다. 브라우저 호스트에서 프록시까지 지원되는 경로, 프록시와 대상의 이름을 지정하는 명시적인 중개 정책, 보이지 않는 프롬프트에 응답하는 운영자에 의존하지 않는 자격 증명 수명 주기가 있습니다. 세 가지 중 하나라도 사람에 따라 달라지는 경우 종료 코드에 관계없이 해당 작업은 아직 무인 상태가 아닙니다. 다음 사람이 파이프라인을 상속받기 전에 다섯 가지 사실을 적어 두십시오.