闲鱼商品信息抓取:基于 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. 环境部署步骤

  1. 电脑安装:pip install frida frida-tools
  2. 设备推送对应架构 frida-server 并启动
  3. 开启 USB 调试,执行adb devices确认连接
  4. 启动闲鱼,frida -U -f com.taobao.idlefish --no-pause测试注入

二、闲鱼 App 防护与逆向思路

闲鱼核心防护点:

  • x-sign/x-mini-wua等请求签名算法在 So 层实现
  • SSL pinning阻止常规抓包
  • 反调试、反 Hook、模拟器检测
  • 响应密文,需在 Java 层解密后获取明文

采集思路:

  1. 静态反编译定位网络请求、加解密、数据解析类
  2. Frida 动态 Hook 签名函数,获取明文入参与签名结果
  3. Hook 数据解析方法,直接提取商品 JSON
  4. 绕过 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', encoding='utf-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()

四、运行与数据提取流程

  1. 执行 Python 脚本启动并注入闲鱼
  2. 手动浏览商品列表 / 详情页触发数据加载
  3. Frida 控制台实时输出明文商品信息
  4. 保存日志或对接数据库完成批量采集
  5. 按需求清洗字段:标题、价格、运费、销量、地区、描述等

五、常见问题与规避方案

  1. App 闪退
    • 降低 Frida 版本,避免过高版本冲突
    • 增加反调试绕过 Hook
  2. Hook 不到方法
    • 新版类名 / 方法名混淆,用 Jadx 重新定位
    • 检查包名、进程是否正确
  3. 无数据输出
    • 确认触发数据加载动作
    • 检查 So 层函数偏移是否变化
  4. 检测到模拟器 / Root
    • Hook 系统检测函数,伪造返回值
    • 使用隐藏 Root 的模拟器 / 真机

六、合规与风险提示

  • 本文仅用于学习逆向技术与安全自测
  • 未经许可爬取平台数据违反《网络安全法》《个人信息保护法》及平台用户协议
  • 商业采集需获得平台官方 API 授权,否则需承担法律责任
  • 请勿用于恶意爬虫、批量刷单、数据倒卖等行为

七、总结

Frida 无需静态脱壳,可直接在运行时 Hook 加密、解析、网络相关函数,高效突破闲鱼的签名与加密防护,精准提取商品数据。配合静态反编译定位关键类,可快速搭建稳定采集方案。

技术本身无善恶,务必在合法合规前提下使用逆向与爬虫技术,尊重平台规则与用户隐私。

相关推荐
川冰ICE9 小时前
Python爬虫实战⑱|Pandas分组聚合,一键生成统计报表
爬虫·python·pandas
码途漫谈10 小时前
Scrapling:让爬虫在现代 Web 里“活下来”的自适应抓取框架
前端·爬虫·ai·开源
Marvel__Dead1 天前
基于 AI 大模型的百度旋转验证识别(通用能力极强)
人工智能·爬虫·python·验证码识别·ai 大模型
solo_992 天前
Python 爬取小红书 文章标题和内容 仅供学习
爬虫
tang777892 天前
2026年国内代理IP服务商横向测评:企业级爬虫如何选型?
运维·服务器·网络·爬虫·python·代理
小白学大数据3 天前
面向大规模爬取:Python 全站链接爬虫优化(过滤 + 断点续爬)
开发语言·爬虫·python
程序员威哥4 天前
实战!Python爬京东商品评论:从采集到情感分析+词云可视化,新手30分钟跑通
开发语言·爬虫·python·scrapy
S1998_1997111609•X4 天前
哈希树函数洪水泛滥污染孪生镜像导致生物量子信息泄露以钩子而爬虫植入ssd探测
爬虫·网络协议·缓存·哈希算法·开闭原则
捉鸭子4 天前
QQ音乐sign vmp逆向
爬虫·python·网络安全·网络爬虫