selenium 反反爬-淘宝,美团

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

posted @ 2024-08-09 14:45  悠然现南山  阅读(106)  评论(0编辑  收藏  举报