文章目录

  • 问题描述
  • 检测Selenium
  • 解决方案
    • 1. 使用Firefox
    • 2. 半自动爬虫
    • 3. 使用pyppeteer
    • 4. Chrome开发工具协议
  • 参考文献

问题描述

使用 selenium 模拟浏览器进行数据抓取是目前最通用的爬虫方案,所见即所得。通吃各种数据加载方式,能绕过JS加密、爬虫检测、签名机制。

但是Selenium依然能被检测到,它在运行时会暴露出一些预定义的JavaScript变量(特征字符串),如"window.navigator.webdriver",在非Selenium环境下为undefined,在Selenium环境下为true

检测Selenium

检测 Selenium 的 JavaScript 代码

webdriver = window.navigator.webdriver;
if (webdriver) {console.log('模拟浏览器')
} else {console.log('正常浏览器')
}

解决方案

1. 使用Firefox

Selenium文档称:

在使用Selenium时,避免被检测的最好方法是使用最新版本的Firefox,另外,Safari和Opera也值得一试。

本人测试,特征字符串依旧存在

2. 半自动爬虫

推荐使用Firefox,会保存图片

  1. 手动加载页面
  2. 保存网页:右键 → 另存为 → 保存类型【网页,全部】
  3. 使用解析库读取HTML获取数据,如Beautiful Soup、pyquery

仅适合单页面且数据量不大的情况

3. 使用pyppeteer

import asyncio
from pyppeteer import launch
from pyppeteer import launcherlauncher.DEFAULT_ARGS.remove("--enable-automation")async def main():browser = await launch(headless=False)input()await browser.close()asyncio.get_event_loop().run_until_complete(main())

4. Chrome开发工具协议

from selenium import webdriveroptions = webdriver.ChromeOptions()
options.add_experimental_option('useAutomationExtension', False)
options.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = webdriver.Chrome(chrome_options=options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""
})

Chrome版本 83.0.4103.116 测试通过,但网站屏蔽仍存在

参考文献

  1. 如何突破网站对selenium的屏蔽
  2. Detecting Selenium
  3. pyppeteer/pyppeteer: Headless chrome/chromium automation library
  4. 如何正确移除Selenium中的 window.navigator.webdriver
  5. selenium.webdriver.chrome.webdriver — Selenium 3.14 documentation
  6. addScriptToEvaluateOnNewDocument
  7. selenium被识别如何解决?爬虫上线的selenium如何配置

突破网站对Selenium的屏蔽相关推荐

  1. seleuium 禁止检测_如何突破网站对selenium的屏蔽

    使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...

  2. 如何突破网站对selenium的屏蔽

    使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...

  3. 以淘宝为例教你如何突破网站对selenium的屏蔽

    背景介绍: 一般情况下,访问网站都会消耗服务器的资源.而机器人可以做到比人更快的访问速度,更持续的访问时间,这对网站资源占用消耗是远远超过人的,而当服务器资源被大量占用的时候, 就不能为人提供正常的网 ...

  4. 网站链接被微信屏蔽禁止访问的解决办法

    最近网站链接被微信屏蔽禁止访问,微信内打开网址显示如下提醒:已停止访问该网页,网页包含诱导分享.关注等诱导行为内容,被多人投诉,为维护绿色上网环境,已停止访问. 出现这种情况的原因是此域名(包括主域名 ...

  5. 网站被运营商屏蔽的经理和解决方法

    网站被运营商屏蔽的经理和解决方法 参考文章: (1)网站被运营商屏蔽的经理和解决方法 (2)https://www.cnblogs.com/maja/p/10194520.html (3)https: ...

  6. index of rmvb mp3 rm突破网站入口下载

    首先打开Google,在关键词输入框中输入"index of/"inurl:lib(双引号为英文状态下) ,选择"搜索简体中文网页"选项,回车搜索,得到了一些网 ...

  7. 网站识别selenium爬虫的原理以及解决方法

    我们经常会拿selenium进行自动登录来搭建cookie池,对于不想自己网站被爬的站主/开发人员来说,防止自动化脚本操作网站自然是反爬必须要做的工作.那么,他们究竟有哪些手段来检测用户是否是sele ...

  8. python如何登录一个需要第三方验证的网站_python+selenium 之如何跳过登录验证

    忙了一段时间没来学习了,今天学习下如何跳过登录验证码登录 首先我们很多系统的登录机制都会有短信验证或者图形验证等,每次自动化代码走到登录的时候,因为随机的验证码,导致无从下手 其实据我所知是有很多种方 ...

  9. hosts屏蔽网站以及代理越过屏蔽

    用修改hosts的办法屏蔽了一些网站,这样就可以不必分心上网乱逛了. 如 127.0.0.1 news.baidu.com 也就是说ie解析时查看hosts,将news.baidu.com的链接指向1 ...

最新文章

  1. 手机qpython下载_QPython
  2. UVA 10334 Ray Through Glasses
  3. 小企业的第一台服务器如何选?
  4. c# list集合根据某个字段去重_java8 List 根据对象某个字段或多个字段去重、筛选、List转Map、排序、分组、统计计数等等...
  5. Pwn2Own 2022迈阿密大赛落幕 去年春季赛冠军蝉联Master of Pwn
  6. sql主键_SQL主键
  7. 微信5.0安卓内测版下载
  8. Hacker's Technique programme pdf+源码
  9. umi+Ant Design Mobile+rem搭建移动端H5框架
  10. c语言水电费系统,急求C水电费管理系统
  11. 从Transformer、BERT到GPT2和XLNet:高端玩家如何用论文互怼
  12. flutter dart 中dynamic var object的区别
  13. 714.买卖股票含手续费
  14. 修改apk显示或隐藏桌面图标
  15. 人工智能中神经网络与自然语言处理共生关系_CodingPark编程公园
  16. 有用的SAP系统管理事务码
  17. thinkphp6 通过命令行快速生成多应用模块报 【Command “build“ is not defined.】错误的解决办法
  18. 一枚研发狗的自我认知历程
  19. 解决Visual Studio输出中文乱码问题
  20. United Plugins发布TrapTune人声插件

热门文章

  1. Ubuntu系统Root用户无法登录
  2. 使用 Nginx 转发 Oracle 端口
  3. git 提交添加 emoij 文字
  4. 02061178400 骚扰电话大家小心啊
  5. java snmp协议 获取数据
  6. 《深度强化学习实战》 第9章 多智能体
  7. linux-ftpd-0.17制作ftpd嵌入式linux下的ftp服务器
  8. 一些不为人知的浏览器使用小秘籍
  9. 第五人格玩家专业术语必知 玩家最爱人物top榜新鲜出炉!
  10. Laravel入门学习教程