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

如何隐藏使用Python结合Chrome进行网页爬取的行为?

规避Chrome自动化检测的爬取优化方案

针对目标网站的自动化检测问题,可通过配置ChromeOptions隐藏爬虫特征,同时调整操作逻辑模拟真实用户行为,具体方案如下:

核心Chrome配置优化

通过以下配置修改ChromeDriver启动参数,消除自动化识别特征:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import time
import random

# 配置ChromeOptions
options = webdriver.ChromeOptions()

# 关键:禁用自动化控制检测,让navigator.webdriver返回undefined
options.add_argument('--disable-blink-features=AutomationControlled')
# 关闭ChromeDriver专属的自动化扩展和开关
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# 启用无痕模式,减少缓存和Cookie痕迹
options.add_argument('--incognito')
# 禁用扩展与插件,避免暴露自动化行为
options.add_argument('--disable-extensions')
options.add_argument('--disable-plugins')
# 设置真实浏览器的User-Agent(可替换为你当前Chrome的UA值)
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36')
# 可选:禁用图片加载,提升爬取速度的同时减少特征
options.add_argument('--blink-settings=imagesEnabled=false')

整合原有爬取逻辑并优化操作

在原有代码基础上,添加随机等待模拟人类操作节奏,避免快速触发检测:

# 初始化Driver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

driver.get('https://fcainfoweb.nic.in/reports/report_menu_web.aspx')
driver.maximize_window()

# 模拟人类操作的随机间隔
time.sleep(random.uniform(1.2, 2.5))

# 点击零售价格按钮
priceretail_button = driver.find_element(By.ID, 'ctl00_MainContent_Rbl_Rpt_type_0')
priceretail_button.click()

time.sleep(random.uniform(0.8, 1.5))

# 选择下拉菜单
dropdown = driver.find_element(By.ID, 'ctl00_MainContent_Ddl_Rpt_Option0')
select = Select(dropdown)
select.select_by_value('Daily Prices')

time.sleep(random.uniform(0.6, 1.2))

# 输入日期:分字符输入,模拟真实用户的打字节奏
date_input = driver.find_element(By.ID, 'ctl00_MainContent_Txt_FrmDate')
date_input.click()
date_input.clear()
for char in '01/08/23':
    date_input.send_keys(char)
    time.sleep(random.uniform(0.05, 0.15))

# 后续操作保持相同的随机间隔逻辑

额外注意事项

  • 避免短时间内重复请求同一页面,可设置范围更大的随机等待时间
  • 若仍被检测,可尝试更换代理IP,或确保Chrome版本与ChromeDriver版本严格匹配
  • 不要固定操作路径和间隔,适当调整点击、输入的顺序和停顿时长

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:14:51