Pada crate Rust headless_chrome, setelan peluncuran browser memilih perantara HTTP. Penangan Fetch tab menyediakan akun saat Chromium memintanya:

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()?;

Fungsi pembungkus meneruskan galat, dan proxy_user serta proxy_password adalah nilai String dari konfigurasi akun aplikasi yang sudah ada. Siapkan autentikasi sebelum navigasi dapat memicu tantangan.

Argumen kedua enable_fetch mengaktifkan peristiwa autentikasi. Chromium tidak memperlakukan informasi pengguna yang tertanam di --proxy-server sebagai pertukaran kredensial ini.

Jaga browser dan tab tetap hidup selama pekerjaan. Jika intersepsi Fetch khusus juga dipasang, tentukan siapa yang melanjutkan permintaan yang dijeda dan siapa yang menjawab tantangan; permintaan jeda yang tidak diselesaikan dapat menghentikan navigasi.

Setelan autentikasi tab yang sederhana ini mengasumsikan tantangan proxy yang dimaksud. Alur kerja dengan autentikasi origin lain memerlukan pembatasan tantangan secara eksplisit alih-alih memakai ulang akun perantara untuk setiap server. Batasan SOCKS5 Chromium pada nama pengguna dan kata sandi juga terpisah dari jalur autentikasi HTTP ini.

Artikel terkait