1. 反爬
有时候,我们利用 Selenium 自动化爬取某些网站时,极有可能会遭遇反爬。
实际上,我们使用默认的方式初始化 WebDriver 打开一个网站,下面这段 JS 代码永远为 true,而手动打开目标网站的话,则为:undefined
# 通过这段 JS 脚本区分是爬虫还是人工操作 window.navigator.webdriver
2.解决方法 cdp 命令
cdp 全称是:Chrome Devtools-Protocol
通过 addScriptToEvaluateOnNewDocument() 方法可以在页面还未加载之前,运行一段脚本。
如此,我们只需要提前设置:
window.navigator.webdriver 的值为 undefined 即可。
1 from selenium.webdriver import Chrome 2 from selenium.webdriver import ChromeOptions 3 4 option = ChromeOptions() 5 6 # 打开参数 7 # option.add_argument("--proxy-server=http://127.0.0.1:8888") 8 # driver = Chrome(options=option) 9 10 driver = Chrome() 11 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { 12 "source": """ 13 Object.defineProperty(navigator, 'webdriver', { 14 get: () => undefined 15 }) 16 """ 17 }) 18 19 driver.implicitly_wait(10) 20 driver.get("http://www.google.com")
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/riwanba/article/details/131801315