Selenium + Chromedriver,以为这样就能做到不被网站的反爬虫机制发现,有些网站会做相应的奥冲机制,pycharm中测试人代码如下:
from selenium.webdriver import Chrome
driver = Chrome()
查看反爬虫机制中的参数
现在,在这个窗口中打开开发者工具,并定位到Console选项卡,如下图所示在这个窗口输入如下的js代码并按下回车键,开发者工具返回了true。
window.navigator.webdriver
用桌面快捷方式打开一个Chrome窗口,输入网址https://blog.csdn.net/qq_27109535/article/details/124857003执行在这个窗口中打开开发者工具,并定位到Console输入以下代码,可以发现这行代码的返回值为undefined,如下图所示。
window.navigator.webdriver
webdriver = window.navigator.webdriver;if(webdriver){ console.log('使用Selenium模拟浏览器')} else { console.log('正常浏览器')}
第一次输入修改参数
Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});
第二次查看参数修改结果
window.navigator.webdriver
indow.navigator对象定义一个webdriver属性,并且设置为undefined,以绕过js的检测。 chrome版本小于88,加入代码
from selenium.webdriver import Chrome
web = Chrome()
web.execute_cdp_cmd("Page.addScripToEvaluateOnNewDocument", {
"source": """
Windows.navigator.webdriver = undefind
Object.defineProperty(navigator, 'webdriver',{
get: () =>undefined
})
"""
})
chrome版本大于88
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
option = Options()
option.add_argument('--disable-blink-features=AutomationControlled')
web = Chrome(options=option)
运行代码后打开一个新的页面,看一下效果