008.编译自己的指纹浏览器-随机tls指纹(ja3指纹)

编译自己的指纹浏览器-随机tls指纹(ja3指纹)

一、什么是TLS指纹和JA3指纹

TLS指纹:
  • TLS指纹通常是基于TLS握手过程中客户端发送给服务器的TLS客户端Hello消息。
  • 这个消息包括了多个字段,比如所支持的加密套件列表、压缩方法、TLS版本以及扩展等。每种浏览器或客户端软件在与服务器建立TLS连接时,因为它们实现TLS标准的方式略有不同,会生成不同的客户端Hello信息。
  • 通过收集和分析这些信息,可以生成一个“指纹”。
JA3指纹:
  • JA3是一种特定的TLS指纹技术方法,由Salesforce团队开发。
  • 它创建了一种结构化的方法来表示TLS握手中的无变量部分,包括TLS版本、可接受的加密算法、扩展等,并将这些元素组合为一个MD5哈希值。
  • 不同版本的浏览器会有不同的JA3指纹。

二、如何在线获取自己的tls指纹

  • 网址1:https://tls.peet.ws/
  • 网址2:https://browserleaks.com/tls

三、chromium编译-随机tls指纹

  • 首先假设你已经编译成功了,我也在第一篇文章写了如何编译chromium的大概流程。
  • 打开源码文件third_party/boringssl/src/ssl/ssl_cipher.cc
1.头部加上(随便加在一个#include后面)
#include <algorithm>
#include <random>
#include <iostream>
2.找到下面的代码
  static const uint16_t kLegacyCiphers[] = {
      TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA256 & 0xffff,
      TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 & 0xffff,
      TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 & 0xffff,
      TLS1_CK_RSA_WITH_AES_128_SHA & 0xffff,
      TLS1_CK_PSK_WITH_AES_128_CBC_SHA & 0xffff,
      TLS1_CK_RSA_WITH_AES_256_SHA & 0xffff,
      TLS1_CK_PSK_WITH_AES_256_CBC_SHA & 0xffff,
      SSL3_CK_RSA_DES_192_CBC3_SHA & 0xffff,
  };

可以看到加密方式在chromium中是写死的,顺序也是。我们不能随意删减加密方式,但我们给他随机打乱还是可以的。

替换为
  static uint16_t kLegacyCiphers[] = {
      TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA & 0xffff,
      TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA256 & 0xffff,
      TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 & 0xffff,
      TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 & 0xffff,
      TLS1_CK_RSA_WITH_AES_128_SHA & 0xffff,
      TLS1_CK_PSK_WITH_AES_128_CBC_SHA & 0xffff,
      TLS1_CK_RSA_WITH_AES_256_SHA & 0xffff,
      TLS1_CK_PSK_WITH_AES_256_CBC_SHA & 0xffff,
      SSL3_CK_RSA_DES_192_CBC3_SHA & 0xffff,
  };

size_t arraySize = sizeof(kLegacyCiphers) / sizeof(kLegacyCiphers[0]);
std::random_device rd;
std::mt19937 rng(rd());
std::shuffle(kLegacyCiphers, kLegacyCiphers + arraySize, rng);
for (const auto& value : kLegacyCiphers) {
	std::cout << std::hex << value << std::endl;
}

这样加密顺序就打乱了。

3.编译
ninja  -C  out/Default chrome
  • 编译后每次刷新时tls指纹都是随机的了。

四、心里烦

哪里有工资高还不累的工作啊。。烦死了。路漫漫修远,道阻水也长。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王辉辉的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值