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

使用Proxy时Selenium出现ERR_CONNECTION_RESET错误求助

解决Selenium配置Proxy时出现net::ERR_CONNECTION_RESET的问题

针对你遇到的配置代理后触发net::ERR_CONNECTION_RESET、关闭代理则正常的情况,结合你的代码和排查情况,给出以下具体解决方案:

1. 修正代理索引的线程安全问题

你的代码中每个线程都固定使用profiles.proxies[0](函数内i=0会在每次线程启动时重置),导致多线程并发使用同一代理,极易触发目标服务器或代理服务商的并发限制,直接引发连接重置。

修改为线程安全的代理轮询逻辑:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time
import random
import profiles
import threading

# 全局计数器与锁,保证线程安全
proxy_lock = threading.Lock()
current_proxy_index = 0

def adnan():
    global current_proxy_index
    # 线程安全地获取下一个代理索引
    with proxy_lock:
        idx = current_proxy_index
        current_proxy_index = (current_proxy_index + 1) % len(profiles.proxies)
    
    proxy = profiles.proxies[idx]
    ua = profiles.useragent[idx]
    
    options = webdriver.ChromeOptions()
    options.add_argument(f'user-agent={ua}')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--no-sandbox')
    options.add_argument(f'--proxy-server={proxy}')
    #options.add_extension('chameleon.xpi')
    options.add_argument('--start-maximized')
    options.add_argument("--incognito")
    options.headless = False
    
    s = webdriver.Chrome(ChromeDriverManager().install(), options=options)
    s.implicitly_wait(5)
    try:
        s.get("https://proxs.ru/myreferer.php")
        time.sleep(100)
    except Exception as e:
        print(f"线程出错: {e}")
    finally:
        s.quit()

for e in range(5):
    threading.Thread(target=adnan).start()
    time.sleep(3)

2. 确保代理格式与协议匹配

Chrome的--proxy-server参数要求明确代理协议(如http://、socks5://),若你的profiles.proxies仅存储ip:port格式,Chrome会默认使用HTTP协议,若代理实际为SOCKS5类型则会导致连接失败。

检查并修正代理格式:

  • HTTP代理:http://192.168.1.1:8080
  • SOCKS5代理:socks5://192.168.1.1:1080

3. 排除系统级代理干扰

Windows 10的系统代理设置(如VPN残留、自动配置脚本)可能覆盖Chrome的指定代理,导致连接异常。在ChromeOptions中添加参数强制禁用系统代理:

options.add_argument('--no-proxy-server')  # 忽略系统代理,仅使用指定代理
options.add_argument('--ignore-certificate-errors')  # 规避部分代理的证书验证问题

同时手动检查Win10代理设置:

  • 打开「设置」→「网络和Internet」→「代理」,确保「自动检测设置」关闭,且无其他手动代理配置。

4. 优化Chrome自动化检测规避

部分代理服务商或目标网站会拒绝自动化工具的请求,添加以下参数规避Chrome的自动化特征:

options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

5. 验证代理在多线程场景下的可用性

单线程验证有效的代理,在多线程并发请求时可能被临时封禁。在启动Chrome前添加代理有效性测试:

import requests

def test_proxy(proxy_addr):
    proxy_dict = {
        'http': proxy_addr,
        'https': proxy_addr
    }
    try:
        response = requests.get("https://proxs.ru/myreferer.php", proxies=proxy_dict, timeout=10)
        return response.status_code == 200
    except Exception:
        return False

# 在adnan函数中使用:
if not test_proxy(proxy):
    print(f"代理 {proxy} 不可用,跳过")
    return

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:48:17