Rust headless_chrome 크레이트에서는 브라우저 시작 설정이 HTTP 중개자를 선택합니다. 탭의 Fetch 핸들러는 Chromium이 요청할 때 계정을 제공합니다:

let proxy = "http://proxy.example:8080";
let options = headless_chrome::LaunchOptions::default_builder()
    .proxy_server(Some(proxy))
    .build()?;
let browser = headless_chrome::Browser::new(options)?;
let tab = browser.new_tab()?;

tab.enable_fetch(None, Some(true))?;
tab.authenticate(Some(proxy_user), Some(proxy_password))?;
tab.navigate_to("https://www.example.org/")?;
tab.wait_until_navigated()?;

바깥 함수는 오류를 전파하며, proxy_user와 proxy_password는 애플리케이션의 기존 계정 구성에서 가져온 String 값입니다. 탐색이 챌린지를 일으키기 전에 인증을 설정하세요.

enable_fetch의 두 번째 인수는 인증 이벤트를 활성화합니다. Chromium은 --proxy-server에 포함된 사용자 정보를 이 자격 증명 교환으로 보지 않습니다.

작업 동안 브라우저와 탭을 살려 두세요. 사용자 정의 Fetch 가로채기도 설치되어 있다면 일시 중지된 요청을 누가 계속하고 챌린지에 누가 응답하는지 정하세요. 해결되지 않은 일시 중지 요청은 탐색을 막을 수 있습니다.

이 간단한 탭 인증은 의도된 프록시 챌린지를 전제로 합니다. 관련 없는 origin 인증이 있는 워크플로는 모든 서버에 중개자 계정을 재사용하는 대신 챌린지 범위를 명시적으로 정해야 합니다. Chromium의 SOCKS5 사용자 이름 및 비밀번호 제한도 이 HTTP 인증 경로와 별개입니다.

관련 글