基于大牛的研究成果(https://blog.csdn.net/wql2014302721/article/details/110563695),使用Fiddler在安卓9手机上抓包,添加用户证书,抓不到包,将手机ROOT后,添加系统“信任的凭据”,抓包成功。
有了上面的抓包结果,如是想分析下具体的调用过程。用jadx-gui打开抖音的APK包(14.8.0),包比较大,要等待一会时间。抖音的请求基于Rxjava和Retrofit,但是Retrofit是字节跳动修改后的一个实现,包名是“com.bytedance.retrofit2”。
以“关注”和“粉丝”为例子,在com.ss.android.ugc.aweme.following.repository.FollowRelationApi 中定义了2个GET方法:
@GET("/aweme/v1/user/follower/list/")Observable<c> queryFollowerList(@Query("user_id") String str, @Query("sec_user_id") String str2, @Query("max_time") long j, @Query("count") int i, @Query("offset") int i2, @Query("source_type") int i3, @Query("address_book_access") int i4, @Query("gps_access") int i5, @Query("vcd_count") int i6);@GET("/aweme/v1/user/following/list/")Observable<e> queryFollowingList(@Query("user_id") String str, @Query("sec_user_id") String str2, @Query("max_time") long j, @Query("min_time") long j2, @Query("count") int i, @Query("offset") int i2, @Query("source_type") int i3, @Query("address_book_access") int i4, @Query("gps_access") int i5, @Query("vcd_count") int i6, @Query("vcd_auth_first_time") int i7);
在com.ss.android.ugc.aweme.following.repository.d 中会发起Rxjava调用
public final /* synthetic */ Observable<c> a(a aVar) {a aVar2 = aVar;PatchProxyResult proxy = PatchProxy.proxy(new Object[]{aVar2}, this, a, false, 238856);if (proxy.isSupported) {return (Observable) proxy.result;}Intrinsics.checkParameterIsNotNull(aVar2, "req");Observable<c> subscribeOn = this.b.queryFollowerList(aVar2.b, aVar2.c, aVar2.d, aVar2.e, aVar2.f, aVar2.g, aVar2.h, aVar2.i, aVar2.j).subscribeOn(Schedulers.io());Intrinsics.checkExpressionValueIsNotNull(subscribeOn, "service.queryFollowerLis…scribeOn(Schedulers.io())");return subscribeOn;}
按照前面大牛说的方法,去工程搜索“Gorgon”,发现这个字符串已经找不到了,可能抖音做了隐藏,每次的Rxjava请求,自动在某个地方会加上这个HEAD字段,暂时没找到在哪添加的,有知道 gorgon 的朋友,请留言赐教。