scrapy爬虫selenium模拟无法登陆和爬取的问题

本文探讨了selenium爬虫在抓取数据时遇到的网站屏蔽问题,特别是验证码验证失败的情况。通过分析网页源码和利用mitmproxy作为中间人代理,过滤或替换JS中的特征字符串,来规避selenium的标识检测,从而实现成功登陆和爬取。文中详细介绍了mitmproxy的安装、设置及应用实例。
摘要由CSDN通过智能技术生成

使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制。它的应用,使得许多网站的反采集策略形同虚设。由于selenium不会在HTTP请求数据中留下指纹,因此无法被网站直接识别和拦截。但是selenium在运行的时候会暴露出一些预定义的Javascript变量(特征字符串),例如"window.navigator.webdriver",在非selenium环境下其值为undefined,而在selenium环境下,其值为true(如下图所示为selenium驱动下Chrome控制台打印出的值)。

除此之外,还有一些其它的标志性字符串(不同的浏览器可能会有所不同),常见的特征串如下所示:

  1. webdriver  
  2. __driver_evaluate  
  3. __webdriver_evaluate  
  4. __selenium_evaluate  
  5. __fxdriver_evaluate  
  6. __driver_unwrapped  
  7. __webdriver_unwrapped  
  8. __selenium_unwrapped  
  9. __fxdriver_unwrapped  
  10. _Selenium_IDE_Recorder  
  11. _selenium  
  12. calledSelenium  
  13. _WEBDRIVER_ELEM_CACHE  
  14. ChromeDriverw  
  15. driver-evaluate  
  16. webdriver-evaluate  
  17. selenium-evaluate  
  18. webdriverCommand  
  19. webdriver-evaluate-response  
  20. __webdriverFunc  
  21. __webdriver_script_fn  
  22. __$webdriverAsyncExecutor  
  23. __lastWatirAlert  
  24. __lastWatirConfirm  
  25. __lastWatirPrompt  
  26. $chrome_asyncScriptInfo  
  27. $cdc_asdjflasutopfhvcZLmcfl_

 

大众点评网的验证码表单页,如果是正常的浏览器操作,能够有效的通过验证,但如果是使用selenium就会被识别,即便验证码输入正确,也会被提示“请求异常,拒绝操作”,无法通过验证(如下图所示)。

 

分析页面源码,可以找到 https://static.meituan.net/bs/yoda-static/file:file/d/js/yoda.e6e7c3988817eb17.js 这个JS文件,将代码格式化后,搜索webdriver可以看到如下代码:

 可以看到它检测了"webdriver", "__driver_evaluate", "__webdriver_evalu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值