在最前面提一嘴chromedriver的下载地址:http://npm.taobao.org/mirrors/chromedriver/,注意要和自己chrome的版本对应。

在使用selenium经常会被检测,比如一个淘宝等网站,都会对selenium进行检测。

我们在这里以一个测试网站https://antispider1.scrape.center/为例进行说明。

首先编写代码:

from selenium import webdriver
url = 'https://antispider1.scrape.center'
chrome = webdriver.Chrome('./chromedriver.exe')
chrome.get(url)

运行后被拒绝访问

这时候我们只需要简单地更改一些代码:

from selenium import webdriver
# add
from selenium.webdriver import ChromeOptions
url = 'https://antispider1.scrape.center'
# add  隐藏提示条和自动化扩展信息
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option('useAutomationExtension', False)
# change
chrome = webdriver.Chrome('./chromedriver.exe', options=option)
# add  执行CDP
chrome.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': 'Object.defineProperty(navigator,"webdriver",{get: () => undefined})'
})
chrome.get(url)

可以正常访问该网站:

原理是:

网站通过检测当前浏览器窗口下的window.nevigator对象中是否包含webdriver属性,我们通过使用CDP(chrome devtools protocol,Chrome开发工具协议)在每个页面刚加载时,将这个属性置空。


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注