2024-05-06 14:02:05作者介绍一名的爬虫工程师,专注于数据采集与分析领域的技术探索与创新。
专业技能
逆向分析:擅长JS逆向、APP协议分析、加密算法还原,解决各类数据获取难题
框架设计:构建过多个可扩展的爬虫框架,注重代码复用性和系统稳定性
技术栈:Python/JavaScript/Go,熟悉Redis、MongoDB、Kafka等中间件的应用场景
我的博客这个博客是我的技术分享平台,主要记录:
复杂网站爬取案例分析与实战
反爬技术的最新发展与对抗策略
爬虫系统设计与性能优化心得
数据处理与分析的实用技巧
希望我的技术分享能为同行提供启发,也欢迎志同道合的朋友一起交流探讨!
“数据是这个时代的新石油,而爬虫技术是开采这些宝贵资源的关键工具。”
前言最近在研究reCAPTCHA,现在让我们来分析下
参数定位毫无疑问这个就是我们要分析的主要参数
js解密定位这个是js的解密位置相信熟悉这个算法应该看出来了这个就是一个protobuf编码最后转一下Unicode
就会得到这个数据,这个解码后得数据剩下得就下次来分析8这个参数得具体算法
完整流程[开始hCaptcha验证] –> [接收JWT令牌] –>[分析关键参数] –>[发送请求]
n值数据生成n值是由浏览器的环境和一些指纹生成的下面我将来分析下这个算法
算法部分hcaptcha这个部分核心的算法是在wasm里面和vmp里面的通过解混淆我们知道这个是一个AES的加密算法但它的key和iv分别在wasm里
提取key我们可以直接引用wasm里生成好的key
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283def _generate_n_key(self): seed = self.key_factors["seed"] key_factor1 = self.key_factors["key_factor1"] key_facto ...
hcaptcha流程分析1.1 请求页面
https://api.hcaptcha.com/checksiteconfig?v=e34a17199a5ad5f79373a8e86f1f5508fb0d8531&host=nopecha.com&sitekey=58366d97-3e8c-4b57-a679-4a41c8423be3&sc=1&swa=1&spst=1
1.2 获得加密的hsw
get请求https://newassets.hcaptcha.com/c/b1d89b0e99726b0c6df690327c8273a6bf094a3b04015d98a388fafe79963a6f/hsw.js
1.3 验证接口法验证接口https://api.hcaptcha.com/checkcaptcha/58366d97-3e8c-4b57-a679-4a41c8423be3/E0_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoiRFRkYWkvVVowOFd3OGEzRkFWMkpRNHlX ...
前言最近有事情所以拖了蛮久的,现在我们来分析下Akamai的算法。我将更侧重算法层的分析
设备指纹12345678{ userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", screen: { width: 1920, height: 1080, colorDepth: 24 }, timezone: "Asia/Shanghai", language: "zh-CN", platform: "Win32", timestamp: Date.now()};
我简单举个例子这个是环境的参数是可以直接参加计算的
生成传感器数据对象1234567891011121314151617181920212223242526272829303132{ ...
前言perimeterx分为有感和无感,但整体纯算的逻辑都大差不差现在让我们来分析下
毫无疑问这就是我们要逆向分析的参数,但我们要讨论的是PerimeterX的风控
AST混淆器分析老实说AST混淆器实际上是有一定的混淆的,还有一定的反检测代码这个就是一个混淆器同时也是环境检测的关键代码。
加密位置解析这个的话是PerimeterX的核心逻辑,这个是待加密字符串–>xor异或50—->得到的数组—>重排算法这个是生成的一些结果
PerimeterX检测环境代码检测
环境检测
结尾PerimeterX的风控比较简单,但更多的是提升逆向分析的能力,相关的算法要十分的熟练请原谅我不能直接的告诉你这个算法具体是什么,风控点和流程都是什么本文重心是思想
Akamai多层次环境检测机制浏览器环境指纹检测API 存在性检测硬件设备特征检测用户行为模式检测自动化工具检测
核心检测点分类navigator.webdriver // 自动化工具检测navigator.mediaDevices // 媒体设备APInavigator.serviceWorker // Service Worker支持navigator.bluetooth // 蓝牙APInavigator.getBattery() // 电池APInavigator.getGamepads() // 游戏手柄APInavigator.javaEnabled() // Java支持navigator.permissions // 权限APInavigator.platform / ...
前言此文是接着前面的博客分析,那么让我们来分析下datadome的核心算法特点
前端环境检测及参数收集
算法种子这个是datadome初始化的种子部分
datadome的算法特殊性这不是标准的“可逆加密”算法(如 AES、DES),而是“对称混淆”。它的“密钥”就是payload内容+时间戳,缺一不可。这也是 DataDome 这类反爬虫/验证码厂商常用的防伪造手段:只有前端和服务端都能同步生成同样的payload和时间戳,才能正确加解密。
结果展示
前言最近在找工作没时间深入的分析算法了就简单的谈下风控
浏览器环境信息浏览器指纹收集阶段收集浏览器环境信息navigator属性、屏幕属性、时区等生成Canvas指纹检测WebGL信息检测自动化工具特征收集硬件信息(处理器核心数等)
哈希计算阶段对收集的指纹信息进行字符串化使用自定义哈希算法处理数据应用64位整数操作(add64, multiply64, xor64等)生成初始指纹哈希值
前言datadome这个验证码在很多的网站都用到了那么今天来分析下
还原16进制算法对字面量解混淆就行,这个是常见的字面量都可以解决
123456789101112131415161718192021222324252627282930313233343536373839function hexToChar(str) { if (typeof str !== 'string') return str; return str.replace(/\\x([0-9A-Fa-f]{2})/g, (match, hex) => { return String.fromCharCode(parseInt(hex, 16)); });}traverse(ast, { // 处理字符串字面量 StringLiteral(path) { const value = path.node.value; if (path.no ...









