突破网站对Selenium的屏蔽
文章目录
- 问题描述
- 检测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,会保存图片
- 手动加载页面
- 保存网页:右键 → 另存为 → 保存类型【网页,全部】
- 使用解析库读取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 测试通过,但网站屏蔽仍存在
参考文献
- 如何突破网站对selenium的屏蔽
- Detecting Selenium
- pyppeteer/pyppeteer: Headless chrome/chromium automation library
- 如何正确移除Selenium中的 window.navigator.webdriver
- selenium.webdriver.chrome.webdriver — Selenium 3.14 documentation
- addScriptToEvaluateOnNewDocument
- selenium被识别如何解决?爬虫上线的selenium如何配置
突破网站对Selenium的屏蔽相关推荐
- seleuium 禁止检测_如何突破网站对selenium的屏蔽
使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...
- 如何突破网站对selenium的屏蔽
使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...
- 以淘宝为例教你如何突破网站对selenium的屏蔽
背景介绍: 一般情况下,访问网站都会消耗服务器的资源.而机器人可以做到比人更快的访问速度,更持续的访问时间,这对网站资源占用消耗是远远超过人的,而当服务器资源被大量占用的时候, 就不能为人提供正常的网 ...
- 网站链接被微信屏蔽禁止访问的解决办法
最近网站链接被微信屏蔽禁止访问,微信内打开网址显示如下提醒:已停止访问该网页,网页包含诱导分享.关注等诱导行为内容,被多人投诉,为维护绿色上网环境,已停止访问. 出现这种情况的原因是此域名(包括主域名 ...
- 网站被运营商屏蔽的经理和解决方法
网站被运营商屏蔽的经理和解决方法 参考文章: (1)网站被运营商屏蔽的经理和解决方法 (2)https://www.cnblogs.com/maja/p/10194520.html (3)https: ...
- index of rmvb mp3 rm突破网站入口下载
首先打开Google,在关键词输入框中输入"index of/"inurl:lib(双引号为英文状态下) ,选择"搜索简体中文网页"选项,回车搜索,得到了一些网 ...
- 网站识别selenium爬虫的原理以及解决方法
我们经常会拿selenium进行自动登录来搭建cookie池,对于不想自己网站被爬的站主/开发人员来说,防止自动化脚本操作网站自然是反爬必须要做的工作.那么,他们究竟有哪些手段来检测用户是否是sele ...
- python如何登录一个需要第三方验证的网站_python+selenium 之如何跳过登录验证
忙了一段时间没来学习了,今天学习下如何跳过登录验证码登录 首先我们很多系统的登录机制都会有短信验证或者图形验证等,每次自动化代码走到登录的时候,因为随机的验证码,导致无从下手 其实据我所知是有很多种方 ...
- hosts屏蔽网站以及代理越过屏蔽
用修改hosts的办法屏蔽了一些网站,这样就可以不必分心上网乱逛了. 如 127.0.0.1 news.baidu.com 也就是说ie解析时查看hosts,将news.baidu.com的链接指向1 ...
最新文章
- 手机qpython下载_QPython
- UVA 10334 Ray Through Glasses
- 小企业的第一台服务器如何选?
- c# list集合根据某个字段去重_java8 List 根据对象某个字段或多个字段去重、筛选、List转Map、排序、分组、统计计数等等...
- Pwn2Own 2022迈阿密大赛落幕 去年春季赛冠军蝉联Master of Pwn
- sql主键_SQL主键
- 微信5.0安卓内测版下载
- Hacker's Technique programme pdf+源码
- umi+Ant Design Mobile+rem搭建移动端H5框架
- c语言水电费系统,急求C水电费管理系统
- 从Transformer、BERT到GPT2和XLNet:高端玩家如何用论文互怼
- flutter dart 中dynamic var object的区别
- 714.买卖股票含手续费
- 修改apk显示或隐藏桌面图标
- 人工智能中神经网络与自然语言处理共生关系_CodingPark编程公园
- 有用的SAP系统管理事务码
- thinkphp6 通过命令行快速生成多应用模块报 【Command “build“ is not defined.】错误的解决办法
- 一枚研发狗的自我认知历程
- 解决Visual Studio输出中文乱码问题
- United Plugins发布TrapTune人声插件