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

如何开发无法被网站检测的Python+Selenium Web爬虫?

如何避免Selenium爬虫被Chrome识别为机器人?

以下是几个实用的优化方向,帮你让爬虫更接近真实用户行为:

  • 禁用Selenium特征标识
    Chrome会通过navigator.webdriver等属性识别自动化工具,你可以通过JS脚本修改这些标识:

    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
    

    同时启动Chrome时添加参数,屏蔽自动化控制特征:

    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("--disable-blink-features=AutomationControlled")
    driver = webdriver.Chrome(options=options)
    
  • 模拟真实用户操作习惯

    • 不要用固定间隔的延迟,改用随机时长等待:
      import time
      import random
      time.sleep(random.uniform(1.5, 3.5))
      
    • 模拟鼠标随机移动、页面滚动,避免机械性操作:
      from selenium.webdriver.common.action_chains import ActionChains
      
      # 随机移动鼠标到页面任意位置
      body = driver.find_element(By.TAG_NAME, 'body')
      actions = ActionChains(driver)
      actions.move_to_element_with_offset(body, random.randint(0, 200), random.randint(0, 200)).perform()
      # 随机滚动页面
      driver.execute_script(f"window.scrollTo(0, {random.randint(100, 800)})")
      
  • 配置真实浏览器环境

    • 使用本地Chrome的用户配置文件启动,让爬虫复用你的真实浏览器缓存、Cookie:
      options.add_argument(r"user-data-dir=C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data")
      
    • 设置真实的User-Agent,直接复制你当前Chrome的UA值(在浏览器控制台输入navigator.userAgent获取),避免使用Selenium默认UA。
  • 控制请求频率与轮换资源

    • 不要短时间内批量请求同一页面,严格控制访问间隔;
    • 搭配代理池轮换IP,避免单一IP被高频访问触发拦截;
    • 定期清理或轮换Cookie,模拟不同用户的访问轨迹。
  • 使用针对性工具(可选)
    如果以上方法效果有限,可以试试undetected-chromedriver库,它专门针对反爬机制做了优化,能自动隐藏Selenium的各种特征;或者换用Playwright,它对浏览器的模拟更贴近真实用户,默认配置下被检测的概率更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:24:09