返回顶部
首页 > 资讯 > 精选 >如何突破网站对selenium的屏蔽
  • 898
分享到

如何突破网站对selenium的屏蔽

2023-06-02 21:06:15 898人浏览 独家记忆
摘要

这篇文章主要介绍如何突破网站对selenium的屏蔽,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户js加密

这篇文章主要介绍如何突破网站对selenium的屏蔽,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

这是不是就意味着selenium真的就无法被网站屏蔽了呢?非也。selenium在运行的时候会暴露出一些预定义的javascript变量(特征字符串),例如"window.navigator.WEBdriver",在非selenium环境下其值为undefined,而在selenium环境下,其值为true(如下图所示为selenium驱动下Chrome控制台打印出的值)。

如何突破网站对selenium的屏蔽

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

  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就会被识别,即便验证码输入正确,也会被提示“请求异常,拒绝操作”,无法通过验证(如下图所示)。

如何突破网站对selenium的屏蔽

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

如何突破网站对selenium的屏蔽

 可以看到它检测了"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?

  1. coding: utf-8  

  2. # modify_response.py  

  3.   

  4. import re  

  5. from mitmproxy import ctx  

  6.     

  7. def response(flow):  

  8.   """修改应答数据 

  9.   """  

  10.   if '/js/yoda.' in flow.request.url:  

  11.       # 屏蔽selenium检测  

  12.       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_']:  

  13.           ctx.log.info('Remove "{}" from {}.'.fORMat(webdriver_key, flow.request.url))  

  14.           flow.response.text = flow.response.text.replace('"{}"'.format(webdriver_key), '"NO-SUCH-ATTR"')  

  15.       flow.response.text = flow.response.text.replace('t.webdriver', 'false')  

  16.       flow.response.text = flow.response.text.replace('ChromeDriver', '')  

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

如何突破网站对selenium的屏蔽

以上是“如何突破网站对selenium的屏蔽”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何突破网站对selenium的屏蔽

本文链接: https://lsjlt.com/news/231473.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何突破网站对selenium的屏蔽
    这篇文章主要介绍如何突破网站对selenium的屏蔽,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密...
    99+
    2023-06-02
  • 批处理如何实现网站屏蔽与解除屏蔽
    这篇文章主要为大家展示了“批处理如何实现网站屏蔽与解除屏蔽”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理如何实现网站屏蔽与解除屏蔽”这篇文章吧。@echo off&col...
    99+
    2023-06-09
  • 批处理如何利用HOSTS文件屏蔽和加速网站
    这篇文章主要为大家展示了“批处理如何利用HOSTS文件屏蔽和加速网站”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理如何利用HOSTS文件屏蔽和加速网站”这篇文章吧。代码如下:@echo o...
    99+
    2023-06-08
  • win7如何屏蔽网页弹窗广告
    这篇文章主要讲解了“win7如何屏蔽网页弹窗广告”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win7如何屏蔽网页弹窗广告”吧!打开浏览器,点击设置按钮,选择Internet选项。在窗口中选...
    99+
    2023-06-28
  • 突破传统的网站开发:ASP AJAX助力你打造智能网站
    ASP AJAX是一种基于JavaScript和XML的Web开发技术,它允许你创建具有丰富交互体验的动态Web应用程序。与传统的网站开发方式相比,ASP AJAX具有以下优势: 更快的响应速度:ASP AJAX可以实现局部页面刷新,...
    99+
    2024-02-06
    ASP AJAX 智能网站 交互体验 Web开发
  • 网站太多太杂很烦人?macz小编告诉你如何在Chrome上屏蔽任何网站
    你们是不是经常在浏览网站的时候被一些无关紧要的网站吸引注意力,浪费宝贵的时间?今天macz小编为大家详细介绍一下如何在Chrome上屏蔽任何网站的方式方法。 Chrome无疑是世界上最受欢迎的浏览器,大约9...
    99+
    2024-04-02
  • 解锁 HTML 空元素的潜力:网站优化的突破口
    HTML 空元素是一种特殊类型的 HTML 元素,它们没有任何内容,并且不需要闭合标签。在 HTML5 中,有 11 种常见的空元素,包括 <img>、<input> 和 <meta>。虽然这些元素在...
    99+
    2024-03-03
    HTML 空元素、SEO、可访问性、索引、性能
  • ASP Shell 索引:如何避免并发攻击对网站的破坏?
    ASP Shell 索引是一种常见的攻击方式,攻击者通过上传 ASP 文件并访问该文件来执行恶意代码,从而对目标网站造成损害。尤其是在高并发的情况下,攻击者可能会利用 ASP Shell 索引攻击目标网站,造成严重的破坏。本文将介绍如何避...
    99+
    2023-06-22
    shell 索引 并发
  • 如何应对国内屏蔽亚马逊云服务器?
    1. 了解国内屏蔽亚马逊云服务器的原因 在国内,亚马逊云服务器(Amazon Web Services,简称AWS)可能会受到屏蔽,这是由于政策、法规或其他原因导致的。了解屏蔽的原因对于解决问题至关重要。 2. 寻找替代方案 如果亚马逊云...
    99+
    2023-10-27
    亚马逊 屏蔽 如何应对
  • HTML 有序列表的突破:解锁网站设计的无限可能
    HTML 有序列表是一种强大的工具,可以帮助您在网站上组织和呈现数据。通过使用有序列表,您可以创建易于扫描的列表,从而提高用户体验并改善网站的可访问性。 有序列表的类型 有两种主要类型的有序列表: 数字有序列表:项目以数字顺序编号。 字...
    99+
    2024-04-02
  • 解锁 HTML 文本域标签的可能:突破网站交互界限
    HTML 文本域标签概述 HTML 文本域标签 (<textarea>) 用于在网页中创建多行文本输入字段。它类似于 <input type="text">,但它允许用户输入任意数量的行文本。文本域标签通常用于收...
    99+
    2024-03-04
    HTML 文本域、网站交互、表单提交、数据验证
  • Windows系统下使用host文件屏蔽不良网站的小技巧
      随着互联网的发展,上网已经成为了青少年的娱乐活动之一,但由于网络环境一直没有一个统一的管理,许多不良信息的网站充斥在各种页面当中,时刻影响着青少年的健康成长,为此很多家长都非常烦恼。可以说上网是一柄双刃剑,有它的优点...
    99+
    2023-06-11
    Windows系统 host文件 屏蔽不良网站 host 文件 网站 系统 技巧
  • 如何在windows下突破Rabbitmq的socket限制
       利用Rabbitmq进行各类业务系统(如SAP、OA、EHR、KMS、访客系统、AD等)的集成和接口,已有很长一段时间了,初步建立了企业服务总线(ESB)。随着新业务系统的不断接入到ESB中,在实践中也发...
    99+
    2023-05-29
    windows Rabbitmq socket限制 socket
  • 高防服务器如何识破隐蔽的CC攻击
    高防服务器识破隐蔽CC攻击的方法:1.高防服务器采用命令行法,通过在命令行下输入命令netstat -an来查看。2. 高防服务器采用批处理法,建立一个批处理文件,通过该脚本代码确定是否存在CC攻击。3. 查看系统日志,管理员可以依据日志时...
    99+
    2024-04-02
  • JavaScript HTTPS 的屏障:为你的网站建立牢不可破的防线
    : HTTPS 是安全超文本传输协议,是 HTTP 协议的升级版本,其主要目的是提供通信过程中的数据加密。HTTPS 通过使用数字证书来验证网站的身份,并对数据进行加密,从而防止数据被窃取或篡改。 JavaScript HTTPS 的屏...
    99+
    2024-02-21
    :JavaScript HTTPS 安全 网络攻击 防御
  • Win8复制网页是如何屏蔽IE剪贴板提示框
      使用IE浏览器这种IE内核的浏览器浏览网页时经常会遇到要复制网页的情况,这时候就会弹出确定允许此网页访问“剪贴板”的提示框,十分麻烦,那么能不能把这个提示框屏蔽掉呢?当然是可以的...
    99+
    2022-06-04
    剪贴板 屏蔽 提示
  • 服务器如何屏蔽美国的ip地址
    在服务器中屏蔽美国ip地址的方法:1.远程连接服务器;2.iis管理器中点击“ip地址和域限制”选项;3.点击“添加拒绝条目”,设置屏蔽美国ip段;具体步骤如下:首先,远程连接服务器,进入服务器操作界面;进入到服务器操作界面后,在服务器界面...
    99+
    2024-04-02
  • Log4j如何屏蔽某个类的日志打印
    目录Log4j屏蔽某个类的日志打印Log4j屏蔽指定日志Log4j屏蔽某个类的日志打印 项目中使用的是log4j.properties的方式配置,在项目启动后有一个任务每隔半小时会运...
    99+
    2024-04-02
  • 如何解决Godaddy域名解析被屏蔽但IP地址并没有屏蔽掉的问题
    如何解决Godaddy域名解析被屏蔽但IP地址并没有屏蔽掉的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。继前几天Google服务抽风无法访问后,我们伟大的墙,终于看上我这...
    99+
    2023-06-12
  • CMS安全评估指南:确保网站牢不可破的屏障
    一、CMS安全评估步骤 确定评估范围:首先,需要确定评估范围,包括网站的URL、子域名、应用程序和数据等。 收集信息:收集有关CMS及其配置的信息,包括版本、补丁级别和已安装的扩展。 扫描漏洞:使用漏洞扫描工具扫描网站,以识...
    99+
    2024-02-07
    CMS安全 网站安全 评估指南 常见漏洞 缓解措施
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作