Selenium真正绕过webdriver检测
一、什么是真正绕过浏览器检测?
. https://bot.sannysoft.com这是chrome的真正检测网址。
为什么要强调绕过webdriver属性检测?
有些网址通过webdriver检测使得Selenium无法获取元素、无法控制按钮等情况
1、PC环境打开chrome的效果
一般来说普通的启用webdriver即使也是会标红的,以上是打开本地chrome的检测属性
2、普通的启动webdriver
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
class WebDriverChrome(object):
def __init__(self):
self.driver = self.StartWebdriver()
def StartWebdriver(self):
s = Service('../lib/chromedriver.exe')
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
driver = webdriver.Chrome(service=s, 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()
第一种:Js注入绕过webdriver的检测属性
1、Js注入真正绕过webdriver的检测属性。为什么我注入的js属性有效?
该js文件是pyppetter中绕过webdriver检测所用到的现在直接导入到Selenium启动的chrome中
上码:
安装node.js
npx extract-stealth-evasions
就会在你执行命令的文件夹下面生成一个stealth.min.js文件
第二种:使用 undetected_chromedriver
undetected_chromedriver
安装:pip install undetected-chromedriver
使用方法
undetected_chromedriver 可以防止浏览器特征被识别,并且可以根据浏览器版本自动下载驱动。
import undetected_chromedriver asuc
driver = uc.Chrome ()
driver.get(' https: //nowsecure.nl')