You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BrowserMobProxyServer实现带认证的远程代理授权?

解决带账号密码认证的远程代理配置问题

嘿,你的思路方向是对的,但漏了关键的一步——告诉BrowserMobProxy要把流量转发到那个需要认证的远程代理上!我帮你梳理下正确的配置步骤和细节:

  • 指定上游远程代理
    你当前的代码只配置了自动认证规则,但BrowserMobProxy并不知道要把请求转发到哪里。必须添加一行代码设置上游代理链,让它把流量导向你目标的远程代理:

    bmp.setProxyChains(Arrays.asList("http://111.111.111.111:8000"));
    

    这是让自动认证生效的前提,没有这一步,你的认证配置根本不会被触发。

  • 确认认证类型匹配
    你使用AuthType.BASIC是正确的,但要确保你的远程代理确实采用的是HTTP Basic认证。如果是NTLM等其他认证方式,需要对应调整AuthType枚举值。

  • 完整可运行的代码示例
    把所有必要步骤整合起来,完整的配置代码如下:

    import net.lightbody.bmp.BrowserMobProxy;
    import net.lightbody.bmp.BrowserMobProxyServer;
    import net.lightbody.bmp.client.ClientUtil;
    import net.lightbody.bmp.proxy.auth.AuthType;
    import org.openqa.selenium.Proxy;
    import java.util.Arrays;
    
    public class AuthenticatedProxySetup {
        public static void main(String[] args) {
            // 启动BrowserMob本地代理
            BrowserMobProxy bmp = new BrowserMobProxyServer();
            bmp.start();
    
            // 设置要转发的上游远程代理
            bmp.setProxyChains(Arrays.asList("http://111.111.111.111:8000"));
            // 配置自动Basic认证,无需手动输入账号密码
            bmp.autoAuthorization("111.111.111.111:8000", "l0gVal", "pasVal", AuthType.BASIC);
    
            // 生成Selenium可识别的代理配置
            Proxy seleniumProxy = ClientUtil.createSeleniumProxy(bmp);
    
            // 后续把代理配置到你的WebDriver中(以Chrome为例)
            // ChromeOptions options = new ChromeOptions();
            // options.setProxy(seleniumProxy);
            // WebDriver driver = new ChromeDriver(options);
        }
    }
    
  • 常见问题排查

    • 如果仍然弹出认证窗口,先核对远程代理的IP、端口、账号密码是否完全正确
    • 确保BrowserMobProxy和Selenium的版本兼容,避免因依赖冲突导致功能异常
    • 若远程代理使用HTTPS,可能需要添加bmp.setTrustAllServers(true);跳过SSL证书验证,否则请求可能被拦截

内容的提问来源于stack exchange,提问作者Pavel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:40:06