selenium工作原理和反爬分析

这篇具有很好参考价值的文章主要介绍了selenium工作原理和反爬分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 Selenium

Selenium是最广泛使用的开源Web UI(用户界面)自动化测试套件之一,支持并行测试执行。Selenium通过使用特定于每种语言的驱动程序支持各种编程语言。Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby。Selenium支持的浏览器包括Internet Explorer,Mozilla Firefox,Google Chrome和Safari。

二、 Selenium WebDriver

WebDriver是由Selenium主持的W3C的一个标准。利用浏览器原生的API来与浏览器进行交互。使用了Client-Server的模式,还实现了一个基于HTTP的服务,对selenium提供了一套API。不同了浏览器的厂商提供自己对应的webdriver,Chrome的Chromedriver,Firefox就有专门的FirefoxDriver等,但是对外提供的API是一致的。Webdriver可以通过浏览器原生的API,对浏览器进行各种操作,由于是厂商自己提供的,稳定性、可靠性和安全性都是有保障的。

三、浏览器

常见的浏览器IE、Microsoft Edge、Chrome/Chromium、Firefox、Safari等,selenium都支持。Chrome和Chromium对比:

Chromium Chrome
开源项目 不是开源项目
开发版,更新速度快,会添加新功能,性能稍低 是正式版,更新速度慢,比较稳定,性能高
没有自动更新 联网可以检测更新

四、Selenium工作原理

selenium工作原理和反爬分析,Python,爬虫,selenium
各个浏览器厂商根据WebDriver协议实现各自浏览器的webdriver,webdriver是可以向selenium客户端提供统一http接口的,常见的开发语言都可以实现selenium客户端Python、Java、C#等。
Webdriver协议接口 https://www.w3.org/TR/webdriver1/#list-of-endpoints
以Python selenium为例,实现了相关的接口协议
selenium工作原理和反爬分析,Python,爬虫,selenium

可以看出selenium支持多种浏览器。
selenium工作原理和反爬分析,Python,爬虫,selenium
调用Chrome浏览器时,selenium初始化过程中先,将chromedriver作为参数初始化Server类,并且执行start方法。
selenium工作原理和反爬分析,Python,爬虫,selenium

selenium工作原理和反爬分析,Python,爬虫,selenium
进到start方法中可以看到,执行了一个CMD的命令,就是在启动chromedriver.exe服务。
selenium工作原理和反爬分析,Python,爬虫,selenium

在初始化Server过程中起到了给chromedriver指定了一个空闲的端口号。
selenium工作原理和反爬分析,Python,爬虫,selenium
selenium工作原理和反爬分析,Python,爬虫,selenium
可以看到后台进程chromedriver进程并且监听51650端口
selenium工作原理和反爬分析,Python,爬虫,selenium
Selenium 发送http请求给webdriver,启动浏览器(有些网站反爬策略,会监控是否是webdriver驱动的浏览器
selenium工作原理和反爬分析,Python,爬虫,selenium
当打开一个网页是调用get方法,其实是给webdriver发送对应的http请求
selenium工作原理和反爬分析,Python,爬虫,selenium

五、反爬检测

1、 检测浏览器指纹

检测网站 https://bot.sannysoft.com/,左边是selenium启动的chromium,右边是手动启动。
selenium工作原理和反爬分析,Python,爬虫,selenium
selenium工作原理和反爬分析,Python,爬虫,selenium

2、 浏览器启动参数

查看命令 wmic process where caption=“chrome.exe” get caption,commandline /value
Selenium通过webdriver启动浏览器参数
selenium工作原理和反爬分析,Python,爬虫,selenium
手动启动浏览器参数
selenium工作原理和反爬分析,Python,爬虫,selenium

3、检测浏览器驱动

如果使用webdriver启动的浏览器,会被检测window.navigator.webdriver
selenium工作原理和反爬分析,Python,爬虫,selenium

4、 检测webdriver特征

Webdriver源码:
selenium工作原理和反爬分析,Python,爬虫,selenium
检测结果淘宝滑动验证失败:
selenium工作原理和反爬分析,Python,爬虫,selenium
通过js可以看出对webdriver的特征检测等
selenium工作原理和反爬分析,Python,爬虫,selenium

六、优化方案

1、 给webdriver添加日志选项,方便出问题时定位分析。
selenium工作原理和反爬分析,Python,爬虫,selenium
2、 使用undetected_chromedriver隐藏特殊标识
1)、打开浏览器的时,注入js修改webdriver属性值。

selenium工作原理和反爬分析,Python,爬虫,selenium
3、 修改webdriver二进制文件中的特征值
selenium工作原理和反爬分析,Python,爬虫,selenium
4、 先启动浏览器,然后再使用webdriver连接控制。

七、扩展(Chrome DevTools Protocol)

谷歌浏览器开发协议,Chrome DevTools 就是一个 Web 服务工具,它通过使用 Chrome DevTools Protocol 与后端进行交互。浏览器启动时加上参数 --remote-debugging-port={port}就可以通过发送http和websocket请求直接控制浏览器。
启动浏览器chrome.exe --remote-debugging-port=9255
发送请求查看浏览器信息,包含websocket连接url。

selenium工作原理和反爬分析,Python,爬虫,selenium
新建浏览器标签页,其中页包含了新标签页的websocket连接url。
selenium工作原理和反爬分析,Python,爬虫,selenium
Cdp开源信息 https://github.com/ChromeDevTools/awesome-chrome-devtools 支持的语言和第三方库。
selenium工作原理和反爬分析,Python,爬虫,selenium
Python的第三方库文章来源地址https://www.toymoban.com/news/detail-787989.html

  1. Pychrome调用简单,但是版本较老,很久没有维护,(网捕手也集成这个库)
  2. Pyppeteer是用python改写官方提供的js代码,支持异步,使用广泛容易被反爬策略识别。

到了这里,关于selenium工作原理和反爬分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫——scrapy_工作原理

    引擎向spiders要url 引擎把将要爬取的url给调度器 调度器会将url生成的请求对象放入到指定的队列中 从队列中出队一个请求 引擎将请求交给下载器进行处理 下载器发送请求获取互联网数据 下载器将数据返回给引擎 引擎将数据再次给到spiders spiders通过xpath解析该数据,得到数据

    2024年02月12日
    浏览(47)
  • 【爬虫】7.3. CSS位置偏移反爬案例分析与实战

    上一节学习了Selenium这个自动化测试工具,但这个工具不是万能的,不容易爬取的数据依然存在,例如网页利用CSS控制文字的偏移位置,或者通过一些特殊的方式隐藏关键信息,这都会对数据爬取造成干扰。可以看这一部分代码: 以上是这一段代码的部分输出结果,可以看出

    2024年02月09日
    浏览(36)
  • python基础爬虫&反爬破解

    简单来说:代替人去模拟浏览器进行网页操作。 爬虫是一种自动地获取网页数据并存储到本地的程序。它的主要作用是获取网站上的数据,这些数据可以用于分析、研究、开发等多种目的。爬虫可以帮助我们获取网站上的数据,而不需要人工浏览和抓取。爬虫的分类主要有通

    2024年02月09日
    浏览(44)
  • 【Python爬虫与数据分析】爬虫selenium工具

    目录 一、selenium工具安装 二、selenium打开浏览器测试 三、无头浏览器 四、元素定位 五、页面滑动 六、按键、填写登录表单 七、页面切换 八、实战爬取当当网书籍数据 Selenium是Web的自动化测试工具,为网站自动化测试而开发,Selenium可以直接运行在浏览器上,它支持所有主

    2024年02月15日
    浏览(50)
  • 【Python爬虫开发基础⑭】Scrapy架构(组件介绍、架构组成和工作原理)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️前面比较重要的 基础内容 : 【Python爬虫开发基础⑧】XPath库及其基本用法 【Python爬虫开发基础⑨】jsonpath和BeautifulSoup库概述及

    2024年02月17日
    浏览(44)
  • python爬虫-seleniumwire模拟浏览器反爬获取参数

    在进行数据爬取时,有时候遇到一些比较复杂的js逆向。在不考虑访问效率的情况下,使用selenium模拟浏览器的方法可以大大减少反反爬逆向工作量。但普通的selenium库是无法获取到类似set-cookie等参数的,这时候需要用到selenium-wire库。其用法类似selenium 首先安装selenium-wire库

    2024年02月03日
    浏览(44)
  • Python的web自动化学习(一)Selenium库的工作原理

    Python的web自动化学习(一)Selenium库的工作原理 首发2023-07-31 11:01·云中随心而记 后续会根据持续学习来更新,大家一起学习 引言: Selenium是一个流行的自动化测试工具,用于模拟和控制浏览器行为,常用于Web应用程序的功能测试和验收测试。Selenium支持多种编程语言,包括

    2024年02月08日
    浏览(42)
  • python爬虫—selenium获取csdn质量分并用echarts可视化分析

    大家好,我是yma16,本文分享关于python自动化获取个人博客质量分并可视化。 该系列文章: python爬虫_基本数据类型 python爬虫_函数的使用 python爬虫_requests的使用

    2024年02月11日
    浏览(50)
  • [爬虫]1.1.2 网络爬虫的工作原理

    网络爬虫(Web Crawler),也被称为网页蜘蛛(Spider),是一种用来自动浏览互联网的网络机器人。其主要目标通常是为搜索引擎创建复制的网页内容,但它们也可以被用于其他目的,比如数据挖掘。 现在,我们一起来深入理解一下网络爬虫的工作原理。整个过程可以被大致分

    2024年02月16日
    浏览(48)
  • Python网络爬虫逆向分析爬取动态网页、使用Selenium库爬取动态网页、​编辑将数据存储入MongoDB数据库

    目录 逆向分析爬取动态网页 了解静态网页和动态网页区别 1.判断静态网页  2.判断动态网页  逆向分析爬取动态网页 使用Selenium库爬取动态网页 安装Selenium库以及下载浏览器补丁 页面等待  页面操作 1.填充表单 2.执行JavaScript 元素选取 Selenium库的find_element的语法使用格式如下

    2024年02月15日
    浏览(119)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包