写 APP 爬虫被加密参数卡住了?教你秒杀 80%左右 APP 的加密参数~(公众号直链)

2019-06-19 10:17:34 +08:00
 locoz

原标题:当你写爬虫遇到 APP 的请求有加密参数时该怎么办? [初级篇-秒杀模式]

文章内容点我查看

历史文章:

当你写爬虫遇到 APP 的请求有加密参数时该怎么办? [初级篇-常规模式]

当你写爬虫抓不到 APP 请求包的时候该怎么办? [初级篇]

当你写爬虫抓不到 APP 请求包的时候该怎么办? [中级篇]

当你写爬虫抓不到 APP 请求包的时候该怎么办? [高级篇-混淆导致通用 Hook 工具失效]

5G 的到来会对爬虫产生怎样的影响?

当你写爬虫时遇上 Flash+加密的解决方式

听说这个爬虫面试题很难?看完你就知道怎么做了


觉得文章质量不错的朋友可以关注一下我的公众号,二维码在此:

10340 次点击
所在节点    分享发现
83 条回复
koodai
2019-06-20 22:54:14 +08:00
大佬,微信上请教您,可能忙的没顾上。
我想问一下,我的目标 APP 签名在 get 参数中,目测是 base64,字符长度 40 个以内(没仔细数,但不长),按照文章中的方法搜索不到结果字符串。日志中有大量 aes/cbc/padding17 之类的信息,IV 也可以看到。加密要素应该是设备 id 之类的。这个 APP 接了 jpush 和 bugly,信息非常杂。
遇到这种情况应该怎么解决?能不能详细写一篇文章
locoz
2019-06-20 23:55:49 +08:00
@LanAiFaZuo #60 公众号后台发个消息,我给你发二维码,直接发这里的话加的人太多了
locoz
2019-06-20 23:58:49 +08:00
@koodai #61 今晚剪头发去了,没看后台。你的这个我觉得可以先 base64 decode 看一下内容,如果能解出来但是是乱码的话大概率是 AES/DES 之类的对称加密,但是日志里如果很多同类加密的话会比较难区分,建议反编译搜一下参数名找找线索。
locoz
2019-06-21 00:00:13 +08:00
@koodai #61 这种主要是思路上的问题,感觉不太好写文章,我后面思考一下怎么描述吧
lzvezr
2019-06-21 10:02:55 +08:00
@locoz 折腾过 xposed 的,抓包看到加密第一反应肯定是利用 xposed 进行 hook。没折腾过的以 Android7.0 抓包为关键字也会得 justTrustme 或 sslunpinning,而 sslunpinning 和 Inspeckage 是同一个作者,并且在 sslunpinning 的 GitHub 上也有 Inspeckage 项目的介绍。这种随便网上一搜就有的东西,居然这么多搞逆向搞抓包的人都不知道,看起来我确实高估了大部分人使用搜索引擎的水平
lzvezr
2019-06-21 10:10:36 +08:00
@lzvezr 想了一下,也不能说的这么过分,毕竟你也是推广的微信公众号,这部分不可能被搜索引擎抓到,下一次再有人搜索 Android7.0 抓包也不能引流过去
locoz
2019-06-21 10:13:16 +08:00
@lzvezr #66 哈哈哈哈哈哈哈哈没事我还会发一份到知乎的,但是这方面的东西是确实很少
locoz
2019-06-21 10:17:41 +08:00
@lzvezr #65 很多人其实连 xposed 是干什么的都不知道的,而且你搜一下这方面的东西其实会发现满屏的 [教装抓包工具的证书] 的教程,然后如果搜抓不到包之类的关键词,很多内容也只是说 android 7.0+的原生 ssl pinning,但是对第三方 http client 的部分基本没有,最多说用 justTrustMe 可以解决。然后 sslunpinning 的名气似乎没 justTruseMe 这么大,很少看到这个名字被提起,所以 Inspeckage 不怎么被人知道也挺正常的。
wtebug6
2019-06-21 15:11:31 +08:00
@locoz 楼主,你好,请教一下,我从一个 APP 抓出了一个请求,直接在 fiddler 里复制发送这个请求会鉴权失败跳转到登录链接,不能返回正确的结果。我又尝试了把 APP 里发出的请求在 fiddler 里打上断点不让它发出,然后复制请求并发送结果仍然鉴权失败。这种情况有没有什么建议思路?
locoz
2019-06-21 15:20:37 +08:00
@wtebug6 #69 你这个问题最好是附上截图,要不然只能盲猜。。
根据你的描述我可以猜到三个可能:
1、直接重发请求会返回鉴权失败,原因是 sign 不允许复用,所以第一次正常请求被接收了之后,sign 就失效了。

2、拦截 APP 发送的请求不让他发出,然后“复制请求并发送”,这一步的“复制请求并发送”我不知道你具体是怎么做的。
如果是直接在 Fiddler 中操作重发的话,有可能是因为时间太久了,也就是跟请求中所带的时间参数有关;如果是在自己写的代码里发送的话,时间太久同样有可能,但更可能是你发送的姿势不对,发出去的东西和正常的长得不一样。

3、第一次直接重发请求之后就已经被服务端做了限制,所以第二次才会失败,但是这个概率很低,毕竟容易误伤。
Bakarua
2019-06-21 15:27:46 +08:00
有点东西
wtebug6
2019-06-21 16:51:49 +08:00
@locoz 感谢回复,第二点我试了,应该和时间无关,因为我隔了很久在 fiddler 里把断点恢复后,被暂停的请求还是能顺利通过鉴权。我在 fiddler 里比较了请求头,是一模一样的。困扰很久了。
APP 发出的请求和响应: https://i.loli.net/2019/06/21/5d0c970d132cd51915.jpg
我用 fiddler 发出的请求及响应: https://i.loli.net/2019/06/21/5d0c972fa474645799.jpg
请求头: https://i.loli.net/2019/06/21/5d0c9a407ce9036838.png
locoz
2019-06-21 17:09:59 +08:00
@wtebug6 #72 你的这个截图还是看不出啥哦。。然后你自己用 fiddler 发请求的时候,是用的那个 replay 功能吗?如果是的话不应该会出现返回不一样的情况啊
locoz
2019-06-21 17:10:19 +08:00
@Bakarua #71 感兴趣的话可以关注一下哦
yepinf
2019-06-22 09:25:03 +08:00
已经关注公号

哈哈, 大佬多更新点奇淫巧术
locoz
2019-06-22 13:55:06 +08:00
@yepinf #75 好的😂
happyhou
2019-06-22 16:54:12 +08:00
精品文章
happyhou
2019-06-22 16:54:27 +08:00
精品文章 good
locoz
2019-06-23 07:13:41 +08:00
@happyhou 😄谢谢
nnnToTnnn
2019-06-24 15:59:00 +08:00
其实我不太明白,爬虫这部分,如果加上一个 reCaptcha 会怎么样? ヾ(=゚・゚=)ノ喵♪

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575373

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX