• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Selenium反反爬

武飞扬头像
riwanba
帮助1

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.谷歌.com")
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiajkeh
系列文章
更多 icon
同类精品
更多 icon
继续加载