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

with open('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

4.浏览器启动方式验证

利用devtools,用命令行启动chrome浏览器,指定remote-debugging-port(这个端口可以是自定义的):

C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir=“C:\test_selenium”
此时已经打开了chrome浏览器,selenium便接管该浏览器进程,于是之前的语句会被替换成如下:

from selenium.webdriver.chrome.options import Options

# driver = webdriver.Chrome()  #注释掉,换做下面的
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "chromedriver路径"
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)

全部代码样例如下:

#!/usr/bin/env python

from 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})"
# })

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

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






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值