JA3指纹介绍

背景介绍

前段时间做了一个看似很简单的需求,即爬取百度搜索内容,例如通过百度搜索“JA3指纹”。在编写程序测试过程中,发现无法正常采集到搜索结果。如下代码通过python requests工具访问百度搜索请求,会被百度安全验证拦截下来。

import requests

res = requests.get("https://www.baidu.com/s?wd=ssl%E6%8C%87%E7%BA%B9", 
    headers = {
   
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"
    }
)
res.encoding = "utf-8"
print(res.text)

但通过以下 curl 语句能够正常访问百度搜索结果。

curl 'https://www.baidu.com/s?wd=ssl%E6%8C%87%E7%BA%B9' \
  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' \
  --compressed

那么在目标网站、请求头、请求参数都相同的情况下,curl 与 requests 在网络请求过程中还有什么不同呢?由此引出本文介绍的对象“JA3指纹”(也称作SSL指纹、TLS指纹)。

什么是 JA3 指纹

JA3 指纹于2017年6月首次发布在 GitHub 上,是 Salesforce 研究人员 John Althouse、Jeff Atkinson和Josh Atkins 的作品。简单来说,JA3 是一种从 SSL/TLS Client Hello 数据包中提取字段并生成指纹用以识别特定客户端的技术,它于它不会随着客户端更换 IP 或者 User-Agent 而改变。JA3 指纹从一开始就说明客户端应用程序是否存在恶意。

JA3 是怎么生成的

回顾一下 https 建立连接的过程,能更直观的感受到 JA3 指纹是在什么位置生成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值