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多个指纹特征相关推荐

  1. chrome webdriver_(最新版)如何正确移除Selenium中的 window.navigator.webdriver

    摄影:产品经理产品经理的三文鱼炒饭 在<一日一技:如何正确移除Selenium中window.navigator.webdriver的值>一文中,我们介绍了在当时能够正确从Selenium ...

  2. webdriver原理_(最新版)如何正确移除 Pyppeteer 中的window.navigator.webdriver

    摄影:产品经理春天来了~ 在<在Pyppeteer中正确隐藏window.navigator.webdriver >一文中,我们介绍了修改源代码使Pyppeteer 打开的 Chrome ...

  3. selenium模拟浏览器解决反监测,获取cookies解决登录问题

    网络上设立了许多各种反爬的监测各式各样,但并不会非常的深入,如果要仔细获知应用了什么监测需要在控制台全局搜索webdriver去逆向分析一下再去设置将selenium伪装. 记录一下了解到的部分功能 ...

  4. selenium Edge浏览器规避检测

    正常情况下在浏览器控制台输window.navigator.webdriver会返回false,而通过selenium来操作浏览器的情况下会返回true. 可以在程序中,怼入 from seleniu ...

  5. Python使用selenium模拟浏览器爬取某查查数据

    在使用爬虫爬取某查查的数据的时候,会被识别到,进行反爬限制,最后使用selenium模拟浏览器进行爬取. 这里解决办法主要使用selenium打开浏览器,模拟人操作进行爬取,代码: ua = 'Moz ...

  6. 利用window.navigator.userAgent判断当前是否微信内置浏览器

    <!DOCTYPE HTML> <html lang="en"> <head><meta charset="utf-8" ...

  7. window.navigator.userAgent用来区分设备和浏览器

    javascript的navigator对象 navigator为Window对象的一个属性,指向了一个包含浏览器相关信息的对象.navigatot中包含了一些常用到的属性,如 navigator.a ...

  8. Selenium多浏览器测试

    在浏览器的兼容性测试中,会测试产品在不同浏览器上的兼容性,比较主流的浏览器有IE.Firefox.Chrome,Opera,Safari等.还有其它如360.QQ.遨游.百度等浏览器都是基于IE或者c ...

  9. c++浏览器自动化操作_精:C# 利用Selenium实现浏览器自动化操作

    概述 Selenium是一款免费的分布式的自动化测试工具,支持多种开发语言,无论是C. java.ruby.python.或是C# ,你都可以通过selenium完成自动化测试.本文以一个简单的小例子 ...

最新文章

  1. CVPR 2021 | 港科大:如何利用闪光图像(flash image)来去除反光
  2. 2018.09.30 bzoj2288:生日礼物(贪心+线段树)
  3. php stdclass,php中new stdclass()用在什么场景
  4. 用wamper打开php源码_php源码该怎么设置数据库
  5. 【剑指offer】面试题54:二叉搜索树的第k大节点(java)
  6. TX2刷机flashOS finished后,卡在determining IP address解决方案
  7. datetime类型保存的时间比实际时间少8小时
  8. ubuntu16.04 离线安装docker ce
  9. isinstance()函数的应用
  10. Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
  11. Tkinter 的 Text 组件
  12. 案例:回归分析-R实现
  13. php下载apk文件源码下载,php文件下载功能简单源码示例
  14. 5.12 利用图层蒙版制作图像合成特效 [原创Ps教程]
  15. 详解Spark Streaming的Graceful Shutdown
  16. JAVA-循序结构、选择结构
  17. vcenter server安装到第二阶段无法“下一步“问题解决
  18. 基于CNN的2D多人姿态估计论文综述
  19. fedora下载中的kde、xfce、workstation区别
  20. C语言中 \ 的作用

热门文章

  1. IDL太阳天顶角计算
  2. 风控人必须知道的贷后专业术语和指标
  3. oracle wip 拆解工单 操作_WIP制造成本详解.ppt
  4. 子网掩码是什么?怎么设置?
  5. DelphiXE 10.3中ActionList或者菜单事件的调用
  6. 今日头条:任务调度面试题解答
  7. 最简单的屏幕OCR文字识别
  8. OFSA 究竟是做什么的--来自大师的感悟
  9. 什么是依赖注入——板砖拍Martin Fowler
  10. C++正则匹配中文乱码_中文正则表达式匹配-正则中文匹配