12:当你写爬虫抓不到APP请求包的时候该怎么办?【中级篇】

版权声明:本文为知乎博主loco
的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://zhuanlan.zhihu.com/p/56397466
本文只提供学习研究使用,若存在侵权,请及时联系删除


文中均为Android环境下,iOS实现同样的操作需要越狱,复杂度比Android高得多,强烈建议使用Android机进行调试

大家新年好啊,我又回来了,难得有空可以搞事情,就把前面挖的坑给填了吧,这次的中级篇就拿初级篇里Coande同学和不应该呀同学提到的酷安和小红书这两个APP来开刀吧。

初级篇传送门:当你写爬虫抓不到APP请求包的时候该怎么办?【初级篇】


首先说一下中级篇的主要内容,中级篇要处理的是APP开启SSL Pinning后导致出现的初级篇通杀方案失效的问题。

那么什么是SSL Pinning呢?简单地说一下,SSL Pinning是一种防止中间人攻击(MITM)的技术,主要的机制是在客户端发起请求->收到服务器发来的证书这一步之后,对收到的证书进行校验,如果收到的证书不被客户端所信任,就直接断开连接不继续请求。

所以在遇到对关键请求开启了SSL Pinning的APP时,我们抓包就只能看到APP上提示无法连接网络或者请求失败之类的提示;而在抓包工具的界面上,要么就只能是看到一排CONNECT请求,获取到了证书后却没有后续了,要么就只有一些无关的请求,找不到自己想要的那个接口。

无法抓到包的效果图:

image
image

这个问题是怎么产生的呢?是这样,当我们使用抓包工具抓包时,抓包工具在拦截了服务端返回的内容并重发给客户端的时候使用的证书并不是服务端原来的证书,而是抓包工具自己的,抓包工具自己的证书并不是APP开发者设定的服务端原本的证书,于是就构成了中间人攻击,触发SSL Pinning的机制导致连接被中断,所以我们无法直接抓到包。

那应该怎么办呢?别急,办法很多而且也很简单,先了解一下常见的情况吧,常见的开启了SSL Pinning的APP大致分为两种操作:

  1. 服务端使用了某个权威证书颁发机构(CA)颁发的证书,并在APP中校验证书的CA是否是正常的。
  2. 服务端使用了CA颁发的证书或是自己给自己颁发的证书,并在APP中校验证书本身是不是正常的,需要将证书与APP本体一同下发。有把证书混淆在代码里藏起来的,也有直接放在资源目录下的。

不过呢,这两种操作都是能被通杀的,下面我将告诉你如何处理。本篇同样提供多种通杀方案,请读者自行根据自己所持设备的情况使用。

1、直接使用低版本系统的Android手机(低于7.0)

android 7.0 + 使用系统原生锁定方案,而7.0 Nougat之前则TrustKit自己逻辑实现锁定.

瘦蛟舞大佬在这篇文章中有提到,Android7.0以后是有系统原生的方案提供的,有些APP抓不到包的时候其实是因为版本比较高,用上了原生的方案。所以只要使用低于Android7.0版本系统的手机,就可以轻松绕过大部分APP的SSL Pinning,但这个方法毕竟不能彻底通杀,有些APP(也有可能是使用的请求库)有自己实现的SSL Pinning方案,所以对低版本系统也会有效,建议配合第二个方案使用。

如图所示,在Android 8下,抓包时无法抓到任何的有用的请求。

image
image
image

但在Android5.1.1下,却没有任何问题。

image
image
image

2、使用Xposed或兼容Xposed的框架+JustTrustMe

这个方案使用的是JustTrustMe这个Xposed模块,它所做的事情就是将各种已知的的HTTP请求库中用于校验证书的API都进行Hook,使无论是否是可信证书的情况,校验结果返回都为正常状态,从而实现绕过证书检查的效果。

具体操作的时候唯一麻烦的就是安装Xposed框架,但因为现在维术大佬的太极APP(关注他的公众号《虚拟框架》下载)支持使用Magisk挂载启动,实现了几乎与Xposed框架同样的使用方式和效果,并兼容了很多Xposed的模块,所以如果觉得Xposed框架安装太过麻烦或是担心砖机的同学可以尝试使用太极-Magisk,直接解了BL锁之后刷入Magisk并在Magisk-Manager中添加太极模块就可以使用了,安装和使用教程后续会再写一篇专门的说明链接过来,等不及的同学也可以直接看太极的文档进行操作。

效果呢就是开启JustTrustMe之后与低版本下抓包一致,关闭后打回原形,这里就不贴图了。

注意:这个模块在过高的系统版本(8-9)下偶尔会出现导致所有HTTP请求都失败的BUG,如果不是使用专门的测试机安装这个模块的话,建议日常使用时将其关闭,以免遇到奇怪的问题。

注意:本人并未在日常用机上长时间使用太极-Magisk+JustTrustMe,不清楚是否存在其他BUG,如出现问题请联系维术或JustTrustMe作者。

3、将抓包工具的证书安装到系统根证书目录中

这个方案的来源是这个贴子letitbesqzr所提到的第二种方案,个人认为较为麻烦,不推荐使用,毕竟有权限往system分区写文件的时候完全可以用JustTrustMe了。

操作方法如下:

系统证书的目录是:/system/etc/security/cacerts/ 每个证书的命名规则为:. Certificate_Hash 表示证书文件的 hash 值,Number 是为了防止证书文件的 hash 值一致而增加的后缀; 证书的 hash 值可以由命令计算出来,在终端输入 openssl x509 -subject_hash_old -in ,其中 Certificate_File 为证书路径,将证书重命名为 hash.0 放入系统证书目录,之后你就可以正常抓包了。

4、VirtualXposed(VirtualApp)

这个方案的来源是这个贴子letitbesqzr所提到的第三种方案。原理不明,疑似VirtualApp在转发其内部APP的操作时没有进行校验证书的操作?希望有研究过的大佬解释一下具体原理。

使用这个方案时直接安装VirtualXposed即可,代理的设置还是在原来的地方操作,只需要将需要抓包的APP添加至VirtualXposed中,再打开它内部的那一个对应的APP就可以抓到包了。但并未详细测试这个方案对各种HTTP请求库的兼容性,所以不清楚用了其他HTTP请求库的APP是否也会是同样的效果。

效果如下:

image
image

好了,学会了这四招之后,初级篇里的90%占比就被提升至99%了,剩下的那一小撮不被初、中级篇的方案破掉的APP将在高级篇中讲解,但应该是没有能做到通杀的方案了,毕竟每家的处理方式都不同。

欢迎提供高级篇的素材,在评论或私信里告知我都可以。

如果这篇文章有帮到你,请大力点赞,谢谢~~ 欢迎关注我的知乎账号loco_z,我会时不时地发一些爬虫相关的干货和黑科技,说不定能让你有所启发。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,565评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,021评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,003评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,015评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,020评论 5 370
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,856评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,178评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,824评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,264评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,788评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,913评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,535评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,130评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,102评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,334评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,298评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,622评论 2 343

推荐阅读更多精彩内容