闲鱼商品信息抓取:基于 Frida 的 APP 逆向与数据提取

张开发
2026/4/17 22:13:03 15 分钟阅读

分享文章

闲鱼商品信息抓取:基于 Frida 的 APP 逆向与数据提取
在移动端数据采集场景中闲鱼这类电商 App 普遍采用签名校验、协议加密、反调试、Root 检测等防护手段传统抓包工具难以直接获取明文商品数据。Frida 作为动态插桩工具无需脱壳即可实时 Hook 关键函数拦截加密参数、解密响应、提取商品标题、价格、库存、卖家信息等核心字段是移动端逆向采集的高效方案。本文以实战视角完整讲解基于 Frida 对闲鱼 App 进行逆向分析、Hook 加密算法、提取商品数据的全流程兼顾技术原理与可落地脚本。一、前置环境与工具准备1. 环境要求电脑Windows/macOS/Linux设备已 Root 安卓真机 / 模拟器雷电、夜神、MuMu 均可闲鱼 App建议 7.x–8.x 稳定版新版加固更强兼容性下降2. 必备工具表格工具用途Frida Frida-tools动态 Hook、注入脚本adb设备通信、进程管理Jadx/Ghidra静态反编译定位类与方法Wireshark/HttpCanary辅助抓包定位接口Python3编写控制脚本、数据解析3. 环境部署步骤电脑安装pip install frida frida-tools设备推送对应架构 frida-server 并启动开启 USB 调试执行adb devices确认连接启动闲鱼frida -U -f com.taobao.idlefish --no-pause测试注入二、闲鱼 App 防护与逆向思路闲鱼核心防护点x-sign/x-mini-wua等请求签名算法在 So 层实现SSL pinning阻止常规抓包反调试、反 Hook、模拟器检测响应密文需在 Java 层解密后获取明文采集思路静态反编译定位网络请求、加解密、数据解析类Frida 动态 Hook 签名函数获取明文入参与签名结果Hook 数据解析方法直接提取商品 JSON绕过 SSL pinning 与反检测稳定运行采集三、关键 Hook 点与实战脚本1. 绕过 SSL 证书绑定javascript运行Java.perform(function(){ const TrustManager Java.use(javax.net.ssl.X509TrustManager); const SSLContext Java.use(javax.net.ssl.SSLContext); const tm Java.registerClass({ name: FakeTrustManager, implements: [TrustManager], methods: { checkClientTrusted: function(){}, checkServerTrusted: function(){}, getAcceptedIssuers: function(){return [];} } }); const sslCtx SSLContext.getInstance(TLS); sslCtx.init(null, [tm.$new()], null); SSLContext.init.implementation function(){return sslCtx;}; console.log([] SSL Pinning 已绕过); });2. Hook 商品数据解析类核心javascript运行Java.perform(function(){ // 定位商品数据解析类以常见类名为例需按版本微调 const GoodsParser Java.use(com.taobao.idlefish.business.detail.model.GoodsModel); // Hook构造/解析方法 GoodsParser.$init.implementation function(){ this.$init(); // 打印完整对象 console.log([] 商品数据, JSON.stringify(this)); // 精准提取关键字段 console.log(标题, this.title); console.log(价格, this.price); console.log(卖家, this.sellerNick); console.log(商品ID, this.itemId); }; console.log([] 商品解析Hook已挂载); });3. Hook So 层签名函数javascript运行Interceptor.attach(Module.findExportByName(libsecurity.so, native_getSign), { onEnter: function(args){ // 入参请求参数串 this.param Memory.readUtf8String(args[1]); console.log([] 签名入参, this.param); }, onLeave: function(retval){ // 出参生成的sign const sign Memory.readUtf8String(retval); console.log([] 签名结果, sign); } });4. Python 调用 Frida 脚本python运行import frida import sys def on_message(message, data): if message[type] send: print(message[payload]) def main(): device frida.get_usb_device() pid device.spawn([com.taobao.idlefish]) process device.attach(pid) with open(hook.js, r, encodingutf-8) as f: script process.create_script(f.read()) script.on(message, on_message) script.load() device.resume(pid) sys.stdin.read() if __name__ __main__: main()四、运行与数据提取流程执行 Python 脚本启动并注入闲鱼手动浏览商品列表 / 详情页触发数据加载Frida 控制台实时输出明文商品信息保存日志或对接数据库完成批量采集按需求清洗字段标题、价格、运费、销量、地区、描述等五、常见问题与规避方案App 闪退降低 Frida 版本避免过高版本冲突增加反调试绕过 HookHook 不到方法新版类名 / 方法名混淆用 Jadx 重新定位检查包名、进程是否正确无数据输出确认触发数据加载动作检查 So 层函数偏移是否变化检测到模拟器 / RootHook 系统检测函数伪造返回值使用隐藏 Root 的模拟器 / 真机六、合规与风险提示本文仅用于学习逆向技术与安全自测未经许可爬取平台数据违反《网络安全法》《个人信息保护法》及平台用户协议商业采集需获得平台官方 API 授权否则需承担法律责任请勿用于恶意爬虫、批量刷单、数据倒卖等行为七、总结Frida 无需静态脱壳可直接在运行时 Hook 加密、解析、网络相关函数高效突破闲鱼的签名与加密防护精准提取商品数据。配合静态反编译定位关键类可快速搭建稳定采集方案。技术本身无善恶务必在合法合规前提下使用逆向与爬虫技术尊重平台规则与用户隐私。

更多文章