0


Selenium反反爬

1. 反爬

有时候,我们利用 Selenium 自动化爬取某些网站时,极有可能会遭遇反爬。

实际上,我们使用默认的方式初始化 WebDriver 打开一个网站,下面这段 JS 代码永远为 true,而手动打开目标网站的话,则为:undefined

通过这段 JS 脚本区分是爬虫还是人工操作 window.navigator.webdriver

2.解决方法 cdp 命令

cdp 全称是:Chrome Devtools-Protocol

通过 addScriptToEvaluateOnNewDocument() 方法可以在页面还未加载之前,运行一段脚本。

如此,我们只需要提前设置:

window.navigator.webdriver 的值为 undefined 即可。

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

option = ChromeOptions()

# 打开参数
# option.add_argument("--proxy-server=http://127.0.0.1:8888")
# driver = Chrome(options=option)

driver = Chrome()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})

driver.implicitly_wait(10)
driver.get("http://www.google.com")

本文转载自: https://blog.csdn.net/riwanba/article/details/131801315
版权归原作者 riwanba 所有, 如有侵权,请联系我们删除。

“Selenium反反爬”的评论:

还没有评论