Trong crate Rust headless_chrome, cài đặt khởi chạy trình duyệt chọn một trung gian HTTP. Trình xử lý Fetch của tab cung cấp tài khoản khi Chromium yêu cầu:

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

Hàm bao ngoài truyền lỗi, còn proxy_user và proxy_password là các giá trị String lấy từ cấu hình tài khoản hiện có của ứng dụng. Hãy thiết lập xác thực trước khi điều hướng có thể kích hoạt thử thách.

Đối số thứ hai của enable_fetch bật các sự kiện xác thực. Chromium không coi thông tin người dùng nhúng trong --proxy-server là trao đổi thông tin xác thực này.

Giữ trình duyệt và tab sống trong suốt công việc. Nếu cũng cài đặt chặn Fetch tùy chỉnh, hãy xác định ai tiếp tục các yêu cầu bị tạm dừng và ai trả lời các thử thách; một yêu cầu bị tạm dừng chưa giải quyết có thể làm treo điều hướng.

Thiết lập xác thực tab đơn giản này giả định thử thách proxy dự định. Quy trình có xác thực origin không liên quan cần phạm vi thử thách rõ ràng thay vì dùng lại tài khoản trung gian cho mọi máy chủ. Giới hạn SOCKS5 của Chromium về tên người dùng và mật khẩu cũng tách biệt khỏi đường xác thực HTTP này.

Bài viết liên quan