移除Selenium的浏览器window.navigator.webdriver等20多个指纹特征
Selenium特征指纹
一般Selenium自动打开浏览器后,会给其增加一些特征指纹,如下图:
怎样才能去掉这些特征呢?
有一种现成的nodejs库puppeteer-extra,这里面有一个extract-stealth-evasions专门用于去掉Selenium/puppeteer浏览器的特征。
使用
使用方法也很简单,只需要浏览器打开要访问的页面之前,通过DevTools执行一段JS代码。
import time
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')driver = Chrome('chromedriver.exe', options=chrome_options)with open('stealth.min.js') as f:js = f.read()driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js
})driver.get('https://bot.sannysoft.com/')
time.sleep(5)
driver.save_screenshot('walkaround.png')# 你可以保存源代码为 html 再双击打开,查看完整结果
source = driver.page_source
with open('result.html', 'w') as f:f.write(source)
生成stealth.min.js
安装Yarn下载Yarn的.msi
文件、执行,并把yarn命令目录加入PATH
。
安装nodejs。
安装Chrome对应版本的WebDriver。
在puppeteer-extra/extract-stealth-evasions
目录下:
修改package.json
,把dependencies
下的puppeteer
改为puppeteer-core
:
"dependencies": {"puppeteer-core": "*","puppeteer-extra": "*","puppeteer-extra-plugin-stealth": "^2.6.5","terser": "^5.1.0","yargs": "^15.4.1"}
修改index.js
,给launch()
,再增加一个参数executablePath
,值是chrome浏览器的绝对地址,例如:
puppeteer.use(stealth).launch({headless: true,executablePath: "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"})
执行命令:
# 安装依赖
yarn install# 生成stealth.min.js
node index.js
执行python
结果:
参考
https://chromedevtools.github.io/devtools-protocol/tot/
https://mp.weixin.qq.com/s/Bge-_yiatSq4CQq7fRvjdQ
移除Selenium的浏览器window.navigator.webdriver等20多个指纹特征相关推荐
- chrome webdriver_(最新版)如何正确移除Selenium中的 window.navigator.webdriver
摄影:产品经理产品经理的三文鱼炒饭 在<一日一技:如何正确移除Selenium中window.navigator.webdriver的值>一文中,我们介绍了在当时能够正确从Selenium ...
- webdriver原理_(最新版)如何正确移除 Pyppeteer 中的window.navigator.webdriver
摄影:产品经理春天来了~ 在<在Pyppeteer中正确隐藏window.navigator.webdriver >一文中,我们介绍了修改源代码使Pyppeteer 打开的 Chrome ...
- selenium模拟浏览器解决反监测,获取cookies解决登录问题
网络上设立了许多各种反爬的监测各式各样,但并不会非常的深入,如果要仔细获知应用了什么监测需要在控制台全局搜索webdriver去逆向分析一下再去设置将selenium伪装. 记录一下了解到的部分功能 ...
- selenium Edge浏览器规避检测
正常情况下在浏览器控制台输window.navigator.webdriver会返回false,而通过selenium来操作浏览器的情况下会返回true. 可以在程序中,怼入 from seleniu ...
- Python使用selenium模拟浏览器爬取某查查数据
在使用爬虫爬取某查查的数据的时候,会被识别到,进行反爬限制,最后使用selenium模拟浏览器进行爬取. 这里解决办法主要使用selenium打开浏览器,模拟人操作进行爬取,代码: ua = 'Moz ...
- 利用window.navigator.userAgent判断当前是否微信内置浏览器
<!DOCTYPE HTML> <html lang="en"> <head><meta charset="utf-8" ...
- window.navigator.userAgent用来区分设备和浏览器
javascript的navigator对象 navigator为Window对象的一个属性,指向了一个包含浏览器相关信息的对象.navigatot中包含了一些常用到的属性,如 navigator.a ...
- Selenium多浏览器测试
在浏览器的兼容性测试中,会测试产品在不同浏览器上的兼容性,比较主流的浏览器有IE.Firefox.Chrome,Opera,Safari等.还有其它如360.QQ.遨游.百度等浏览器都是基于IE或者c ...
- c++浏览器自动化操作_精:C# 利用Selenium实现浏览器自动化操作
概述 Selenium是一款免费的分布式的自动化测试工具,支持多种开发语言,无论是C. java.ruby.python.或是C# ,你都可以通过selenium完成自动化测试.本文以一个简单的小例子 ...
最新文章
- CVPR 2021 | 港科大:如何利用闪光图像(flash image)来去除反光
- 2018.09.30 bzoj2288:生日礼物(贪心+线段树)
- php stdclass,php中new stdclass()用在什么场景
- 用wamper打开php源码_php源码该怎么设置数据库
- 【剑指offer】面试题54:二叉搜索树的第k大节点(java)
- TX2刷机flashOS finished后,卡在determining IP address解决方案
- datetime类型保存的时间比实际时间少8小时
- ubuntu16.04 离线安装docker ce
- isinstance()函数的应用
- Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
- Tkinter 的 Text 组件
- 案例:回归分析-R实现
- php下载apk文件源码下载,php文件下载功能简单源码示例
- 5.12 利用图层蒙版制作图像合成特效 [原创Ps教程]
- 详解Spark Streaming的Graceful Shutdown
- JAVA-循序结构、选择结构
- vcenter server安装到第二阶段无法“下一步“问题解决
- 基于CNN的2D多人姿态估计论文综述
- fedora下载中的kde、xfce、workstation区别
- C语言中 \ 的作用