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文件
作者:顽强拼搏的阿k
原文链接:https://blog.csdn.net/weixin_38640052/article/details/112692031