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

使用Python为Chrome 59+配置基础认证弹窗信息

解决Chrome 64+ ChromeDriver代理基础认证弹窗无法填充的问题

我之前也踩过Chrome 64+版本代理认证的坑,确实Chrome 59之后官方就移除了直接通过Driver参数传递代理认证信息的支持,老方法完全失效。结合你用EC2上Squid代理的场景,给你几个可行的解决方案:

方案一:用Chrome扩展自动处理认证弹窗

这是最可靠的通用方案,原理是通过Chrome扩展在页面加载前注入脚本,自动处理代理认证的弹窗:

  1. 先创建一个简单的Chrome扩展,包含两个文件:

    • manifest.json:
      {
        "manifest_version": 2,
        "name": "Proxy Auth AutoFill",
        "version": "1.0",
        "permissions": ["<all_urls>", "webRequest", "webRequestBlocking"],
        "background": {
          "scripts": ["background.js"]
        }
      }
      
    • background.js:
      chrome.webRequest.onAuthRequired.addListener(
        function(details) {
          return {
            authCredentials: {
              username: "你的代理用户名",
              password: "你的代理密码"
            }
          };
        },
        {urls: ["<all_urls>"]},
        ["blocking"]
      );
      
  2. 把这两个文件打包成CRX扩展(或者直接用文件夹),然后在ChromeOptions中加载这个扩展:

    // Java示例,其他语言逻辑类似
    ChromeOptions options = new ChromeOptions();
    options.addExtensions(new File("path/to/your/extension.crx"));
    // 也可以直接加载扩展文件夹
    // options.addArguments("--load-extension=path/to/extension/folder");
    WebDriver driver = new ChromeDriver(options);
    

方案二:把认证信息嵌入代理URL(注意安全风险)

Chrome 64+支持将用户名密码直接嵌入到代理地址中,格式如下:

http://用户名:密码@代理IP:端口

然后在ChromeOptions中配置代理:

ChromeOptions options = new ChromeOptions();
Proxy proxy = new Proxy();
proxy.setHttpProxy("http://user:pass@ec2-squid-ip:3128");
proxy.setSslProxy("http://user:pass@ec2-squid-ip:3128");
options.setCapability("proxy", proxy);
WebDriver driver = new ChromeDriver(options);

⚠️ 注意:这种方法安全风险很高,用户名和密码会明文出现在日志、进程参数中,不建议在生产环境使用。

方案三:给EC2节点配置Squid IP白名单(最安全的方案)

既然你的Squid代理和ChromeDriver都运行在EC2环境(或固定IP机器),完全可以通过Squid配置跳过该IP的认证:

  1. 编辑Squid的配置文件(通常是/etc/squid/squid.conf):

    # 添加ACL规则,允许你的EC2节点IP访问
    acl ec2_node src 你的EC2节点IP/32
    # 允许该ACL跳过认证
    http_access allow ec2_node
    # 保持原有的认证规则在后面
    http_access allow authenticated
    http_access deny all
    
  2. 重启Squid服务:

    sudo systemctl restart squid
    

这样你的ChromeDriver访问代理时就不会弹出认证窗口了,而且完全没有安全风险,是最适合你场景的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:47:48