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

基于Android aosp系统的云手机chromium浏览器定制

chromium定制浏览器

  • chromium源码下载
    • get属性
    • c或者c++层
    • 常见指纹检测指标

chromium源码下载

最新有点时间研究了一些 网上定制chromium 浏览器的方案,大部分都是基于window的,
修改点无非以下监测点。自己本身做Android系统开发,就想着能否做一款基于Android的定制浏览器;
通过查阅网上其他大佬资料。很多都是通过 Selenium 或者playwright 自动化工具修改chromium相关指纹信息。我再思考有再Android中不使用任何自动化框架,就能实现修改chromium的指纹信息呢
python 3.8

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.x 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2

最后的参数1, 2表示优先级, 最大表示优先级越高.
需要调整默认版本时, 执行
sudo update-alternatives --config python3
设置quickq代理 http代理 官网指定端口,不是本地quick 显示端口

export https_proxy=http://127.0.0.1:11000
export http_proxy=http://127.0.0.1:11000

硬件要求:

  • CPU核数越多越好。
  • 下载源码+二进制工具需要80+GB空间,编译Debug版本则需要多准备80GB空间。
  • 不管是虚拟机还是实机编译,最少准备 16GB 的系统内存。
    软件准备:
  • 好用的梯子(不多解释)
    环境准备
    由于我们是编译Android版本,而非桌面版本,按照谷歌的指南所写,不支持在Win和Mac系统上编译,所以我们只能选择Linux。当然,指南里也说明了整个chromium的开发也是全部在Ubuntu上完成的。为了避免任何额外麻烦,请大家使用 Ubuntu 或基于 Ubuntu 的发行版。
    环境要求:
  • Ubuntu
  • python3
  • make
  • git
所以我们就老老实实地配置好Ubuntu,装好python和git,完成准备工作。
sudo apt update
sudo apt install make git-core python3 -y

下载depot_tools
depot_tools是谷歌的一个内部工具集,用于完成大型项目的代码拉取和构建。要想下载完整的chromium源码+编译工具,必须使用depot_tools。
首先通过git下载depot_tools,找好合适的文件夹,然后执行命令:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
如果这一步下载失败或连接太慢,还有一个应急办法,直接下载最新的depot_tools的zip包,然后手动解压到当前目录即可。 链接: https://storage.googleapis.com/chrome-infra/depot_tools.zip
然后将depot_tools所在目录添加到PATH环境变量里,这样我们就可以使用depot_tools中的命令进行更新了。假设我们把 depot_tools 放在了 /home/user/depot_tools:

export PATH=$PATH:/home/user/depot_tools

如果觉得每次都要export比较麻烦,可以直接放入 ~/.bashrc 或 ~/.zshrc 文件,这样打开终端时会自动导入变量。到此depot_tools就设置完成了。
为了大家看下面步骤不会发懵,此处得简要介绍一下depot_tools中包含的内容。其实你打开depot_tools目录会发现它就是一系列python脚本以及对应的shell和cmd包装器。depot_tools主要包含以下部分:

  • bootstrap: 下载depot_tools以及自更新的指令,如下载指定版本的python。

  • fetch :用于第一次初始化项目。

  • gclient :拉取所有项目依赖代码并执行钩子函数。

  • cipd:用于下载大的二进制文件的工具。

  • vpython:用于隔离不同版本的python环境。(depot_tools会使用内置的固定版本python而不是系统的py解释器。)
    我们使用时基本上只用到 fetch 和 gclient 两个命令,所以了解它们即可。

     我们知道build.prop这个系统属性文件的生成Android——build.prop 解析,每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性,
    

java层使用
源码位于

 /frameworks/base/core/java/android/os/SystemProperties.java中:

get属性

  /*** Get the value for the given key.* @return an empty string if the key isn't found* @throws IllegalArgumentException if the key exceeds 32 characters*/public static String get(String key) {if (key.length() > PROP_NAME_MAX) {throw new IllegalArgumentException("key.length > " + PROP_NAME_MAX);}return native_get(key);}

c或者c++层

private static native String native_get(String key);
private static native void native_set(String key, String def);

使用这种方法完全可以避免CDP一切检测。因为我们就没有使用任何框架。

常见指纹检测指标

	指纹项
user_agent指纹
canvas指纹
webgl指纹\webgpu
platform平台
timezone时区
timezone_offset时区偏移量
languages语言
userAgentData、全版本号、内核类型等
platform
header 修改
deviceMemory
hardwareConcurrency
UNMASKED_VENDOR_WEBGL
UNMASKED_RENDERER_WEBGL
GL_VERSION
GL_SupportedExtensions
GL_VENDOR
GL_RENDERER
GL_SHADING_LANGUAGE_VERSION
是否webdriver
是否brave
是否selenium
是否来自于真实键盘
是否来自于真实鼠标
鼠标移动轨迹
键盘拼音输入法模拟输入
cdp检测
webRTC 公网ip4、局域网ip6
screen、屏幕尺寸、分辨率、色彩深度、devicePixelRatio等。
声卡指纹 、
字体列表
触控支持
电池电量等
client_rects

比如修改电量初始电量信息

charging: false
chargingTime: 0
dischargingTime: 17000
level: 0.61
onchargingchange: null
onchargingtimechange: null
ondischargingtimechange: null
onlevelchange: null

在这里插入图片描述
通过shell 终端先测试效果,后期集成到改机中。
在这里插入图片描述
执行后看一下效果。
在这里插入图片描述
结果就是那么丝滑,完全符合我们的效果。过两天继续写。项目已经完成了能过

https://www.browserscan.net/zh/
https://browserleaks.com/

检测
只是最近有点忙。后续慢慢把文章整理发出来。有需要的可以留言联系我
https://gitee.com/lb873100

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 翻译: 可视化深度学习反向传播原理二
  • CSS技巧专栏:一日一例 20-纯CSS实现点击会凹陷的按钮
  • 前端使用docx-preview展示docx + 后端doc转docx
  • HexView 刷写文件脚本处理工具-基本功能介绍(六)-导出MIME/BIN/FIAT/FORD
  • Android摄像头采集选Camera1还是Camera2?
  • 面试题:Java 集合类的遍历方式,如何一边遍历 一边删除?
  • 电子电气架构 --- 基于AUTOSAR方法论的诊断开发流程
  • 02、MySQL-DML(数据操作语言)
  • k8s 四种Service类型(ClusterIP、NodePort、LoadBalancer、ExternalName)详解
  • 【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
  • 如何高效管理餐厅?餐厅收银系统轻松解决!
  • pgbackrest备份方案(差异和增量备份的区别)
  • 如何在SpringBoot中进行单元测试?
  • Visual Studio Code搭建VUE开发环境
  • 【linux】curl命令用法
  • Angular2开发踩坑系列-生产环境编译
  • ES6 学习笔记(一)let,const和解构赋值
  • github指令
  • node 版本过低
  • SAP云平台里Global Account和Sub Account的关系
  • Vue组件定义
  • webpack入门学习手记(二)
  • 计算机常识 - 收藏集 - 掘金
  • 开源地图数据可视化库——mapnik
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 小程序开发之路(一)
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​力扣解法汇总946-验证栈序列
  • #etcd#安装时出错
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (1)Hilt的基本概念和使用
  • (备忘)Java Map 遍历
  • (黑马C++)L06 重载与继承
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一) springboot详细介绍
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .NET CF命令行调试器MDbg入门(一)
  • .NET CLR基本术语
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 中创建支持集合初始化器的类型
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET命名规范和开发约定
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .Net中间语言BeforeFieldInit
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • @Transient注解