目录
一、ja3指纹介绍
-
1、
指纹
:通过一些算法将一些特征加密得到的值,这些值往往能够区分你是谁。每个客户端会生成特定的
ja3指纹
,并不会随ip和useragent改变,
通过ja3指纹可以定位识别到某个客户端
(不限于浏览器、python等) -
2、
chrome浏览器
查看ja3指纹:
https://ja3er.com/json
,或者
https://ja3er.com/
-
3、
python的requests包
查看ja3指纹import requests headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36",} res = requests.get("https://ja3er.com/json", headers=headers, timeout=10) print(res.json()) # {'ja3_hash': '77b2140d11c959ef7cc4e15405e0860b', 'ja3': '771,157-156-49196-49200-49327-49325-49188-49192-49162-49172-163-159-52394-49315-49311-162-158-49314-49310-107-106-196-195-103-64-190-189-57-56-136-135-51-50-69-68-49195-49199-49326-49324-49187-49191-49161-49171-49313-49309-49312-49308-61-60-53-47-192-186-132-65-52393-52392-49267-49271-49266-49270-255,0-11-10-35-22-23-13-21,29-23-25-24,0-1-2', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67'}
-
4、
抓包工具Wireshark
查看ja3指纹:在其展示的
Client Hello数据包
示例。首先得
下载最新版Wireshark
,不然可能看不到ja3指纹。如图看到两个ja3指纹,第一个是ja3相关的5个特征指纹,第二个则是将第一个进行了MD5哈希值计算生成的,通过hash值可以确定ja3指纹是否一样
-
5、
ja3指纹
计算规则由5个字段组成:更多详细
参考文章1
,
参考文章2
,
参考文章3
,Wireshark上的十六进制数(如
0x0303
)即如下图片展示的数字。Cipher Suites扩展
CIPHER SUITE NAMES查询映射关系
二、ja3指纹解决方案
- 据前辈们踩坑:python有缺陷暂无法绕过校验严格的ja3指纹检测
-
但是
go和js
可以设置ja3指纹正常请求,具体的待继续研究