如何突破网站对selenium的屏蔽

news/2024/5/15 3:41:33/文章来源:https://blog.csdn.net/qq_26877377/article/details/83307208

使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制。它的应用,使得许多网站的反采集策略形同虚设。由于selenium不会在HTTP请求数据中留下指纹,因此无法被网站直接识别和拦截。

这是不是就意味着selenium真的就无法被网站屏蔽了呢?非也。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_  

了解了这个特点之后,就可以在浏览器客户端JS中通过检测这些特征串来判断当前是否使用了selenium,并将检测结果附加到后续请求之中,这样服务端就能识别并拦截后续的请求。

下面讲一个具体的例子。

鲲之鹏的技术人员近期就发现了一个能够有效检测并屏蔽selenium的网站应用:大众点评网的验证码表单页,如果是正常的浏览器操作,能够有效的通过验证,但如果是使用selenium就会被识别,即便验证码输入正确,也会被提示“请求异常,拒绝操作”,无法通过验证(如下图所示)。

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

 可以看到它检测了"webdriver", "__driver_evaluate", "__webdriver_evaluate"等等这些selenium的特征串。提交验证码的时候抓包可以看到一个_token参数(很长),selenium检测结果应该就包含在该参数里,服务端借以判断“请求异常,拒绝操作”。

现在才进入正题,如何突破网站的这种屏蔽呢?

我们已经知道了屏蔽的原理,只要我们能够隐藏这些特征串就可以了。但是还不能直接删除这些属性,因为这样可能会导致selenium不能正常工作了。我们采用曲线救国的方法,使用中间人代理,比如fidder, proxy2.py或者mitmproxy,将JS文件(本例是yoda.*.js这个文件)中的特征字符串给过滤掉(或者替换掉,比如替换成根本不存在的特征串),让它无法正常工作,从而达到让客户端脚本检测不到selenium的效果。

下面我们验证下这个思路。这里我们使用mitmproxy实现中间人代理),对JS文件(本例是yoda.*.js这个文件)内容进行过滤。启动mitmproxy代理并加载response处理脚本:

  1. mitmdump.exe -S modify_response.py  

其中modify_response.py脚本如下所示:

view plaincopy to clipboardprint?

# coding:utf-8
# modify_response.pyimport re
from mitmproxy import ctxdef response(flow):"""修改应答数据"""if '/js/yoda.' in flow.request.url:# 屏蔽selenium检测for webdriver_key in ['webdriver', '__driver_evaluate', '__webdriver_evaluate', '__selenium_evaluate', '__fxdriver_evaluate', '__driver_unwrapped', '__webdriver_unwrapped', '__selenium_unwrapped', '__fxdriver_unwrapped', '_Selenium_IDE_Recorder', '_selenium', 'calledSelenium', '_WEBDRIVER_ELEM_CACHE', 'ChromeDriverw', 'driver-evaluate', 'webdriver-evaluate', 'selenium-evaluate', 'webdriverCommand', 'webdriver-evaluate-response', '__webdriverFunc', '__webdriver_script_fn', '__$webdriverAsyncExecutor', '__lastWatirAlert', '__lastWatirConfirm', '__lastWatirPrompt', '$chrome_asyncScriptInfo', '$cdc_asdjflasutopfhvcZLmcfl_']:ctx.log.info('Remove"{}"from{}.'.format(webdriver_key,flow.request.url))flow.response.text=flow.response.text.replace('"{}"'.format(webdriver_key),'"NO-SUCH-ATTR"')flow.response.text=flow.response.text.replace('t.webdriver','false')flow.response.text=flow.response.text.replace('ChromeDriver','')

在selnium中使用该代理(mitmproxy默认监听127.0.0.1:8080)访问目标网站,mitmproxy将过滤JS中的特征符串,如下图所示:

经多次测试,该方法可以有效的绕过大众点评的selenium检测,成功提交大众点评网的验证码表单。

转载自:http://www.site-digger.com/html/articles/20180821/653.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_844951.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费图床网站推荐

免费图床网站推荐 聚合图床-推荐使用 官网地址:https://www.superbed.cn 简介:将图片分发到多处备份,借助其本身的CDN加速功能,节省服务器流量,并且不用担心图片被删除,即便其中某几个图床上的图片被删除…

新手上路--分享20个无版权的高清图库素材网站

今天这组网站比较有特色,有专门分享美食图片的,有专门分享复古图片的,各领风骚,质量都是一顶一的棒。下面就是20个无版权的高清无码图库站,记得收藏啊。Compfight Compfight 是一个图片搜索引擎,帮你快速找…

12佳精美的国外 Flash 网站模板下载(附源文件)

本文收集了12佳精美的国外Flash网站模板,附带源文件下载。Flash网站页面美观,互动性强,可以声形并茂,实现普通的HTML网站不能制造出的质感和动作,特别是动态的视觉特果,能给人以震撼视听的效应。下面这些免…

JiaThis社区分享按钮的使用,提升网站访问流量

JiaThis社区分享按钮的使用&#xff0c;提升网站访问流量 分享按钮样式&#xff1a; 在你页面上所需要的位置加上代码&#xff1a; <!-- JiaThis Button BEGIN --> <span class"jiathis_style"><span class"jiathis_txt">分享到&#…

ckks方案优化最好的_百度SEO网站整体优化方案 - 蜘蛛池博客

原出处&#xff1a;蜘蛛池博客原文链接&#xff1a;百度SEO网站整体优化方案 - 蜘蛛池博客正常情况下单独优化网站的某一个点无法让网站发挥出最大的seo效果&#xff0c;通过对网站进行系统化诊断&#xff0c;以详尽的实用的网站seo整体优化方案来指导我们对网站进行优化&#…

Flink实战之网站日志ETL案例【含代码】

问题导读1.怎样对字段进行大区转换&#xff1f;2.怎样拆分打平大JSON?3.怎样把不同类型的日志数据分别进行存储&#xff1f;应用场景&#xff1a;数据清洗【实时ETL】数据报表1、数据清洗【实时ETL】1.1、需求分析针对算法产生的日志数据进行清洗拆分算法产生的日志数据是嵌套…

【python爬虫】实现爬虫包含动态页面的“南京市公共资源交易中心”“南京公共采购信息网”等网站的爬虫,并且保存本地的“招标信息汇总.csv”

一、实现爬虫包含动态页面的“南京市公共资源交易中心”“南京公共采购信息网”等网站的爬虫&#xff0c;并且保存本地的“招标信息汇总.csv”。 效果展示&#xff1a; &#xff08;1&#xff09;界面&#xff1a; 打包成了exe文件&#xff0c;点击即可使用&#xff01;&#…

Python实现Office自动化办公(实现Python对word基本操作、对excel基本操作、在word中插入表格、word中插入网站爬虫取图)

Python实现Office办公自动化&#xff0c;以商务流程为例一、 Pycharm 2018&#xff08;Mac版&#xff09;的下载二、Welcome to PyCharm三、使用DocxTemplate功能模块&#xff0c;实现python对Office Word文档进行基本操作&#xff0c;批量修改模板。四、实现Python对Office Ex…

jupyter网站的使用以及常见linux下的简单的命令

python下安装jupyter 常识&#xff1a;linux下查看计算机的ip代码是&#xff1a;ifconfig&#xff1b;ping IP; 用户名查看&#xff1a;uname; 文件传输&#xff1a;sftp 用户名对方 IP; SSH链接计算机的命令&#xff1a;ssh yuan对方IP&#xff0c;接下来再输入对方计…

网站服务器绑定多个ip,一台服务器绑定多个ip

一台服务器绑定多个ip 内容精选换一换虚拟IP(Virtual IP Address&#xff0c;简称VIP)是一个未分配给真实弹性云服务器网卡的IP地址。弹性云服务器除了拥有私有IP地址外&#xff0c;还可以拥有虚拟IP地址&#xff0c;用户可以通过其中任意一个IP(私有IP/虚拟IP)访问此弹性云服务…

服务器网站卡住不动,网站打不开或网页只打开一半卡住不动?是dns的问题

当你打开电脑准备上一些网站浏览下网页、查查资料时&#xff0c;却遇到网站打不开或者页面只打开一半的时候便卡在那里不动的情况&#xff1f;并且浏览器一直显示页面在加载&#xff0c;那个刷新图标也一直在旋转。这会是什么原因呢&#xff1f;我想有经验的用户一定知道这很可…

快盘做网站服务器,快盘云服务器地址

快盘云服务器地址 内容精选换一换为了避免不必要的费用产生&#xff0c;完成本示例体验后&#xff0c;可释放以下资源。资源释放后无法恢复&#xff0c;请谨慎操作。项目是使用DevCloud各服务的基础&#xff0c;删除项目可将该项目中所有数据(包括工作项、文档、代码仓库、软件…

mysql8.0登录不上去怎么回事_网站建设中百度快照劫持是什么?劫持百度快照是怎么回事?...

网站建设中百度快照劫持是什么&#xff1f;劫持百度快照是怎么回事&#xff1f;SEO行业中有两种常见的优化技术&#xff1a;一种是白帽SEO&#xff0c;第二种是黑帽SEO&#xff0c;这里所说的黑帽实际上是利用作弊手段或以牺牲他人为代价来提高自己的网站排名和访问量。劫持百度…

wordpress php缓存,wordpress使用memcached缓存来加速网站

wordpress使用memcached缓存来加速网站实测效果很好&#xff0c;网站速度比较慢的可以尝试下。启用memcached缓存之前&#xff0c;首先在服务器安装memcached&#xff0c;并且在网站所使用的PHP里安装memcached扩展。如何在服务器安装memcached应该不用多说了吧宝塔上点一下就安…

wetool个人版_免费版wetool管理工具-网站

免费版wetool管理工具-网站 加群好友主动或被动添加群成员&#xff0c;个号&社群双保险&#xff0c;有效防止用户流失 wetool企业版(管理软件)是一款可以对进行管理的管理工具,下载使用这款wetool管理软件可以让您对运营或者好友,功能管理更加方便,马上下载wetool吧。 扫码…

网站服务器与客户端通信所使用的协议,服务器如何与客户端通信协议

服务器如何与客户端通信协议 内容精选换一换通过文件传输客户端登录云堡垒机纳管资源&#xff0c;在不改变用户原来使用客户端习惯的前提下&#xff0c;对授权云主机资源进行远程文件传输管理。用户在主机上执行的所有操作&#xff0c;被云堡垒机记录并生成审计数据。本小节主要…

从0开始Go语言,用Golang搭建网站-记录

最简单的web服务 package mainimport ("fmt""net/http" )func myWeb(w http.ResponseWriter,r *http.Request){fmt.Fprintf(w,"这是一个开始") }func main(){http.HandleFunc("/",myWeb)fmt.Println("服务器即将开启&#xff0c…

ie8支持php吗,网站不被IE8兼容的解决办法

IE8出来以后造成很多网站出现不兼容的现象。在IE8中特别是flash常常出现错误显示不全的现象。下面我给大家介绍两种非常简单的方法来解决这个IE8不兼容的问题。只需要添加几行代码就行非常的方便。工具/原料• 程序代码&#xff1a;• 空间支持iis的情况下就直接加在iis里面方法…

php数据库自动引蜘蛛,SEO之小旋风万能站群池X5.1去限制版,引蜘蛛提高排名,免授权永久使用...

源码介绍一、系统需求基本需求&#xff1a;php 伪静态(必须)无需数据库&#xff0c;简单安装即可使用配置&#xff1a;系统: windows/linuxweb服务器: apachephp&#xff1a;PHP: 5.2 – 7.2注&#xff1a;php需要支持zlib库和iconv库(一般默认是安装的&#xff0c;可用小旋风…

为什么微软的网站访问速度都这么慢?

微软这家企业大家还是挺熟悉的&#xff0c;微软自己研发的Windows系统很多人都在使用&#xff0c;微软除了操作系统还自己研发了浏览器&#xff0c;但是国内的小伙伴在使用微软网站的时候访问速度都比较慢&#xff0c;这是什么原因呢&#xff1f; 微软的的有些服务器在国外有些…