当前位置:   article > 正文

selenium反爬_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})"
})
  • 1
  • 2
  • 3
  • 4

但是使用该方式只能屏蔽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
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

全部代码样例如下:

#!/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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/89966
推荐阅读
相关标签
  

闽ICP备14008679号