2022新版Selenium真正绕过webdriver检测
更新时间:2022-03-11 09:54:28 作者:多测师 浏览:702
一、什么是真正绕过浏览器检测?
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中。
上码:
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文件。
以上内容为大家介绍了2022新版Selenium真正绕过webdriver检测,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/