Rust headless_chrome:在导航前设置 HTTP 代理凭据
启动浏览器时选择 HTTP 代理,并在导航前于 headless_chrome 标签页启用 Fetch 认证。
在 Rust 的 headless_chrome crate 中,浏览器启动设置负责选择 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 拦截,要明确由谁继续被暂停的请求、由谁应答质询;未解决的暂停请求可能卡住导航。
这个简单的标签页认证假定的就是预期的代理质询。涉及无关源认证的流程需要 显式限定质询范围,而不是对每个服务器都复用中间人账号。Chromium 在 SOCKS5 上对用户名和密码的限制同样与这条 HTTP 认证路径无关。