周一至周五 09:00 - 18:00(UTC+08:00) ©2026 NST LABS TECH LTD. 保留所有权利。
未检测到的 ChromeDriver 代理:2026 年的 4 种方法
Marcus Chen Product & Network Architect
如何在2026年使用未被检测的ChromeDriver代理
TL;DR
在Chrome启动之前必须配置未被检测到的ChromeDriver代理。 最可靠的路径是 --proxy-server,并使用IP授权或其他非交互式的HTTP、HTTPS或SOCKS端点。
未被检测到的ChromeDriver不隐藏您的IP。 其自身项目描述中指出该包修补了Selenium ChromeDriver的行为;网络路由仍然是独立的责任。
Chrome不可靠地接受 username:password@host:port 在 --proxy-server 中。 通过经过测试的CDP身份验证流程、管理的本地桥接或提供方IP授权来处理407挑战。
更改代理端点时重新启动浏览器。 在更改 ChromeOptions 后重用驱动程序不会重新路由现有的Chrome进程。
分别验证路由、页面状态和预期内容。 页面可以通过预期的代理加载,但仍可能是登录墙、同意页面或软错误。
什么是未被检测到的ChromeDriver代理?
未被检测到的ChromeDriver代理是附加到由Python undetected-chromedriver包启动的Chrome进程的代理端点。代理更改浏览器的网络路由,而该包调整所选的浏览器自动化信号。这两个功能相辅相成,但独立。
当前的 undetected-chromedriver包页面 列出了版本3.5.5,并明确警告该包不隐藏IP地址或保证结果。这个界限很重要:使用未被检测到的ChromeDriver代理并不会使自动化变得不可见,无法绕过访问控制,也不会替代访问目标的权限。
对于授权的本地化QA、公共页面监控和浏览器回归测试,来自Nstproxy Residential Prime Proxies 的稳定路由可以使网络身份与浏览器配置文件分开。当连续性很重要时,将代理、浏览器配置文件、cookie和测试账户视为一个状态会话。
未被检测到的ChromeDriver中的代理路由是如何工作的?
代理路由在Chrome启动时通过命令行参数或浏览器级身份验证处理程序工作。未被检测到的ChromeDriver将兼容的Chrome选项传递给浏览器;它不暴露单独的高级代理API。
需求 推荐机制 操作边界 无需交互登录的HTTP或HTTPS代理 --proxy-server=http://host:port在 uc.Chrome() 之前配置 SOCKS5端点 --proxy-server=socks5://host:port
用户名/密码代理 CDP身份验证处理程序或维护的本地桥接 针对确切的Chrome版本进行测试
每个任务不同的端点 针对每个端点的新驱动程序 干净地关闭每个旧进程
提供方侧的轮换网关 保持一个网关并变化其文档化的会话策略 轮换行为归属于提供方
Chromium的 代理配置文档 解释了Chrome如何将代理规则映射到URL方案。Selenium的 Chrome浏览器文档 涵盖了Chrome选项和浏览器版本一致性。确保Chrome、ChromeDriver、Selenium和Python包整体兼容。
前提条件 直接HTTP示例是在Python 3.12.13、undetected-chromedriver 3.5.5、Selenium 4.47.0和Chrome 151.0.7922.138下执行的。首先安装确切的浏览器包:
python -m venv .venv
source .venv/bin/activate
pip install undetected-chromedriver == 3.5 .5 selenium == 4.47 .0
通过秘密管理器或受保护的环境变量设置代理凭证。请勿提交完整的代理URL、打印密码或将秘密放置在截图中。使用返回路由标记或公共IP的授权目标页面,并限制页面加载和脚本超时。
通过 Nstproxy 连接未被检测的 ChromeDriver
创建一个受控的代理端点,在 Chrome 启动之前附加它,并验证生成的路由。
创建 Chrome 代理路由
详细教程:如何使用未被检测的 ChromeDriver 代理 您可以通过四种实用模式使用未被检测的 ChromeDriver 代理:直接 HTTP 端点、直接 SOCKS5 端点、凭证处理程序或受限浏览器池。从您的代理认证模型支持的最简单路由开始。
方法 1:使用 ChromeOptions 添加 HTTP 或 HTTPS 代理 当端点不需要交互式用户名/密码挑战时,请使用 --proxy-server。这包括已授权的本地测试代理和访问模型已经在 Chrome 之外处理的提供商端点。
import json
import os
import undetected_chromedriver as uc
from selenium . webdriver . common . by import By
def main ( ) :
options = uc . ChromeOptions ( )
options . add_argument ( f"--proxy-server= { os . environ [ 'PROXY_URL' ] } " )
options . add_argument ( "--headless=new" )
options . add_argument ( "--no-first-run" )
driver = uc . Chrome ( options = options , version_main = 151 , use_subprocess = False )
try :
driver . set_page_load_timeout ( 15 )
driver . get ( os . environ [ "TARGET_URL" ] )
result = json . loads ( driver . find_element ( By . ID , "result" ) . text )
assert result [ "route" ] == os . environ [ "EXPECTED_ROUTE" ]
print ( result )
finally :
driver . quit ( )
if __name__ == "__main__" :
main ( )
执行的固定装置返回 {'route': 'basic-18680', 'authenticated': True, 'target': 'http://fixture.test/items'}。路由断言证明 Chrome 通过预期端点到达了测试页面;内容断言防止成功的传输被误认为是有用的页面。
不要在单独的主机字段中放入 http://,因为 Chrome 期望在此标志中包含一个完整的代理 URI。 Python 代理配置和轮换指南 提供了更广泛的环境处理和池设计模式。
方法 2:配置 SOCKS5 代理 当您的代理端点和目标工作流需要 SOCKS5 时,请使用 socks5:// URI。浏览器仍在启动之前接收设置,因此生命周期与方法 1 相同。
import os
import undetected_chromedriver as uc
options = uc . ChromeOptions ( )
options . add_argument (
f"--proxy-server=socks5:// { os . environ [ 'PROXY_HOST' ] } : { os . environ [ 'PROXY_PORT' ] } "
)
options . add_argument ( "--headless=new" )
driver = uc . Chrome ( options = options , version_main = 151 )
try :
driver . set_page_load_timeout ( 15 )
driver . get ( os . environ [ "TARGET_URL" ] )
print ( driver . title )
finally :
driver . quit ( )
此块经过与实时 HTTP 测试相同的 ChromeOptions 路径配置验证;在生产中接受之前,请提供一个真实的授权 SOCKS5 端点。检查具有受控主机名的 DNS 行为,因为本地与远程名称解析可能会改变隐私和故障模式。
方法 3:使用 CDP 处理经过身份验证的代理 当代理响应 HTTP 407 并且直接 --proxy-server=user:pass@host:port 失败时,请使用 Chrome DevTools 协议身份验证处理程序。Chrome 故意将代理地址与身份验证交换分开。
以下高级模式使用 Undetected ChromeDriver 的文档 CDP 事件监听器。它对版本敏感,必须在使用之前针对确切的 Chrome 构建在暂存环境中进行调试;当前环境验证了事件和命令架构,但无法完成凭证浏览器运行。
import os
import undetected_chromedriver as uc
options = uc . ChromeOptions ( )
options . add_argument (
f"--proxy-server=http:// { os . environ [ 'PROXY_HOST' ] } : { os . environ [ 'PROXY_PORT' ] } "
)
driver = uc . Chrome ( options = options , enable_cdp_events = True , version_main = 151 )
def authenticate ( event ) :
params = event [ "params" ]
challenge = params . get ( "authChallenge" , { } )
response = { "response" : "Default" }
if challenge . get ( "source" ) == "Proxy" :
response = {
"response" : "ProvideCredentials" ,
"username" : os . environ [ "PROXY_USERNAME" ] ,
"password" : os . environ [ "PROXY_PASSWORD" ] ,
}
driver . execute_cdp_cmd (
"Fetch.continueWithAuth" ,
{ "requestId" : params [ "requestId" ] , "authChallengeResponse" : response } ,
)
driver . add_cdp_listener ( "Fetch.authRequired" , authenticate )
driver . execute_cdp_cmd ( "Fetch.enable" , { "handleAuthRequests" : True } )
try :
driver . set_page_load_timeout ( 15 )
driver . get ( os . environ [ "TARGET_URL" ] )
finally :
driver . execute_cdp_cmd ( "Fetch.disable" , { } )
driver . quit ( )
切勿在 Python 文件中嵌入凭证。如果 CDP 身份验证在您的平台上不稳定,请使用一个维护良好的本地转发器,该转发器在上游进行身份验证,并向 Chrome 暴露一个仅限回环的非身份验证端点。避免复制 Manifest V2 扩展代码段:当前 Chrome 扩展程序和命令行策略已经改变,因此旧的身份验证扩展示例可能会悄悄失败。
方法 4:通过重启浏览器来轮换代理 通过为每个选定的代理创建一个浏览器并在下一个路由之前关闭它来轮换端点。ChromeOptions 在进程启动时被消耗;之后更改Python对象不会重新配置现有浏览器。
import os
import undetected_chromedriver as uc
def run_one ( proxy_url , target_url ) :
options = uc . ChromeOptions ( )
options . add_argument ( f"--proxy-server= { proxy_url } " )
options . add_argument ( "--headless=new" )
driver = uc . Chrome ( options = options , version_main = 151 )
try :
driver . set_page_load_timeout ( 15 )
driver . get ( target_url )
return { "proxy" : proxy_url , "title" : driver . title }
finally :
driver . quit ( )
pool = [
os . environ [ "PROXY_URL_A" ] ,
os . environ [ "PROXY_URL_B" ] ,
]
results = [ run_one ( proxy , os . environ [ "TARGET_URL" ] ) for proxy in pool ]
print ( results )
保持池的界限,将不健康的路由放置在冷却状态,并设置有限的重试预算。不要自动重试非幂等操作,例如购买或表单提交。 网页抓取 IP 轮换指南 解释了轮换策略,而提供商侧的轮换网关可以在会话连续性不需要时避免为每个出口 IP 创建新浏览器。
如何在不信任一个信号的情况下验证代理 代理验证应独立证明路由、运输结果和页面含义。可见 IP 更改是有用的,但它并不能确定请求的内容是否正确。
在启动后立即打开一个授权的 IP 或路由检查端点。
将其返回的路由或 IP 与预期的代理会话进行比较。
拒绝浏览器错误页面、407 响应、强制门户和同意墙。
确认特定页面的标记,例如标题、稳定 ID 或架构字段。
仅记录一个非秘密的路由 ID、时间、状态类别和终端错误类别。
使用 driver.current_url、一个稳定元素和一个小的清理结果对象,而不是转储 page_source。对于重复的错误,代理服务器错误故障排除指南 可以帮助区分身份验证、超时、隧道和目标响应故障。
常见的未检测 ChromeDriver 代理错误 未检测的 ChromeDriver 代理错误通常来自于身份验证、浏览器驱动程序不匹配、DNS 或进程生命周期问题,而不是 add_argument() 调用本身。
症状 可能原因 修复 ERR_NO_SUPPORTED_PROXIES带凭据的URI或不支持的方案 仅传递方案、主机和端口;单独处理身份验证 HTTP 407 缺少或拒绝代理凭据 验证通道用户名/密码和身份验证处理程序 ERR_NAME_NOT_RESOLVED代理不活跃或DNS路径不同 首先确认受控主机名的路线 会话未创建 Chrome和驱动程序主要版本不同 同时更新设置或传递匹配的version_main 第一个路由有效,第二个无效 现有的Chrome进程保持原始代理 退出并创建新的驱动程序 页面加载但数据错误 软阻止,登录页面或不同的区域设置 添加语义页面断言
不要通过增加音量响应检测或访问控制失败。减少并发,检查条款和授权,将重复拒绝视为终端状态。
Nstproxy如何适应此工作流程 Nstproxy Residential Prime Proxies适合需要通过经过身份验证的代理端点进行控制位置和会话选择的浏览器工作流程。主要的操作挑战是在任务跨越多个页面加载时,保持浏览器配置文件、代理会话和测试状态一致。Nstproxy记录基于用户名的位置和会话参数,因此固定的浏览器路径可以根据生成的端点使用旋转或固定行为。该产品提供包和按使用计费的模型,这让团队可以根据预期流量选择模型,而不是统一推荐。Chrome身份验证仍需上述经过测试的集成路径之一;代理服务不会改变Chrome的凭据处理规则。
会话控制: 在状态持久的旅程中使用一个记录的会话标识符,并且仅在安全任务边界处使用新的标识符。
位置选择: 在仪表板中生成所需的位置,并验证观察到的结果,而不是从主机名推断地理位置。
操作适配: 审查当前的Residential Prime定价模型 ,选择与浏览器流量和重试行为相匹配的计费模型。
负责任和可靠的使用 仅将Undetected ChromeDriver用于授权测试、公共数据工作流,以及其条款允许该活动的网站。“undetected”一词是包名,而不是隐形或有权限打破控制的承诺。
保持并发足够低,以适应目标和代理服务,最小化收集的数据,仅保留任务所需。由于访问拒绝而停止,而不是尝试绕过CAPTCHA、逃避账户禁令或重复身份切换。在安全存储中保护凭据,并从日志中删除代理URL。
结论 可靠的Undetected ChromeDriver代理模式很简单:选择一个路由机制,在Chrome启动之前进行配置,验证路由,在更改端点之前关闭浏览器。直接的 --proxy-server 配置是最佳起点;有凭证和旋转路由需要明确的生命周期和身份验证处理。
体验Nstproxy —— 今天开始您的免费试用
常见问题 问:Undetected ChromeDriver支持代理吗?
是的。Undetected ChromeDriver通过 ChromeOptions 接受Chrome代理设置,包括 --proxy-server 用于Chrome支持的HTTP、HTTPS和SOCKS路由。
不可靠的跨版本工作流不应该假设 user:password@host:port 在Chrome的 --proxy-server 参数中有效。单独传递代理地址,并通过经过测试的CDP流程、维护的本地桥接或提供商支持的授权方法处理407身份验证挑战。
问:为什么代理在请求中工作,但在Chrome中失败?
Chrome和HTTP客户端有不同的代理和身份验证栈。检查代理方案、DNS路径、Chrome的407处理、TLS拦截策略,以及浏览器是否加载了代理错误页面。
问:我可以在不重启Undetected ChromeDriver的情况下更改代理吗?
不可靠地使用启动参数。使用提供方的旋转网关在一个地址后进行旋转,或关闭驱动程序并为不同的端点启动一个新的 Chrome 进程。
问:undetected-chromedriver 是否可以防止封锁?
不可以。该包更改所选的自动化信号,但不保证访问,其官方包页面声明它不会隐藏 IP 地址。
问:使用 Undetected ChromeDriver 代理是否合法?
使用代理和浏览器自动化可以是合法的,但法律性取决于授权、目标条款、数据类型、管辖权和目的。使用经过批准的目标,最小化收集,并在处理敏感或受监管的工作流程时寻求法律建议。
Marcus Chen
Aug. 20th 2026
立即访问住宅、数据中心、IPv6 与 ISP 高质量代理池。 创建免费账号并立即试用 ->