Undetected_chromedriver被检测问题求助(Python+Selenium)
解决方案
1. 优化undetected_chromedriver初始化逻辑
不要手动指定executable_path,让undetected_chromedriver自动匹配本地Chrome版本,手动指定路径可能引入版本不匹配或固定特征被识别:
# 移除executable_path参数,让uc自动处理版本匹配 driver = uc.Chrome(options=options)
2. 补充反检测Chrome选项
在现有配置基础上添加以下关键参数,进一步隐藏自动化特征:
# 核心:禁用Chrome自动化检测标志 options.add_argument("--disable-blink-features=AutomationControlled") # 避免沙箱模式特征 options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") # 随机化窗口尺寸(替代固定非默认尺寸,减少特征唯一性) import random width = random.randint(1100, 1700) height = random.randint(700, 1100) options.add_argument(f"--window-size={width},{height}") # 添加真实User-Agent(可从你的Chrome浏览器复制,或随机生成) options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36") # 禁用自动化相关开关 options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False)
3. 模拟真实用户交互行为
避免机械性操作,添加随机延迟和分步输入:
import time from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By # 打开登录页后随机等待2-5秒 time.sleep(random.uniform(2, 5)) # 分步输入用户名,模拟真实按键间隔 username_input = driver.find_element(By.ID, "username") for char in "your_username": username_input.send_keys(char) time.sleep(random.uniform(0.1, 0.3)) # 随机延迟后输入密码 time.sleep(random.uniform(1, 2)) password_input = driver.find_element(By.ID, "password") for char in "your_password": password_input.send_keys(char) time.sleep(random.uniform(0.1, 0.3)) # 随机延迟后点击登录按钮,模拟鼠标移动点击 time.sleep(random.uniform(1, 3)) login_button = driver.find_element(By.ID, "login-btn") ActionChains(driver).move_to_element(login_button).click().perform()
4. 使用真实Chrome用户配置文件
加载本地已使用过的Chrome用户数据目录,让浏览器环境完全接近真实用户:
# 替换为你的Chrome用户数据路径(注意路径格式) options.add_argument(r"user-data-dir=C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data") # 可选:指定具体用户配置文件(如果有多个用户) options.add_argument(r"profile-directory=Default")
5. 控制请求频率
短时间内频繁测试会触发网站风控,建议:
- 两次登录操作间隔至少5-10分钟(随机化间隔)
- 连续失败后不要立即重试,间隔15分钟以上
6. 升级依赖环境
Python 3.7已停止维护,建议升级到3.8+,同时更新undetected_chromedriver到最新兼容版本,修复已知的检测漏洞。
内容的提问来源于stack exchange,提问作者ShlappyTapy
相关产品推荐
相关产品推荐

