使用undetected-chromedriver重连coinsniper.net遭拦截,求解决建议
问题描述
使用undetected-chromedriver保存会话重连coinsniper.net网站时,被站点拦截,求解决办法。
原代码
import undetected_chromedriver as uc from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service as ChromeService from selenium_stealth import stealth import time import os path_to_dir = r'{}\User'.format(os.getcwd()) path_to_driver = os.path.abspath('chromedriver.exe') options = uc.ChromeOptions() driver = uc.Chrome(options=options, executable_path=path_to_driver, use_subprocess=True, service=ChromeService(ChromeDriverManager().install()), user_data_dir = path_to_dir) driver.execute_cdp_cmd('Network.setUserAgentOverride', { "userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'}) stealth(driver, languages=["en-US", "en"], vendor="Google Inc.", platform="Win64", webgl_vendor="Intel Inc.", renderer="Intel Iris OpenGL Engine", fix_hairline=True) driver.maximize_window() driver.get("https://coinsniper.net") time.sleep(10) driver.get("https://coinsniper.net")
解决建议
- 修复驱动初始化冲突:原代码同时指定
executable_path和service参数会导致驱动加载异常,直接移除executable_path,依赖ChromeDriverManager自动匹配本地Chrome版本的驱动。 - 正确配置用户数据目录:通过ChromeOptions添加
user-data-dir参数,而非直接在driver初始化时传递;选择固定路径存储会话数据(比如系统用户目录下的专属文件夹),确保目录有读写权限,避免程序路径变动导致会话失效。 - 移除手动User-Agent设置:undetected-chromedriver会自动生成匹配当前Chrome版本的真实User-Agent,手动设置旧版本UA反而会触发反爬检测。
- 优化stealth参数:打开本地Chrome的
chrome://gpu页面,查看真实的WebGL供应商和渲染器信息,替换代码中的通用参数,让浏览器指纹更贴近真实环境。 - 模拟自然操作:短时间重复调用
driver.get过于机械,换成driver.refresh()刷新页面;增加随机延迟(而非固定10秒),降低频率触发检测的概率。 - 保证会话完整保存:每次操作结束后调用
driver.quit()正常关闭浏览器,确保会话数据完整写入用户目录,避免强制关闭导致会话损坏。
修改后的示例代码
import undetected_chromedriver as uc from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service as ChromeService from selenium_stealth import stealth import time import os import random # 用固定路径存储会话数据,避免路径变动 path_to_dir = os.path.join(os.path.expanduser("~"), "Chrome_Coinsniper_Session") os.makedirs(path_to_dir, exist_ok=True) options = uc.ChromeOptions() options.add_argument(f"user-data-dir={path_to_dir}") options.add_argument("--start-maximized") options.add_argument("--disable-blink-features=AutomationControlled") # 仅通过Service管理驱动,避免冲突 driver = uc.Chrome( options=options, use_subprocess=True, service=ChromeService(ChromeDriverManager().install()) ) # 替换为本地Chrome真实GPU参数(从chrome://gpu获取) stealth(driver, languages=["en-US", "en"], vendor="Google Inc.", platform="Win64", webgl_vendor="NVIDIA Corporation", renderer="NVIDIA GeForce GTX 1650/PCIe/SSE2", fix_hairline=True) driver.get("https://coinsniper.net") # 随机延迟,模拟真实浏览 time.sleep(random.randint(8, 15)) # 用刷新替代重复get请求 driver.refresh() time.sleep(random.randint(5, 10)) # 正常退出,保存会话 driver.quit()
内容的提问来源于stack exchange,提问作者Nico
相关产品推荐
相关产品推荐

