0


selenium反爬

selenium反爬

selenium检测

selenium一般有以下几种检测方式

1.window.navigator.webdriver等特征

使用chromedriver有很多特征,最明显的是window.navigator.webdriver,针对
window.navigator.webdriver我们可以使用execute_cdp_cmd

# 修改 webdriver 值
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source":"Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"})

但是使用该方式只能屏蔽webdriver的值,还有很多特征无法处理,因此推荐使用stealth.min.js 隐藏chromedirver特征的内容。stealth.min.js是puppeteer中用于抹去自动化程序特征的。当他被单独提取出来后就可以在selenium中加载并使用,使得可以抹掉selenium中的自动化特征,从而绕过一些网站或者验证程序的机器人检测。
使用方法如下:下载地址见https://github.com/berstend/puppeteer-extra/tree/master/packages/extract-stealth-evasions或者直接使用https://cdn.jsdelivr.net/gh/requireCool/stealth.min.js/stealth.min.js

withopen('stealth.min.js')as f:
    js = f.read()

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": js
})

2.blink引擎自动化特征

options.add_argument(“–disable-blink-features”)
options.add_argument(“–disable-blink-features=AutomationControlled”)

3.chromedriver验证驱动key

notepad打开chromedriver.exe,搜索"cdc_"替换成"adc_"即可,由于chrome升级频繁,推荐以下两个网址下载对应版本的driver
最新版本:https://googlechromelabs.github.io/chrome-for-testing/#stable
历史版本:https://chromedriver.storage.googleapis.com/index.html

全部代码样例如下:

#!/usr/bin/env pythonfrom selenium import webdriver

CHROME_PATH =r"D:\xiazai\chromedriver-win64 (1)\chromedriver-win64\chromedriver_t.exe"
options = webdriver.ChromeOptions()# # 隐藏 正在受到自动软件的控制 这几个字
options.add_experimental_option("excludeSwitches",["enable-automation"])
options.add_experimental_option('useAutomationExtension',False)# 禁用blink引擎渲染功能,AutomationControlled是仅在 Chrome 由自动化控制时启用的功能
options.add_argument("--disable-blink-features")
options.add_argument("--disable-blink-features=AutomationControlled")# options.add_argument('--headless')# options.add_argument('--disable-gpu')# options.add_argument('user-agent={}'.format(USER_AGENT))# options.add_argument("--proxy-server=http://127.0.0.1:8081")# options.add_argument("--user-data-dir=C:\\Users\\用户名\\AppData\Local\\Google\\Chrome\\User Data")

driver = webdriver.Chrome(executable_path=CHROME_PATH,options=options)
url_sign ="https://bot.sannysoft.com/"# # 修改 webdriver 值# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {#     "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"# })withopen('stealth.min.js')as f:
    js = f.read()

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": js
})
driver.get(url_sign)
driver.quit()
标签: selenium python chrome

本文转载自: https://blog.csdn.net/TmacYang123/article/details/135101786
版权归原作者 拽拽的铲屎官 所有, 如有侵权,请联系我们删除。

“selenium反爬”的评论:

还没有评论