WebDriver被识别反爬虫解决办法(Chrome正受到自动化测试软件的控制)


     我们将爬虫的爬取过程分为网络请求,文本获取和数据提取3个部分。信息校验型反爬虫主要出现在网络请求阶段,这个阶段的反爬虫理念以预防为主要目的,尽可能拒绝爬虫程序的请求。动态渲染和文本混淆则出现在文本获取及数据提取阶段,这个阶段的反爬虫理念以保护数据为主要目的,尽可能避免爬虫获取到重要数据。

在这里插入图片描述

     特征识别反爬虫是指通过客户端的特征、属性或用户行为特点来区分正常用户和爬虫程序的手段。

WebDriver识别

     爬虫程序可以借助渲染工具从动态网页中获取数据,“借助”其实是通过对应的浏览器驱动(及Webdriver)向浏览器发出指令的行为。也就是说,开发者可以根据客户端是否包含浏览器驱动这一特征来区分正常用户和爬虫程序。

在这里插入图片描述

WebDriver识别原理

     网页只要设置了检查webdriver的Javascript方法,就很容易发现爬虫。使用的方法就是Navigator对象的webdriver属性,用这个属性来判断客户端是否通过WebDriver驱动浏览器。如果监测到客户端的webdriver属性存在,则无法继续操作获取数据。selenium,Puppeteer都存在WebDriver属性。

window.navigator.webdriver
undefined

     监测结果有3种,分别是true、false和undefind。当我们使用渲染工具有webdriver属性时,navigation.webdriver的返回值时true。反之则会返回false或者undefind。

在这里插入图片描述

WebDriver识别的绕过方法

     了解了WebDriver识别的原理和返回值后,我们就能相处应对的办法。既然web Driver的识别依赖navigation.webdriver的返回值,那么我们在触发Javascript办法前将navigation.webdriver的返回值改为false或者undefind,问题就解决了。

script = 'Object.defineProperty(navigator,"webdriver",{get:() => false,});'

使用示例

from selenium.webdriver import Chrome
import time

brower = Chrome(executable_path=r'D:\python\chromedriver_win32\chromedriver.exe')
url = 'http://www.porters.vip/features/webdriver.html'
brower.get(url)
script = 'Object.defineProperty(navigator,"webdriver",{get:() => false,});'
#运行Javascript
brower.execute_script(script)
#定位按钮并点击
brower.find_element_by_css_selector('.btn.btn-primary.btn-lg').click()
#定位到文章内容元素
elements = brower.find_element_by_css_selector('#content')
time.sleep(1)
print(elements.text)
brower.close()

     值得一提的是,淘宝的登录滑块验证页面也是用到了这个方法,使用selenium套件操作滑块后会出现“哎呀,出错了,点击刷新再来一次”这样的提示。

注意

     这种修改该属性值的办法只在当前页面有效,当浏览器打开新标签或新窗口时需要重新执行改变navigator.webdriver值的JavaScript代码。

在这里插入图片描述

  • 10
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成都—大数据开发工程师—杨洋

你的打赏是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值