当前位置: 首页 > web >正文

puppeteer注入浏览器指纹过CDP

一、背景

通过puppeteer爬取目标网站时,经常会被对方网站检测到,比如原生puppeteerCDP特征非常明显,另外指纹如果一直不变,也会引发风控

二、实现

通过以下几行代码即可轻松过大部分检测点,并且能够切换指纹,我的电脑是windows系统,显卡是AMD 7800XT,先放效果图:

2.1 检测网站

https://bot.sannysoft.com/

在这里插入图片描述
https://www.browserscan.net/
在这里插入图片描述
在这里插入图片描述
Webdriver、CDP等机器人常规检测:
在这里插入图片描述

2.2 代码

使用的是开源工具,代码非常少,首先是依赖安装
其中fingerprint-generator负责生成指纹,fingerprint-injector负责注入指纹,rebrowser-puppeteer是puppeteer的一个补丁库,主要用于绕过CDP检测

npm install fingerprint-generator fingerprint-injector rebrowser-puppeteer

示例js:

const { FingerprintGenerator } = require('fingerprint-generator');
const { FingerprintInjector } = require('fingerprint-injector');
const puppeteer = require('rebrowser-puppeteer');(async () => {const generator = new FingerprintGenerator(// {//     browsers: [//         {//             name: 'chrome',//             minVersion: 131,//             minVersion: 131//         }//     ]// });const fingerprint = generator.getFingerprint();const browser = await puppeteer.launch({// executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',headless: false,args: ['--disable-blink-features=AutomationControlled','--disable-web-security'],ignoreDefaultArgs: ['--enable-automation']});const page = await browser.newPage();const injector = new FingerprintInjector();await injector.attachFingerprintToPuppeteer(page, fingerprint);// https://www.browserscan.netawait page.goto('https://www.browserscan.net/', {waitUntil: 'networkidle0',timeout: 600000});
})();
http://www.xdnf.cn/news/2233.html

相关文章:

  • linux blueZ 第五篇:高阶优化与性能调优——蓝牙吞吐、延迟与功耗全攻略
  • 详解 Network.framework:iOS 网络开发的新基石
  • Spring进阶篇
  • Java面试高频问题(29-30)
  • 解释PyTorch中的广播机制
  • 如何在 Ubuntu 22.04|20.04|18.04 上安装 PostGIS
  • Docker 学习入门篇:镜像构建、推送与私有仓库搭建全攻略
  • JAVA JVM面试题
  • MQ消息的不可靠性发生情况与解决方案
  • Goland终端PowerShell命令失效
  • YOLOv5修改检测框颜色,粗细,标签大小,标签名称
  • 提示词的神奇魔力——如何通过它改变AI的输出
  • 7.Geometric Intersection: Interval
  • [实战] 卡尔曼滤波:原理、推导与卫星导航应用仿真(完整代码)
  • 若干查找算法
  • Vue3 组件通信与插槽
  • 未雨绸缪:应对软件开发变更的生存之道
  • 23种设计模式-行为型模式之观察者模式(Java版本)
  • 理想星环OS选择NuttX作为MCU侧OS的核心原因分析​
  • 树莓派学习专题<9>:使用V4L2驱动获取摄像头数据--设定分辨率和帧率
  • ASP.NET CORE部署IIS的三种方式
  • 第14节:传统图像特征提取 - 形状特征(HOG、SIFT与SURF)
  • 【fork初体验】
  • 数据结构手撕--【堆】
  • 【LeetCode】11.盛最多水的容器
  • 系列位置效应——AI与思维模型【80】
  • 鸿蒙代码@Builder
  • 关于调度策略的系统性解析与物流机器人应用实践
  • Universal Value Function Approximators 论文阅读(强化学习,迁移?)
  • 介绍常用的退烧与消炎药