selenium+webdriver被反爬识别

使用Selenium+Headless Chrome爬虫,被浏览器识别出是由webdriver控制的表现:

webdriver自动打开浏览器,在控制台中输入window.navigator.webdriver,可查看其变量值,若为true,则当前浏览器就是被webdriver打开的。这也是浏览器识别出当前浏览器是否是webdriver控制的标志。

image-20200830100649736

解决办法

使用js代码,将window.navigator.webdrive的值手动改为undefined

要在webdriver打开url之前修改,即在webdriver.get(url)前。

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
    Object.defineProperty(navigator, 'webdriver', {
       get: () => undefined
     })
   """
})
### 使用Selenium在火狐浏览器中实现虫措施 为了使Selenium能够在火狐浏览器中更好地规避虫机制,可以采取多种策略。这些方法不仅能够帮助绕过简单的检测手段,还能提高抓取数据的成功率。 #### 配置无头模式 启动Firefox时采用无头(headless)模式可以在后台执行浏览任务而不显示GUI界面,从而减少被发现的概率[^2]: ```python from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() firefox_options.headless = True # 设置为无头模式 driver = webdriver.Firefox(options=firefox_options) ``` #### 移除自动化标记 移除或修改特定的浏览器属性可以帮助隐藏使用了Selenium的事实。例如,可以通过排除`enable-automation`开关来阻止某些类型的自动行为暴露[^3]: ```python from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() firefox_options.add_argument("--disable-blink-features=AutomationControlled") firefox_options.set_preference('dom.webnotifications.enabled', False) profile = webdriver.FirefoxProfile() profile.set_preference("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)") driver = webdriver.Firefox(firefox_profile=profile, options=firefox_options) ``` #### 修改User-Agent字符串 更改请求中的User-Agent字段可模拟真实用户的访问环境,降低被识别的风险: ```python from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() # 自定义 User Agent 字符串 user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36' firefox_options.set_preference("general.useragent.override", user_agent) driver = webdriver.Firefox(options=firefox_options) ``` 通过上述配置调整,可以使基于Selenium构建的应用程序更难以被目标网站辨识出来自于自动化工具的操作,进而提升获取所需资源的可能性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值