爬虫与反爬-Ja3指纹风控(Just a moment...)处理方案及参数说明

概述:本文将针对 Ja3 指纹检测风控进行处理,举例了一个案例并使用两种不同的破解方案进行突破,同时深入了解指纹间不同字符所代表的含义

指纹检测背景:

1、每一个设备、软件都有独属于自己的设备信息、版本号、加密算法、椭圆算法等等,而ja3指纹就是将这些信息进行了一个非常复杂的计算后得到的产物,在不做特殊处理的情况下,部分网站会短时间内大量相同指纹的请求视为爬虫进行封禁。

2、在使用requests这个模块的时候,由于requests这个模块底层调用的是ssl进行请求导致ja3指纹无法做出有效的调整,这个是这个模块的缺陷,包括目前市面上对requests进行指纹的修改大部分都是无效的(反编译或修改源文件的除外)

3、突破方案:目前突破的方案有多种

        1、使用大佬改魔改的 curl_cffi 模块进行请求,但这种由于封装的太过于完善了,好处是用法简单,坏处是不能 “随心所欲”;

        2、使用 pyhttpx 或 request-go 等模块进行自定义 ja3 指纹进行请求;

        3、使用 js、go语言发起请求能够有效解决(因为主要讲的是python我这里先pass了)

特征:

1、响应数据里面出现 Just a moment... 等字样

2、在确保参数无问题的情况下对 curl 重放是成功的,但放在 python 或 js 代码中执行失败

好了废话不多说,直接开始

目标网站:aHR0cHM6Ly9waXhhYmF5LmNvbQ==

======= 正文开始 =======

一、首先对网站进行请求,确认风控类型

复制 curl 转 requests,放在python里请求发现非常明显的特征 Just a moment...,基本上看见这个大概率就确认是指纹检测了

响应结果:

二、风控突破(curl_cffi 模块)

目前市面上是有个国外的大神模拟好主流的浏览器指纹并封装好的模块 —— curl_cffi

官方链接:https://github.com/lexiforest/curl_cffi

优点:用法简单,可以无脑 requests,同时跟requests用法基本一致

缺点:面对较为严格的网站还是会出现无法请求的情况,同时无法自定义指纹

以上述网站为例:

from curl_cffi import requests
url = "https://pixabay.com/zh/videos/search/"
params = {"pagi": "13"
}
response = requests.get(url,headers=headers,params=params,impersonate="chrome101")
print(response.text)
print(response)

运行结果:

这个时候响应的结果就正常了,同时他支持以下浏览器的版本:

备注:当出现chrome浏览器过不了的时候可以尝试一下使用苹果的浏览器 safari 说不定有奇效

  • chrome99
  • chrome100
  • chrome101
  • chrome104
  • chrome107
  • chrome110
  • chrome116
  • chrome119
  • chrome120
  • chrome123
  • chrome124
  • chrome99_android
  • edge99
  • edge101
  • safari15_3
  • safari15_5
  • safari17_0
  • safari17_2_ios
  • safari18_0
  • safari18_0_ios

三、风控突破(自定义 ja3 ,pyhttpx模块)

当遇到一个比较强的 ja3 检测的时候,这个时候 curl_cffi 可能效果就会不尽人意,这个时候就需要自己定义一个ja3的指纹来进行访问,这里比较推荐的是使用 pyhttpx 模块,这个模块还有一个很强的地方,就是会固定住请求头的顺序(有部分网站会检测请求头字典的顺序)

1、获取自己的指纹

在实现自定义Ja3之前要先了解指纹,首先获取自己的指纹,这个网站是有非常多的,可以挑一个自己喜欢的

https://tools.scrapfly.io/api/fp/ja3

https://tls.browserleaks.com/json

https://tls.peet.ws/api/clean

2、指纹参数说明

"""
假设ja3指纹是:原始ja3:771,4865-4866-4867-41195-49199-49296-49100-52393-52392-41171-49172-156-157-47-53,65281-18-27-43-0-5-51-13-11-17513-35-41-28-16-10-21,29-23-24,0-1-2
771: tls版本号(0x0303是771的十六进制)
4865-4866-4867-41195-49199-49296-49100-52393-52392-41171-49172-156-157-47-53:加密套件,用于协商在通信中使用的加密算法和参数
65281-18-27-43-0-5-51-13-11-17513-35-41-28-16-10-21:扩展信息,用于提供额外的功能或参数
29-23-24:椭圆曲线算法的标识符列表,用于在密钥交换中选择椭圆曲线算法
0-1-2:压缩算法的标识符列表,用于协商在通信中使用的压缩算法
"""

3、设置自定义的指纹

使用上面的网站获取自己的指纹,然后携带指纹进行请求

代码:

import pyhttpxja3 = "771,4865-xxxx-xxx 自己的ja3指纹"
sess = pyhttpx.HttpSession(http2=True, ja3=ja3)
url = "https://pixabay.com/zh/videos/search/"
params = {"pagi": "13"
}
response = sess.get(url,headers=headers,params=params)
print(response.text)
print(response)

有一个特别重要的重点!!

扩展信息:65281-18-27-43-0-5-51-13-11-17513-35-41-28-16-10-21中,

41属于会话恢复扩展,打开新的浏览器第一次访问是没有的,只有重新建立tcp连接,才会携带上次的信息,所以在采集的时候一定要把 41 给去掉!!

这也是我在采集目标网站的时候这里踩了很大的坑

携带 41 进行请求,报错 TCP 握手失败

去掉41后请求恢复正常:

 总结:

目前使用 curl_cffi 的方法是比较简单的也很适合小白,但是如果需要进阶一点的话比较推荐pyhttpx,自由度也会更高一点,如果有不懂的或者有爬虫单子的话欢迎私聊。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——排序算法第二幕(交换排序:冒泡排序、快速排序(三种版本) 归并排序:归并排序(分治))超详细!!!!

文章目录 前言一、交换排序1.1 冒泡排序1.2 快速排序1.2.1 hoare版本 快排1.2.2 挖坑法 快排1.2.3 lomuto前后指针 快排 二、归并排序总结 前言 继上篇学习了排序的前面两个部分:直接插入排序和选择排序 今天我们来学习排序中常用的交换排序以及非常稳定的归并排序 快排可是有多…

华为云云连接+squid进行正向代理上网冲浪

1 概述 ‌Squid‌是一个高性能的代理缓存服务器,主要用于缓冲Internet数据。它支持多种协议,包括FTP、gopher、HTTPS和HTTP。Squid通过一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求,这使得它在处理请求时具有较高的效率‌。…

杰发科技AC7803——不同晶振频率时钟的配置

计算公式 PLL_POSDIV [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62] PLL_PREDIV_1 1 2 4 USE_XTAL 24M SYSCLK_FREQ 64M SYSCLK_DIVIDER 1 VCO USE_XTAL*…

攸信技术:运动文化激发企业活力,赋能体育行业新未来

在攸信技术,运动文化如同春日暖阳,温暖着每一位员工的心。这份文化,源自盈趣科技的深厚底蕴,橙色不仅传递着3POS文化中的激情与活力,更成为了攸信人共同的精神标识。公司的每一个角落,都洋溢着对运动的热爱…

【ubuntu24.04】GTX4700 配置安装cuda

筛选显卡驱动显卡驱动 NVIDIA-Linux-x86_64-550.135.run 而后重启:最新的是12.6 用于ubuntu24.04 ,但是我的4700的显卡驱动要求12.4 cuda

LightRAG - 更快更便宜的GraphRAG

检索增强生成(Retrieval-Augmented Generation, RAG)已经成为提升大型语言模型(LLMs)能力的重要方法之一,通过整合外部知识,显著改善了生成内容的质量和相关性。 RAG 的局限性 传统的 RAG 系统虽然表现优…

TCP/IP协议攻击与防范

一、TCP/IP协议攻击介绍 1.1 Internet的结构​ LAN:局域网 WAN:广域网 WLAN:无线局域网 私有IP地址与公有IP地址? 私有地址:A类:10.0.0.0~10.255.255.255 B类:172.16.0.0~172.31.255.255…

机器学习模型——线性回归

文章目录 前言1.基础概念2.代价函数3.单变量线性回归3.1加载数据3.2初始化超参数3.3梯度下降算法3.3.1初次梯度下降3.3.2 多次梯度下降3.3.3结果可视化 前言 随着互联网数据不断累积,硬件不断升级迭代,在这个信息爆炸的时代,机器学习已被应用…

Flink CDC 使用实践以及遇到的问题

背景 最近公司在做一些业务上的架构调整,有一部分是数据从mysql采集到Starrocks,之前的一套方法是走 debezium 到 puslar 到 starrocks,这一套下来比较需要配置很多东西,而且出现问题以后,需要修改很多配置,而且现阶段…

Pgsql:json字段查询与更新

1.查询json字段的值 SELECT attribute_data->>设施类别 mycol, * FROM gis_coord_data WHERE attribute_data->>设施类别阀门井 查询结果如下: 2.更新json字段中的某个属性值 UPDATE gis_coord_data SET attribute_data(attribute_data::jsonb ||{&quo…

DAMODEL丹摩 | 关于我部署与使用FLUX.1+ComfyUI生成了一位三只手的jk美少女这回事

DAMODEL丹摩 | 关于我部署与使用FLUX.1ComfyUI生成了一位三只手的jk美少女这回事 最终效果图FLUX.1简介部署流程1. 创建资源2. 登录实例3. 部署ComfyUI4. 部署FLUX.1 使用流程1. 运行FLUX.1 导入工作流 声明:非广告,为用户使用体验分享 最终效果图 FLUX.…

d3-contour 生成等高线图

D3.js 是一个强大的 JavaScript 库,用于创建动态、交互式数据可视化。d3-contour 是 D3.js 的一个扩展模块,用于生成等高线图(contour plots)。 属性和方法 属性 x: 一个函数,用于从数据点中提取 x 坐标。y: 一个函…

微信小程序 城市点击后跳转 并首页显示被点击城市

在微信小程序中,渲染出城市列表后,如何点击城市,就跳转回到首页,并在首页显示所点击的城市呢? 目录 一、定义点击城市的事件 二、首页的处理 首页:点击成都市会跳转到城市列表 城市列表:点击…

Web 学习笔记 - 网络安全

前言 作为 前端开发者,了解一点 Web 安全方面的基本知识是有很必要的,未必就要深入理解。本文主要介绍常见的网络攻击类型,不作深入探讨。 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描、弱口令暴力破解,…

JavaEE---计算机是如何工作的?

1.了解冯诺依曼体系结构 2.CPU的核心概念,CPU的两个重要指标(核心数和频率) 3.CPU执行指令的流程(指令表,一条一条指令,取指令,解析指令,执行指令) 4.操作系统核心概念(管理硬件,给软件提供稳定的运行环境) 5.进程的概念(运行起来的程序和可执行文件的区别) 6.进程的管理(…

【pyspark学习从入门到精通21】机器学习库_4

目录 评估模型的性能 保存模型 参数超参数调整 网格搜索 评估模型的性能 显然,我们现在想测试我们的模型表现得如何。PySpark 在包的 .evaluation 部分提供了一些分类和回归的评估方法: import pyspark.ml.evaluation as ev 我们将使用 BinaryClas…

788页页大型集团财务集中管控平台项目总体规划方案全文深入解读

“大型集团公司财务集中管控平台项目”的总体规划方案,内容全面且详细,主要涵盖以下几个方面: 1. 项目概述:介绍了项目的背景、目标、预期收益、设计思路与方法及原则。项目旨在全面提升财务集中管控能力,提高财务价值…

mac下安装Ollama + Open WebUI + Llama3.1

本文介绍mac下安装Ollama Open WebUI Llama3.1 8b具体步骤。 目录 推荐配置Ollama Open WebUI Llama3.1简介安装Ollama安装Open WebUI 推荐配置 m1以上芯片,16g内存,20g以上硬盘空间 Ollama Open WebUI Llama3.1简介 Ollama: 下载,管理…

C 语言函数递归探秘:从基础概念到复杂问题求解的进阶之路

我的个人主页 我的专栏:C语言,希望能帮助到大家!!!点赞❤ 收藏❤ 目录 什么是函数递归递归的基本组成递归的工作原理递归的优缺点递归的经典案例 5.1 阶乘计算5.2 斐波那契数列5.3 汉诺塔问题5.4 二分查找 递归的高级…

Rust语言俄罗斯方块(漂亮的界面案例+详细的代码解说+完美运行)

tetris-demo A Tetris example written in Rust using Piston in under 500 lines of code 项目地址: https://gitcode.com/gh_mirrors/te/tetris-demo 项目介绍 "Tetris Example in Rust, v2" 是一个用Rust语言编写的俄罗斯方块游戏示例。这个项目不仅是一个简单…