2021最新Selenium真正绕过webdriver检测
Posted 程序员超时空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021最新Selenium真正绕过webdriver检测相关的知识,希望对你有一定的参考价值。
如果你是小白,这套资料可以帮你成为大牛,如果你有丰富开发经验,这套资料可以帮你突破瓶颈
2022web全套视频教程前端架构 H5 vue node 小程序 视频+资料+代码+面试题.
看过非常多selenium文章,但能真正绕过的不多!下面为大家实现通过js文件注入达到真正绕过的方法!欢迎点赞关注一键三连!
一、什么是真正绕过浏览器检测?
-
https://bot.sannysoft.com 这是chrome的真正检测网址
-
为什么要强调绕过webdriver属性检测?
- 有些网址通过webdriver检测使得Selenium无法获取元素、无法控制按钮等情况
1、PC环境打开chrome的效果
一般来说普通的启用webdriver即使也是会标红的,以上是打开本地chrome的检测属性
2、 普通的启动webdriver
-
上码
from selenium import webdriver
class WebDriverChrome(object):
def __init__(self): self.driver = self.StartWebdriver() def StartWebdriver(self): options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("useAutomationExtension", False) driver = webdriver.Chrome(options=options) return driver def RunStart(self): self.driver.get('https://bot.sannysoft.com') # time.sleep(10) # self.driver.quit()
if name == ‘main’:
Crawl = WebDriverChrome()
Crawl.RunStart()
3、Js注入真正绕过webdriver的检测属性
为什么我注入的js属性有效?
-
该js文件是pyppetter中绕过webdriver检测所用到的
现在直接导入到Selenium启动的chrome中
关键的js文件我放在了文末
上码:from selenium import webdriver
class WebDriverChrome(object):
def __init__(self): self.driver = self.StartWebdriver() def StartWebdriver(self): options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("useAutomationExtension", False) driver = webdriver.Chrome(options=options) with open('./stealth.min.js') as f: js = f.read() driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", "source": js ) return driver def RunStart(self): self.driver.get('https://bot.sannysoft.com') # time.sleep(10) # self.driver.quit()
if name == ‘main’:
Crawl = WebDriverChrome()
Crawl.RunStart()
js注入的文件[stealth.min.js]
- 命名不统一要求能读取就可以了
- 获取方式:
- 安装node.js
-
npx extract-stealth-evasions
就会在你执行命令的文件夹下面生成一个stealth.min.js文件
我是通过everything工具找到改js文件,拷贝后再使用的,同时我也提供了csdn下免费的下载方式,因为资源无法直接免费下载,为了不耗费大家的C币,关注我成为粉丝就能下载了
待审核通过后,我会在评论附上链接
以上是关于2021最新Selenium真正绕过webdriver检测的主要内容,如果未能解决你的问题,请参考以下文章
Selenium w/Firefox 88 更改为 navigator.webdriver
当窗口在 Chrome 87 的后台时,Webdriver.io/Selenium 测试失败
(最新版)如何正确移除Selenium中的 window.navigator.webdriver
pycharm最新版新建工程没导入本地包问题:module 'selenium.webdriver' has no attribute 'Firefox'