详细讲解!Selenium真正绕过webdriver检测

目录

前言:

一、什么是真正绕过浏览器检测?

2、 普通的启动webdriver

3、Js注入真正绕过webdriver的检测属性

js注入的文件[stealth.min.js]


前言:

Selenium是一个流行的开源测试工具,用于网络应用程序测试。它使测试人员能够用各种编程语言编写自动测试,以测试网络应用的功能。Selenium测试可以在许多不同的浏览器和操作系统上运行。

Selenium测试工具是一个优秀的工具,用于自动化网络应用程序测试。它可以用来在各种浏览器和操作系统上测试网络应用程序的功能。Selenium软件测试是使你的网络应用程序测试自动化的好方法。

一、什么是真正绕过浏览器检测?

  • https://bot.sannysoft.com 这是chrome的真正检测网址

  • 为什么要强调绕过webdriver属性检测?

    扫描二维码关注公众号,回复: 15277340 查看本文章

有些网址通过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中

上码:

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文件

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、接口自动化测试、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

猜你喜欢

转载自blog.csdn.net/DJ355/article/details/131116025