终极攻略!如何彻底防止Selenium被检测!

这篇具有很好参考价值的文章主要介绍了终极攻略!如何彻底防止Selenium被检测!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用Selenium进行爬虫时,许多朋友都会遇到各种反爬措施。

实际上,在绝大多数情况下,网站轻而易举地能够检测出你正在使用WebDriver而非标准浏览器。

本文将详细介绍如何有效防止检测的方法。

在一篇公众号文章《别去送死了。Selenium 与 Puppeteer 能被网站探测的几十个特征》中,我们知道目前网上的反检测方法几乎都是掩耳盗铃,因为模拟浏览器有几十个特征可以被检测,仅仅隐藏 webdriver 这一个值是没有任何意义的。

今天我们就来说说应该如何正确解决这个问题。我们首先给出解决方案。然后再说明这个解决方案,我是通过什么方式找到的。

解决这个问题的关键,就是一个 js 文件,叫做stealth.min.js。这个文件的获取有点复杂,具体可以搜索一下,这里不详细介绍。

我们需要设定,让 Selenium在打开任何页面之前,先运行这个 Js 文件。
就可以避免被检测到。

论证过程如下:

首先,我们直接在浏览器输入网址访问这个网站:
https://bot.sannysoft.com/
这些选项其实就是浏览器的特征
selenium规避检测,selenium,python,测试工具
但我们如果使用selenium就会得到不一样的结果,如下:
代码:

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")

driver = Chrome(executable_path='./chromedriver', options=chrome_options)
driver.get('https://bot.sannysoft.com/')
driver.save_screenshot('screenshot.png')

结果如下:
selenium规避检测,selenium,python,测试工具
下面我们加载这个js文件后再来访问这个网站,查看特征值:

代码:

import time
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')

driver = Chrome(executable_path='./chromedriver', options=chrome_options)

with open('./stealth.min.js') as f:
    js = f.read()

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": js
})

driver.get('https://bot.sannysoft.com/')
time.sleep(5)
driver.save_screenshot('walkaround.png')

source = driver.page_source
with open('result.html', 'w') as f:
    f.write(source)

结果:
selenium规避检测,selenium,python,测试工具
我们可以发现结果与第一种情况一模一样

js文件获取方式,公众号编程启航回复selenium反检测

更多宝藏

🍇🍉🍊🍏🍋🍅🥝🥥🫒🫕🥗
视频推送看这里🤤:
https://space.bilibili.com/1909782963
项目仓库看这里🤗:
https://github.com/w-x-x-w
https://gitee.com/w-_-x
公众号名称😮:编程启航
博客文章看这里🤭:
https://blog.csdn.net/weixin_62650212文章来源地址https://www.toymoban.com/news/detail-531762.html

到了这里,关于终极攻略!如何彻底防止Selenium被检测!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • selenium 元素定位攻略大全

    元素名称 描述 Webdriver API id id属性 driver.find_element(By.ID, \\\"id属性值\\\") name name属性 driver.find_element(By.NAME, \\\"name属性值\\\") class_name class属性 driver.find_element(By.CLASS_NAME, \\\"class_name属性值\\\") tag_name 标签名 driver.find_element(By.TAG_NAME, \\\"标签名\\\") link_text a元素的文本内容-精准匹配 driver.find_elemen

    2024年04月12日
    浏览(64)
  • 无边界探索:Selenium元素定位方法全攻略!

    作为当下最流行的web UI自动化测试工具,selenium是很多测试同学入门接触自动化测试时学习的第一个工具。想要自动化操作页面上的内容,元素定位是首先必须要学习的核心知识。 因此本文主要介绍selenium的几种最常用的元素定位方法,掌握了这些方法,希望能帮助大家快速

    2024年02月05日
    浏览(44)
  • selenium ctrl+F5 强行硬刷新无效,解决彻底刷新方法!

       理论上这段代码,可以硬刷新,但是实际执行却无效,这应该是chromedriver的问题 3249 - chromedriver - WebDriver for Google Chrome - Monorail https://bugs.chromium.org/p/chromedriver/issues/detail?id=3249   可以使用间接方法强行刷新,这条命令可以忽略缓存刷新 Python selenium send keys to driver - Stack

    2024年02月07日
    浏览(27)
  • Selenium元素定位全攻略,让你轻松玩转自动化测试!

    一、什么是元素定位 元素定位就是查找HTML元素的过程,操作页面元素之前,首先要对元素进行定位,所以定位是自动化脚本编写的开始。 通常使用find_element或find_elements方法来定位元素(find_element 使用给定的方法定位和查找一个元素;find_elements 使用给定的方法定位和查找所

    2024年02月04日
    浏览(43)
  • python selenium playwright库使用教程 破解网页防止开发者模式 截取数据请求 隐藏chrome

    下载 chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。 有两个下载地址: 1、 http://chromedriver.storage.googleapis.com/index.html 2、 CNPM Binaries Mirror 当然,你首先需要查看你的Chrome版本,在浏览器中输入chrome://version/  放chromedriver在chrome安装目录  默认目录一般为:C:Pro

    2023年04月25日
    浏览(44)
  • selenium绕过检测,规避检测

    我们在使用Python Selenium进行自动化测试或爬虫时,有时会遇到被网站检测到并阻止的情况。这些网站通常会使用各种技术手段来检测和阻止自动化脚本,例如检测浏览器指纹、检查页面元素是否被自动化程序操作、检测用户行为模式等。本文将介绍一些常见的技术手段,以及

    2024年04月12日
    浏览(39)
  • python运行selenium创建Edge浏览器更改默认下载路径的方法与防止程序结束后浏览器窗口自动关闭的方法

    结合chatgpt与csdn查阅资料后 得到解决方法: 其中 “D:Downloads_test”改为你自己想要默认下载路径, \\\"download.prompt_for_download\\\"为下载文件开始时Edge浏览器是否弹出另存为窗口,True则触发下载时会弹出另存为窗口,False则直接将文件下载到默认下载路径中。 另存为窗口长相如下

    2024年02月11日
    浏览(45)
  • python使用selenium以及selenium-wire做质量与性能检测

    python天生就是适合用来做爬虫,结合selenium真是如虎添翼; 1) 安装库 2)添加驱动,比如 chrome需要下载一个驱动,放到项目目录下或者python安装目录下,根据机器上对应的chrome版本进行下载。我是放在python3.exe的目录 下载地址: CNPM Binaries Mirror selenium功能比较强大,但是仍然

    2024年02月11日
    浏览(59)
  • 什么是 DNS 隧道以及如何检测和防止攻击

    什么是 DNS 隧道? DNS 隧道是一种DNS 攻击技术,涉及在 DNS 查询和响应中对其他协议或程序的信息进行编码。DNS 隧道通常具有可以锁定目标 DNS 服务器的数据有效负载,允许攻击者管理应用程序和远程服务器。  DNS 隧道往往依赖于受感染系统的外部网络连接 - DNS 隧道需要一种

    2024年02月09日
    浏览(35)
  • SOCKS使用及Selenium过检测

    安装pip3 install PySocks 另外还有一种设置方式,和Urllib中的方法相同,使用socks模块,也需要像上文一样安装该库,设置方法如下: 这样也可以设置SOCKS5代理,运行结果完全相同,相比第一种方法,此方法是全局设置,不同情况可以选用不同的方法。

    2024年02月12日
    浏览(17)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包