爬虫请求指纹检测与绕过 TLS/JA3/Http2

news2024/9/24 21:26:35

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除

作者:zhu6201976

一、什么是请求指纹检测?

TLS/JA3、HTTP/2 指纹检测是一种网络流量分析技术,用于识别和分析网络通信中使用的加密协议和通信特征。这些技术通常用于网络安全领域,以便检测恶意活动或进行流量分析。以下是对每个概念的详细描述:

1.TLS(Transport Layer Security)

  • 定义: TLS是一种安全通信协议,用于在两个通信应用程序之间提供保密性和数据完整性。
  • 功能: TLS通常用于在Web浏览器和服务器之间加密数据传输,确保通信的机密性,防止数据被窃听或篡改。
  • TLS指纹检测: TLS指纹检测是通过分析TLS握手过程中的参数,如客户端和服务器支持的加密套件,生成唯一的标识符(指纹)。这有助于识别特定应用程序或设备的TLS实现。

2.JA3(TLS Fingerprinting)

  • 定义: JA3是一种用于识别TLS客户端的指纹生成技术。
  • 功能: JA3通过分析TLS握手中客户端发送的信息,如支持的加密算法、TLS版本等,生成一个唯一的字符串,代表客户端的TLS行为。
  • JA3指纹检测: JA3指纹检测用于追踪和识别TLS客户端的特征,有助于发现不同设备或应用程序使用的TLS配置。

3.HTTP/2

  • 定义: HTTP/2是HTTP协议的一种新版本,用于提高Web性能和效率。
  • 功能: HTTP/2引入了多路复用、头部压缩等功能,以减少延迟和提高网络性能。
  • HTTP/2指纹检测: HTTP/2指纹检测通过分析网络通信中的HTTP/2协议头部,识别使用HTTP/2的通信流量。这有助于了解网站或应用程序是否采用了HTTP/2协议。

二、如何绕过请求指纹检测?

1.通过原生JS实现请求

原理:网页运行在浏览器中,浏览器所支持的官方语言是JS,因此,通过原生JS构造并发送请求,其TLS/JA3指纹是正常的,理论上不会被拦截。

2.实现了指纹篡改的第三方请求库

某些第三方请求库,底层修改了TLS/JA3的生成方式,因此可以绕过这些检测。

如:

Python的curl_cffi库GitHub - yifeikong/curl_cffi: Python binding for curl-impersonate via cffi. A http client that can impersonate browser tls/ja3/http2 fingerprints.

Go语言版的requests

GitHub - asmcos/requests: A golang HTTP client library. Salute to python requests.

3.wget等Linux命令

在所有的请求工具中,wget请求指纹暂未被列如黑名单,实测可以成功拿到正确响应

三、实战案例

1.url

aHR0cHM6Ly9kb29kcy5wcm8vZS9jMHh2NGplYjdtbmE=

2.说明

该网站使用了简单的CloudFlare风控,而简单版的CloudFlare风控底层检测了常见语言的请求库TLS/JA3指纹,收集并列入了黑名单。因此,非浏览器的请求指纹理论上都会被拒绝响应,比如返回如下信息:

<!DOCTYPE html>
<html lang="en-US">
    <head>
        <title>Just a moment...</title>
    </head>
</html>

一旦检测到非浏览器指纹请求,则返回类似 Just a moment... 错误信息。

3.绕过

此处采用最简单的Python第三方请求库curl_cffi实现绕过,代码如下:

from base64 import b64decode

import requests
from curl_cffi import requests as req

url = b64decode('aHR0cHM6Ly9kb29kcy5wcm8vZS9jMHh2NGplYjdtbmE=').decode('utf-8')
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
}
resp1 = requests.get(url, headers=headers)
print('resp1', resp1.text)

resp2 = req.get(url, headers=headers, impersonate='chrome110')
print('resp2', resp2.text)

运行结果:

显然,同一个url,curl_cffi成功拿到了正确响应。

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

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

相关文章

阿里云k8s集群搭建

文章目录 一、安装前准备1.环境2.k8s集群规划 二、k8s 安装1. centos基础设置2. docker 安装3. k8s安装3.1 添加阿里云 yum 源3.2 安装 kubeadm、kubelet、kubectl3.3 部署 Kubernetes Master3.4 加入 Kubernetes Node3.5 部署 CNI 网络插件3.6 测试 kubernetes 集群 一、安装前…

MATLAB - 最优控制(Optimal Control)

系列文章目录 前言 - 什么是最优控制&#xff1f; 最优控制是动态系统满足设计目标的条件。最优控制是通过执行以下定义的最优性标准的控制律来实现的。一些广泛使用的最优控制方法有&#xff1a; 线性二次调节器 (LQR)/线性二次高斯 (LQG) 控制 模型预测控制 强化学习 极值…

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜A/B

老规矩&#xff0c;看目录&#xff0c;平均3-5题 文章目录 A/B2023真题&#xff08;2023-19&#xff09;-A-选项特点&#xff1a;两个等号&#xff1b;-判断需联立的难易&#xff1a;难&#xff0c;看着感觉需要联立&#xff0c;所以判断联立需要有理论支撑&#xff0c;不然还…

【AI美图】第08期效果图,AI人工智能3D效果图,让创意和想象力在一张简单的底图上绽放!

让创意和想象力在一张简单的底图上绽放 探索未来&#xff0c;体验无限可能&#xff01;我们的AI技术可以将一张简单的底图转化为令人惊叹的3D效果图&#xff0c;让你瞬间拥有超凡的视觉体验。无论是房屋建筑、汽车设计、游戏开发&#xff0c;还是艺术创作&#xff0c;我们的AI…

LabVIEW开发振动数据分析系统

LabVIEW开发振动数据分析系统 自动测试系统基于LabVIEW平台设计&#xff0c;采用了多种高级硬件设备。系统的硬件组成包括PCB振动加速度传感器&#xff0c;这是一种集成了传统压电加速度传感器和电荷放大器的先进设备&#xff0c;能够直接与采集仪器连接。此外&#xff0c;系统…

漏洞复现-亿赛通任意文件读取漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

鸿蒙ArkTS语言介绍与TS基础法

1、ArkTS介绍 ArkTS是HarmonyOS主力应用开发语言&#xff0c;它在TS基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等响应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 JS 是一种属于网络的高级脚本语言&#xff0c;已经被广泛用…

精通服务器远程管理:全面指南

引言 在当今数字化世界中&#xff0c;IT专业人员和管理员能够远程管理服务器的能力是无价之宝。远程服务器管理不仅提高了效率&#xff0c;而且在无法物理访问服务器的情况下确保了持续的运营。本指南将深入探讨远程管理的不同类型、远程桌面的使用方法&#xff0c;以及如何安全…

ie-tab插件平替插件IEability-Open in IE

ie-tab插件仅可试用两周&#xff0c;之后就要收费 IEability-Open in IE可以平替 IE tab 下载IEability.exe并进行安装 在浏览器的输入界面输入搜索内容&#xff0c;点击插件按钮即可进入IE模式

sectigo多域名通配符证书

多域名通配符SSL证书是一种特殊的SSL证书&#xff0c;它综合了多域名SSL证书和通配符SSL证书的特点&#xff0c;可以同时保护多个泛域名以及它的主域名&#xff0c;适合域名多&#xff0c;子域名也比较多的单个或多个站点使用。今天就随SSL盾小编了解Sectigo旗下的DV多域名通配…

Node.js 工作线程与子进程:应该使用哪一个

Node.js 工作线程与子进程&#xff1a;应该使用哪一个 并行处理在计算密集型应用程序中起着至关重要的作用。例如&#xff0c;考虑一个确定给定数字是否为素数的应用程序。如果我们熟悉素数&#xff0c;我们就会知道必须从 1 遍历到该数的平方根才能确定它是否是素数&#xff…

基于YOLOv8的结核病预测系统设计与实现

一、项目背景 本系统的目的是通过痰液图像来检测出结核杆菌的携带者&#xff0c;及时采取治疗措施&#xff0c;在病情早期对其进行相关治疗减少结核病的传播。程序使用的样本是经过染色处理可以使得结核杆菌在显微镜拍摄的医学图像&#xff0c;通过检测医学图像中的结核杆菌诊…

ros2 学习03-开发工具vscode 插件配置

VSCode插件配置 为了便于后续ROS2的开发与调试&#xff0c;我们还可以安装一系列插件&#xff0c;无限扩展VSCode的功能。 中文语言包 Python插件 C插件 CMake插件 vscode-icons ROS插件 Msg Language Support Visual Studio IntelliCode URDF Markdown All in One VSCode支持的…

架构设计到底是什么?

文章目录 架构设计有哪些内容&#xff1f;架构原理与技术认知分布式技术原理与设计中间件常用组件的原理和设计问题数据库原理与设计问题分布式缓存原理与设计问题互联网高性能高可用设计问题 技术认知架构分析问题分析能力边界 架构设计&#xff0c;是中高级研发工程师逃不开的…

什么是集成测试?它和系统测试的区别是什么? 操作方法来了

01 什么是集成测试&#xff1f; 集成测试是软件测试的一种方法&#xff0c;用于测试不同的软件模块之间的交互和协作是否正常。集成测试的主要目的是确保不同的软件模块能够无缝协作&#xff0c;形成一个完整的软件系统&#xff0c;并且能够满足系统的需求和规格。 在集成测试…

理解pom.xml中的parent标签

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

【设计模式--结构型--适配器模式】

设计模式--结构型--适配器模式 适配器模式概述结构案例类适配器模式对象适配器模式 应用场景 适配器模式 概述 将一个类的接口转换成客户希望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类适配器模式和对象适配器模式…

《opencv实用探索·二十一》人脸识别

Haar级联分类器 在OpenCV中主要使用了两种特征&#xff08;即两种方法&#xff09;进行人脸检测&#xff0c;Haar特征和LBP特征。用的最多的是Haar特征人脸检测。 Haar级联分类器是一种用于目标检测的机器学习方法&#xff0c;它是一种基于机器学习的特征选择方法&#xff0c;…

如何下载知网论文、专利的PDF格式

知网的论文格式有其特有的格式&#xff1a;CAJ。将CAJ格式转化为Word或者PDF非常麻烦&#xff0c;且会出现乱码的情况&#xff0c;直接用知网官方的CAJ浏览器也不太方便。为此&#xff0c;困扰了许久。 其实&#xff0c;知网可以直接下载PDF格式&#xff0c;只需在浏览器上安装…

【halcon深度学习】create_dl_model_detection

基本介绍 create_dl_model_detection 不是一个封装的库函数&#xff0c;是一个算子。用于创建用于目标检测或实例分割任务的深度学习模型。 输入参数&#xff1a; Backbone (input_control): 指定用作背骨网络的深度学习分类器&#xff0c;充当模型的基础。用户可以选择不同的…