在Android/iPhone上抓包

因为要debug一个app为什么无法启动,就研究了一下抓包.  目前主流的在android 和iphone上都可以抓包的是fiddler, 使用简单,不用root, 操作简便,UI简明. 但是缺点就是只能抓包http/https协议,无法抓包第四层tcp/udp协议. 在android上也可以抓包使用tcpdump. 此篇文章只简单记录一下fiddler.

总体流程分为这么几步: 在电脑上安装fiddler; 简单配置fiddler; 手机上安装证书; 手机设置proxy, 让所有http/https流量经过fiddler; 抓包. 

前提条件是电脑和手机在一个局域网内.

下面详细说一下:

  1. 下载fiddler. 只需要下载免费的fiddler classic就可以了. 下载地址如下
https://www.telerik.com/fiddler/fiddler-classic

2. 简单配置fiddler远程连接

Fiddler 如果抓取 https 协议会话需要进一步配置,在 Tools ->Options 菜单下,选择HTTPS标签并配置如下:

手机抓取需要配置远程连接,在 Tools ->Options 菜单下,选择Connections标签并配置如下:

Fiddler listens on port是手机连接fiddler时的代理端口号,默认8888即可;

Allow remote computers to connect是允许远程发送请求,需要勾上.

防火墙需要开放8888端口,注意如果你使用的是windows的话,这个防火墙已经自动配置好了.

3. 手机安装fiddler证书, 这里需要手机和电脑在同一个局域网之内. 下面以iphone为例说明,安卓的步骤差不多.

在电脑上通过cmd敲命令ipconfig查看本机的ipv4地址.

打开手机浏览器,输入 http://【fiddler电脑IP地址】:【fiddler设置的端口号】,例如 http://192.168.123.100:8888 可以下载证书并安装。

在打开的页面中,点击 FiddlerRoot certificate 下载证书,点击允许

在Settings系统设置中,点击 Profile Downloaded(已下载的配置文件):

点击install, 安装证书

不同系统手机的下载路径不一样,例如有的是: 设置->通用->关于本机->证书信任设置

4 手机配置代理

手机设置 -> WLAN -> 选择无线网络 -> HTTP Proxy,选择 Manual,Server 为 Fiddler 的电脑 ip 地址,端口号为 Fiddler 的端口号:

 

此时操作浏览器或APP,在 fiddler 中可以看到完成的请求和响应数据:

 

三星S20+ 安装Play Store

今天下午手贱,点了手机系统更新,结果更新完以后Play Store没有了,国区的固件确实有这个毛病.

三星的手机框架齐全,只需要自己去apkpure 或者apkmirror上下载一个最新的play store apk 就可以了. 

但是版本问题又让我迷糊了半天.

我下载的是这个版本:

Google Play Store 26.9.22-21 [0] [PR] 394273994 (82692210)
Update on: 2021-09-03

App uploaded by: Google LLC

Requires Android: Android 5.0+ (Lollipop, API 21)

Signature: 38918a453d07199354f8b19af05ec6562ced5788 Google Play Store 26.9.22-21 [0] [PR] 394273994(82692210) safe verified

Screen DPI: nodpi

Architecture: arm64-v8a, armeabi-v7a, x86, x86_64

File SHA1: f78f5d812a9ed0aa68fcb869020c930f79d9247b

File Size: 44.8 MB

[0] 表示对所有的硬件(相对应的, [5]表示可穿戴andorid设备, [8]代表andorid TV)

26.9.22 代表play store 的版本, 没什么好说的,22这一列迭代的很快

[21]  表示的是只支持API21以上(相对应的,还有[19], 表示API19),现在的机器直接选择[21]就可以了