013.随机指纹chromium编译-如何通过传参来固定指纹

news2024/11/26 22:51:37

随机指纹chromium编译-如何通过传参来固定指纹

由于要所有的类型的指纹都实现固定,工作量太大,这里我只用plugins指纹作为示例。

一、为什么要固定指纹

  • 目标:启动浏览器时,加上参数--fingerprints="xxxxxxx", 参数变化时,指纹也会跟着变化。打开网页后的后续访问指纹都不会再变化。
  • 广泛用于一些电商平台

二、什么是plugins指纹:

  • 之前有介绍过plugins指纹和如何修改:插眼传送

三、重新修改源码

  • 打开源码 third_party/blink/renderer/modules/plugins/dom_plugin.cc
1.头部加上(随便加在一个#include后面,之前加过就不用加了)
#include <random>
#include <string>
2.找到下面的代码
String DOMPlugin::description() const {
  return plugin_info_->Description();
}
3.替换为
String DOMPlugin::description() const {
  //return plugin_info_->Description();
  base::CommandLine* base_command_line = base::CommandLine::ForCurrentProcess();
  std::string tmp;
  if (base_command_line->HasSwitch("fingerprints")) {
	  tmp = base_command_line->GetSwitchValueASCII("fingerprints"); 
  }else{
	  tmp = base_command_line->GetSwitchValueASCII("type"); 
  }
  // LOG(ERROR) << "tmp:('" << tmp << "') tmp";
  String res = plugin_info_->Description();
  return res + String(tmp);
}

代码的原理是给每个plugin的description末尾追加上–fingerprints获取的字符串。

4.编译
ninja  -C  out/Default chrome

四、render进程追加参数

打开资源浏览器就可以发现,chromium默认使用的是多进程
启动浏览器的参数默认又只能传给主进程,所以我们还要改进程创建程序,将参数传给子进程。

  • 打开源码:\content\browser\renderer_host\render_process_host_impl.cc
1.找到下面的代码
command_line->AppendSwitchASCII(switches::kProcessType,
                                  switches::kRendererProcess);
2.替换为
command_line->AppendSwitchASCII(switches::kProcessType,
                                  switches::kRendererProcess);

//追加					  
const base::CommandLine* base_command_line = base::CommandLine::ForCurrentProcess();
if (base_command_line->HasSwitch("fingerprints")) {
  const std::string tmp = base_command_line->GetSwitchValueASCII("fingerprints");
  command_line->AppendSwitchASCII("fingerprints", tmp);
}	

3.编译
ninja  -C  out/Default chrome

可以了,后续每次启动chromium时改变 --fingerprints="xxxxxxx" 参数值,就会有不同的plugins指纹

五、验证一下

  • navigator.plugins复制到F12控制台

在这里插入图片描述

  • 发现description中成功追加了我们的参数。固定plugins指纹成功。

相信我这里起个头,其他指纹如何固定,你应该跃跃欲试了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1835005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】对大规模的文本数据进行多标签的分类处理

1. 引言 1.1. NLP研究的背景 随着人工智能技术的飞速发展&#xff0c;智能助手、聊天机器人和虚拟客服的需求正呈现出爆炸性增长。这些技术不仅为人们提供了极大的生活便利&#xff0c;如日程管理、信息查询和情感陪伴&#xff0c;还在工作场景中显著提高了效率。聊天机器人凭…

什么是云恶意软件攻击,如何进行有效的防护

一切都在向云转移。云端数据越多&#xff0c;恶意攻击者攻击云平台的兴趣就越大。 攻击者使用恶意软件窃取数据并破坏服务。虽然恶意软件在云端可能不像在个人电脑上那么普遍&#xff0c;但大行其道的云恶意软件令人担忧。此外&#xff0c;组织不像您预料的那样意识到这点。 …

EasyRecovery下载_EasyRecovery官方下载_2024最新版软件安装包附加详细安装步骤

EasyRecovery中文版是一款操作安全、恢复性比较高的数据恢复工具&#xff0c;小伙伴们可以使用EasyRecovery恢复各种各样被删除的文件、视频、图片等。EasyRecovery还可以支持恢复从硬盘、光盘、U盘、数码相机、手机等各种设备中恢复被删除或丢失的文件&#xff0c;只是使用Eas…

VBA学习(9):按指定名单一键删除工作表

今天继续给大家聊VBA编程中工作表对象的常用操作&#xff0c;主要内容是如何批量删除工作表&#xff1b;也就是删除单个工作表、删除全部工作表和删除指定名单内的工作表。 1.删除单个工作表 删除工作表需要使用到工作表对象的delete方法&#xff0c;语法格式如下&#xff1a…

SpringMVC系列八: 手动实现SpringMVC底层机制-下

手动实现SpringMVC底层机制-下 实现任务阶段五&#x1f34d;完成Spring容器对象的自动装配-Autowired 实现任务阶段六&#x1f34d;完成控制器方法获取参数-RequestParam1.&#x1f966;将 方法的 HttpServletRequest 和 HttpServletResponse 参数封装到数组, 进行反射调用2.&a…

软件测试/测试开发丨Selenium如何复用已打开浏览器

步骤说明&#xff1a; 将浏览器启动方式添加到环境变量。便于我们在终端任意位置启动浏览器终端中使用命令行&#xff0c;打开浏览器debug模式代码中创建driver时&#xff0c;添加debugger_address设置 以Chrome浏览器为例&#xff0c;设置步骤如下&#xff1a; 将浏览器启动…

SpringMVC系列六: 视图和视图解析器

视图和视图解析器 &#x1f49e;基本介绍&#x1f49e; 自定义视图为什么需要自定义视图自定义试图实例-代码实现自定义视图工作流程小结Debug源码默认视图解析器执行流程多个视图解析器执行流程 &#x1f49e;目标方法直接指定转发或重定向使用实例指定请求转发流程-Debug源码…

重磅新闻!狂揽120台订单!大运重卡唐山销服一体运营店盛大开业

2024年6月13日&#xff0c;唐山市迎来了一件令人振奋的商用车行业盛事——大运重卡经销商唐山滦都汽贸暨滦州通世坤销服一体盛大开业&#xff01; 参加本次开业庆典的有大运重卡营销中心副总经理助理张申、大运重卡营销中心销售总监倪世界、唐山滦都汽车贸易有限公司总经理王力…

【STM32】使用标准库创建一个工程

创建工程 本系列文章中使用的硬件和软件版本如下&#xff1a; CPU型号&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;V5.38.0.0 ARM编译器版本&#xff1a;V5.06 标准库版本&#xff1a;V1.8.0 1.下载标准库 官网链接&#xff1a;STSW-STM32065 - STM32F4 DSP和标准外…

Go语言轻松搞定Excel的操作,简单生成图表

原文链接&#xff1a;GO轻松搞定Excel 库简介 Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库&#xff0c;基于 ECMA-376&#xff0c;ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLS…

微信小程序接入lottie动画

1、注意&#xff1a;canvas渲染出来的层级太高&#xff0c;当有弹窗的情况会暴露在弹窗外 模拟器上会有这个问题&#xff0c;线上版本不会有 2、需求 需要把lottie动画在小程序的环境下进行展示 3、什么是lottie动画 由Airbnb开发并开源。允许设计师将复杂的矢量动画导出为…

【嵌入式】SD NAND:SD卡的集成与优化

嵌入式SD卡&#xff0c;也称为SD NAND或贴片式SD卡&#xff0c;是一种专为空间受限的设备设计的存储解决方案。这种存储卡与传统的SD卡不同&#xff0c;它采用贴片式封装&#xff0c;可以直接焊接到设备的PCB上&#xff0c;从而为电子设备提供内置存储功能。以下是嵌入式SD卡的…

【论文精读】ViM: Out-Of-Distribution with Virtual-logit Matching 使用虚拟分对数匹配的分布外检测

文章目录 一、文章概览&#xff08;一&#xff09;问题来源&#xff08;二&#xff09;文章的主要工作&#xff08;三&#xff09;相关研究 二、动机&#xff1a;Logits 中缺失的信息&#xff08;一&#xff09;logits&#xff08;三&#xff09;基于零空间的 OOD 评分&#xf…

Python单行代码:一招鲜,吃遍天

大家好&#xff0c;在Python编程中&#xff0c;我们时常需要高效、简洁的代码来解决复杂的问题。今天&#xff0c;我将向大家介绍10个非常有用的Python单行代码。 一行代码指的是将复杂的任务浓缩在一行代码中完成。它充分利用Python的简洁和强大&#xff0c;使代码更简洁、更…

grafana连接influxdb2.x做数据大盘

连接influxdb 展示数据 新建仪表盘 选择存储库 设置展示

数据可视化---绘制常用图表,组合图表,定制图表主题

题目一&#xff1a;绘制桑基图&#xff0c;展示某商铺新老客服群体的商品喜好 编写程序。根据第9.3.7&#xff0c;绘制桑基图&#xff0c;展示某商铺新老客服群体的商品喜好。 运行代码&#xff1a; #绘制桑基图&#xff0c;展示某商铺新老客服群体的商品喜好 from pyecharts…

男士内裤哪个品牌质量好?国内质量好的男士内裤推荐

今天想和大家分享一个虽不起眼但至关重要的时尚单品——男士内裤。它可能不像外套或鞋子那样引人注目&#xff0c;但却承载着男士们日常的舒适与健康。选择一款合适的男士内裤&#xff0c;不仅能提升穿着体验&#xff0c;更是展现个人品味和生活态度的关键。以下是一些选择内裤…

机器学习实战19-利用机器学习模型与算法实现销售数据的归因分析与图形生成

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战19-利用机器学习模型与算法实现销售数据的归因分析与图形生成。 归因分析是数据分析中的一个重要环节&#xff0c;它主要用于确定不同因素对特定结果&#xff08;如销售额、转化率等&#xff09;的贡献…

Nuxt.js 深入浅出:目录结构与文件组织详解

title: Nuxt.js 深入浅出&#xff1a;目录结构与文件组织详解 date: 2024/6/18 updated: 2024/6/18 author: cmdragon excerpt: 摘要&#xff1a;本文详述了Nuxt.js框架中关键目录与配置文件的作用及使用方法&#xff0c;包括布局设定、页面结构管理、插件集成、静态资源处理…

Linux安装并配置Java

1、Linux操作系统安装Java 1.1、下载Java JDK解压包 官方提供的网址&#xff1a; 选择Linux版本 下载列表选择最后一项&#xff0c;通过解压方式安装 倒数第二项是以rpm方式进行安装&#xff0c;另一篇安装MySQL时就是用到rpm方法。 1.2、解压JDK tar -zxvf jdk-8u411-lin…