使用apk-mitm抓取TikTok应用接口详解

使用apk-mitm抓取TikTok应用接口详解

在移动应用逆向工程和接口分析领域,TikTok因其复杂的加密和防抓取机制而备受关注。本文将详细介绍如何使用apk-mitm工具对TikTok应用进行接口抓取和分析。

什么是apk-mitm

apk-mitm是一个强大的工具,它可以自动修改Android应用,使其信任用户安装的证书,从而允许通过MITM(中间人)代理进行HTTPS流量检查。这个工具特别适用于那些实现了SSL Pinning(证书锁定)的应用程序,如TikTok。

准备工作

在开始之前,我们需要准备以下工具和环境:

  1. Python 环境(推荐Python 3.7+)
  2. 安装apk-mitmpip install apk-mitm
  3. Java开发环境:确保已安装JDK(版本8或更高)
  4. Android SDK:需要安装build-tools和platform-tools
  5. Charles或Fiddler等抓包工具
  6. 一部已root的Android设备或模拟器
  7. TikTok APK文件

步骤一:安装证书

首先,我们需要在手机上安装抓包工具的证书:

  1. 在电脑上打开Charles/Fiddler,设置代理端口(通常是8888)
  2. 确保手机和电脑在同一网络下
  3. 在手机的Wi-Fi设置中配置代理,IP为电脑IP,端口为抓包工具设置的端口
  4. 在手机浏览器中访问chls.pro/ssl(Charles)或http://192.168.x.x:8888(Fiddler,其中x.x为电脑IP)
  5. 下载并安装证书
  6. 对于Android 7.0+,还需要在系统设置中将此证书设为信任

步骤二:使用apk-mitm修改TikTok APK

现在,我们使用apk-mitm工具来修改TikTok APK,绕过其SSL Pinning保护:

# 确保apk-mitm已正确安装
apk-mitm /path/to/tiktok.apk -o /path/to/output/tiktok-mitm.apk

这个过程将解包APK,修改相关代码,然后重新打包,生成一个新的APK文件,该文件会信任我们之前安装的证书。

步骤三:安装修改后的APK

接下来,我们需要卸载原有的TikTok应用,然后安装修改后的版本:

# 卸载原有应用(如果有)
adb uninstall com.zhiliaoapp.musically # 国际版TikTok包名

# 安装修改后的APK
adb install /path/to/output/tiktok-mitm.apk

步骤四:配置代理和开始抓包

现在,我们可以开始抓取TikTok的接口了:

  1. 确保手机仍然连接到我们配置的代理
  2. 启动Charles/Fiddler并配置好HTTPS抓取
  3. 在手机上打开修改后的TikTok应用
  4. 在抓包工具中,您应该能够看到来自TikTok的加密请求

分析TikTok的主要接口

通过抓包,我们可以观察到TikTok应用的几个关键接口:

1. 视频Feed流接口

https://api*.tiktokv.com/aweme/v1/feed/

这个接口负责获取推荐视频,其参数包括用户ID、设备信息、位置数据等。

2. 用户信息接口

https://api*.tiktokv.com/aweme/v1/user/profile/other/

此接口用于获取特定用户的个人资料信息。

3. 评论接口

https://api*.tiktokv.com/aweme/v1/comment/list/

用于获取视频的评论列表。

请求头和签名分析

TikTok的API请求通常包含复杂的请求头和签名参数,包括:

  • X-Gorgon:一个基于请求参数、时间戳和设备信息生成的签名
  • X-Khronos:时间戳
  • X-Ladon:另一个签名参数
  • user-agent:包含详细设备信息的自定义UA

这些参数的算法是高度复杂的,常常会随着应用版本更新而变化。

注意事项

  1. 法律风险:未经授权抓取TikTok接口可能违反其服务条款,仅建议用于学习目的
  2. 版本依赖:不同版本的TikTok可能实现不同的安全机制,本教程的方法可能需要针对特定版本调整
  3. 地区限制:某些接口可能根据地区不同而有所不同
  4. 频率限制:过度请求可能触发TikTok的频率限制或IP封锁

进阶技巧

Frida辅助分析

除了使用apk-mitm,还可以结合Frida工具进行动态分析:

// Frida脚本示例:绕过SSL Pinning
Java.perform(function() {
var TrustManagerImpl = Java.use('com.android.org.conscrypt.TrustManagerImpl');
TrustManagerImpl.verifyChain.implementation = function(untrustedChain, trustAnchorChain, host, clientAuth, ocspData, tlsSctData) {
console.log('[+] SSL Pinning Bypassed');
return untrustedChain;
};
});

提取TTEncrypt算法

TikTok使用名为TTEncrypt的加密库来保护某些敏感数据。通过反编译可以提取并分析此算法:

apktool d tiktok.apk -o tiktok_decompiled
# 分析 tiktok_decompiled/lib/[架构]/libttencrypt.so

总结

通过使用apk-mitm工具,我们能够绕过TikTok的SSL Pinning保护,成功抓取并分析其网络接口。这为理解TikTok的API结构和数据流提供了宝贵的见解。然而,请记住,此类技术应当仅用于教育和研究目的,尊重TikTok的服务条款和用户隐私。

如果您对移动应用的接口抓取和分析有进一步的兴趣,可以查看我的其他相关文章,如获取百度的搜索结果的真实地址使用you-get下载视频


参考资料: 1. apk-mitm GitHub仓库 2. Android安全机制与SSL Pinning 3. 中间人攻击(MITM)原理与防御