吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2246|回复: 16
上一主题 下一主题
收起左侧

[Web逆向] 另辟蹊径:基于浏览器脚本与中间人拦截的瑞数“异步”解决方案

[复制链接]
跳转到指定楼层
楼主
ai474427793 发表于 2025-10-31 00:52 回帖奖励

💡 【原创分享】另辟蹊径:基于浏览器脚本与中间人拦截的瑞数“异步”解决方案

一、引言:复杂瑞数环境下的痛点与思考

各位吾爱大佬们、朋友们,大家好!

近期在处理某瑞数防护的网站时,相信不少同行都深有体会,其复杂的JS混淆、请求参数和Cookie的生成机制,让传统的爬虫或逆向分析变得异常困难且耗时。

我通过网络搜索和B站视频学习,发现主流的解决方案往往过于复杂(涉及大量AST、JS还原或模拟执行),或者是一些培训机构的引流内容,难以找到一种相对简单、快速、且行之有效的应对思路。

因此,我一直在思考:有没有一种“非传统”的、能绕开复杂JS逻辑分析,直接获取所需参数和Cookie的相对简单方法?


二、传统解决方案的挑战回顾

解决方案 挑战与局限性
纯逆向分析 JS代码极其复杂且动态变化;需要耗费大量时间进行AST还原和逻辑分析。
纯模拟执行 成本高昂;需完整模拟浏览器环境(window, document等);瑞数会检测环境。
主流培训引流 知识点分散,缺乏完整易懂的Demo;最终目的是付费培训,非真正分享。

正是基于这些痛点,我探索出了一种利用浏览器自身环境优势并结合外部拦截的“异步”解决方案。


三、核心思路:利用“黑盒”浏览器环境与中间人拦截

我的解决方案核心思路非常直接:既然瑞数的JS逻辑非常复杂,难以在外部环境(如Node.js)中中完整重现,那就让它在最擅长的环境——浏览器中运行!

1. 🔑 关键点:浏览器执行与发包的拦截

我们知道,瑞数会重写浏览器中的发包函数(如XMLHttpRequest.prototype.sendfetch),以便在发送请求时动态加上所需的动态参数或更新Cookie

  • 执行端(浏览器): 我通过填表(即在浏览器控制台或通过Selenium/Puppeteer等工具)执行特定的发包脚本,触发一个预期的请求。
  • 发包脚本: 这个脚本可以是简单的fetchXMLHttpRequest,但它会被瑞数的JS逻辑所拦截和修改。
  • 中间人端(Burp/Fiddler/mitmproxy): 在浏览器执行发包脚本后,瑞数JS必然会拦截并修改这个即将发出的请求,使其携带正确的参数和Cookie。
2. 🛡️ 方案实现步骤
  1. 设置中间人代理: 确保浏览器所有流量经过中间人工具(如mitmproxy)。
  2. 浏览器端操作: 通过自动化工具或手动在控制台执行一个**“触发”发包**的JS脚本。

    示例(伪代码): document.cookie='xxx'; fetch('目标URL?params=trigger', {headers:{...}})

  3. 中间人拦截: 拦截所有从浏览器发出的请求。
  4. 定位与存储: 识别那个带有正确瑞数参数/Cookie的特定请求(例如,通过请求的特定trigger参数或头部)。
  5. 数据提取: 从该被拦截的请求中,提取出:
    • 动态URL后缀/参数
    • 动态Cookie
  6. 后续使用: 将这些提取到的参数/Cookie用于后续的HTTP请求库(如Python的requests)中。

四、技术难点与“异步”特性分析

1. ⚠️ 最大的难点:异步执行与同步RPC的缺失

由于我们的发包脚本是通过浏览器执行,而抓包拦截则是在代理层完成,两者在执行层面是分离的

  • 传统的HTTP请求: 可以做到同步RPC(Request-Process-Complete),即发送请求后立即等待响应。
  • 本方案: 无法做到发送一个“触发”请求,然后立即同步返回修改后的参数和Cookie。 这是一个异步的过程。
    • 浏览器: 发送带有正确瑞数参数的请求。
    • 中间人: 拦截、存储正确的瑞数参数。
    • 主程序: 等待中间人存储完成后,再去读取并使用。
2. 🛠️ 解决方案(异步转同步的思路)

为了解决异步问题,需要引入一个共享存储或通信机制

  • 方案一:中间人插件 + 本地文件/数据库
    • 中间人拦截到数据后,通过插件将数据写入本地文件或数据库
    • 主程序(如Python爬虫)监控或查询该文件/数据库,获取最新参数。
  • 方案二:中间人插件 + API服务
    • 中间人拦截到数据后,通过插件调用一个本地API服务,将数据POST过去。
    • 主程序通过GET请求该API服务,获取最新参数。
3. 🚀 快速验证方案可行性的思路

要验证本方案的有效性,我们只需要一个简单的快速测试流程,核心是确认浏览器脚本生成的请求是否确实包含了瑞数所需的合法动态参数

  1. 触发与拦截准备:

    • 在您的中间人抓包软件中,对目标请求(例如:https://xxxx.com/xxx)设置请求断点
    • 在浏览器**控制台(Console)**中,执行一个简单的发包脚本来触发目标请求,例如:
      fetch('https://xxxx.com/xxx')
  2. 获取动态参数:

    • 脚本执行后,请求会被抓包软件的断点拦截下来。
    • 此时,被瑞数JS处理后的请求会包含正确的动态参数(如 URL 中的 参数)和/或正确的动态 Cookie。
    • 复制这个被拦截请求中的动态后缀参数和/或完整的 Cookie 头部
  3. 重放测试:

    • 将上述复制的参数和 Cookie 应用到您的HTTP 发包工具(如 Postman、Insomnia 或 Burp Repeater)中。
    • 发送这个重构后的请求。
  4. 结果判定:

    • 如果返回的状态码是**200 OK,则说明您提取到的参数是合法有效的,本方案的思路完全可行**。
    • 如果返回**400 Bad Request**或其他非预期状态码(如403 Forbidden),则说明参数是非法或已过期,需要检查瑞数逻辑或重试。

结论: 这种快速重放测试能以最小的成本,验证我们通过浏览器“黑盒”获取到的瑞数动态参数是否具有实际的业务效力。


五、总结与探讨

该方案的核心价值在于:用架构和流程的复杂性,来置换掉代码逆向的复杂性。 它提供了一种在短期内快速获取动态参数和Cookie的有效手段。

当然,这种方法也有其局限性,例如:需要额外的中间人工具支持、引入了异步通信的复杂性,并且如果瑞数进一步强化环境检测,可能会影响浏览器发包脚本的执行。

希望我的这个“另辟蹊径”的解决方案能为大家提供一个新的思路,欢迎各位大佬在评论区交流指正!

你对此方案有何看法?是否曾尝试过类似思路? 欢迎在下方留言讨论!

免费评分

参与人数 4吾爱币 +10 热心值 +4 收起 理由
purehai + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
windchimes + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
杨辣子 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
geesehoward 发表于 2025-10-31 16:34
这个只是跳过了一些请求参数的生成过程,但由于cookie是动态的,你不知道如何生成就无法完全脱离浏览器,真正实现python去爬虫。同样的,如果返回的数据是加密的,你依然要知道解密的方法,否则你拦截下来的数据是无法显示的,你依然要去解析复杂的加解密过程,如果是AES这种简单的还好,只要找到key和iv就行,但如果是一个自定义的变种加解密,你就不得不去强行分析逻辑了。
17#
blueonestwo 发表于 2025-11-5 11:53
16#
object86 发表于 2025-11-5 09:05
小亮丶1 发表于 2025-10-31 17:29
这个方法太复杂化了 只有返回数据非明文的情况下才使用 返回数据是明文情况下还是 老老实实补环境方便 而且 ...

他这个方法不复杂啊,但是只能拦截一些不需要参数加密的共用cookie和请求头,涉及到参数确实就废,用rpc调用那种方式也行,再就是有的浏览器控件可以直接执行生成加密的上一步的js,让浏览器自己来生成
15#
object86 发表于 2025-11-5 09:00
简单来说你这就是用了抓包拦截,方式有很多,fiddler插件,以及winform中的cef,webview2控件,但是仅限于拦截通用的cookie或者随机生成的请求头,如果涉及到参数加密的话就不行了
14#
wangbaobao123 发表于 2025-11-4 21:16
感谢大佬分享,太有用了
13#
慵懒丶L先森 发表于 2025-11-4 00:54
感谢分享,思路和方法听懂了一些,还需要细嚼慢咽,这个痛点是真的痛点,学习成本稍高,很多课程都是引流的,或者讲不深入,再看到其他楼层的大神们的评论,路还很远,要学的东西还很多
12#
zhurainyk 发表于 2025-11-2 07:53
牛逼啊大佬
11#
Ercilan 发表于 2025-11-2 00:01
就是 rpc 咯?那这种思路已经也用的挺多的了。有的会有浏览器指纹的
10#
purehai 发表于 2025-11-1 23:40
感谢大佬分享!不错!
9#
mysticz 发表于 2025-11-1 13:52
已经很成熟了你说的,自动化也可以200ms一次请求了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-11-15 17:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表