闲鱼商品信息抓取:基于 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 加密、解析、网络相关函数,高效突破闲鱼的签名与加密防护,精准提取商品数据。配合静态反编译定位关键类,可快速搭建稳定采集方案。

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

相关推荐
电商API_180079052477 小时前
闲鱼商品采集API商品列表API店铺商品API
爬虫·数据挖掘·数据分析
qq_2837200510 小时前
Python模块精进: urllib 从入门到精通
网络·爬虫·python
wanhengidc14 小时前
服务器 数据科技发展
运维·服务器·爬虫·科技·游戏·智能手机
科技牛牛14 小时前
AI爬虫vs网站封禁:IP封锁大战升级
人工智能·爬虫·ip
小白学大数据15 小时前
Python 实现可交互滑块拼图,图形拖拽移动无卡顿
爬虫·python·microsoft·交互
Luca_kill1 天前
MCP数据采集革命:从传统爬虫到智能代理的技术进化
爬虫·python·ai·数据采集·mcp·webscraping·集蜂云
ZC跨境爬虫1 天前
Scrapy分布式爬虫(单机模拟多节点):豆瓣Top250项目设置与数据流全解析
分布式·爬虫·python·scrapy
深蓝电商API1 天前
小红书商品笔记抓取:笔记ID与商品关联关系解析
爬虫·小红书
ZC跨境爬虫1 天前
通俗易懂讲解分布式爬虫基础概念(附Scrapy-Redis实操教程)
redis·分布式·爬虫·python·scrapy