前言
我这边是没办法测试这个流程了,因为我的手机和电脑按照上面这几个软件所写的开端口,手机搞证书搞代理,但是只能抓取到 http 的,https 根本抓不到.
fiddler 根据设置,发现我只有在 pc 端可以看到 https 请求和内容,手机上设置完 网络就出现问题 并且在 fiddler 中发送的 https 请求看不到, http://i2.tiimg.com/691087/985a55c38b750b7e.png
但使用 pc 访问手机版的 V2EX 能看到 https 请求,内容也看得到 http://i2.tiimg.com/691087/7b490d2497620ecf.png
http://i2.tiimg.com/691087/bcea635ba47531e0.png
使用 mitmproxy 中只能看到有 http 请求,
并且在手机上设置代理 ip:8080,我去访问 bilibili 时网络无法连接的情况
http://i2.tiimg.com/691087/b203a4b95300089b.png
charles 也是同样,设置了代理 ip:8888,证书,ssl,能看到 https 请求,但出现 unknown 显示,显示都是乱码 http://i2.tiimg.com/691087/97d9d4e77e7f8684.png
也就只有自动化软件能用了...
有哪位知道怎么搞定这些,能否告知一下
我先来说说流程
相对页面的数据进行抓取
(1) 使用 fiddler 或者 Charles 想抓取的接口
(2) 编写要在 mitmdump 筛选提取 addons.py 文件
(2)(1)
impoer mitmproxy.http.HTTPFlow
from mitmproxy import ctx, http
def response(self, flow: mitmproxy.http.HTTPFlow):
if '找到接口中所有含有的关键字' in flow.response.url or flow.request.host == "关键字":
text = flow.response.get_text()
text = re.findall('提取的内容',text)
#存入数据库或者文本
with open(....)as f:
f.writer(text)
addons = [ response() ]
(2)(2)
开启 mitmproxy 中的 mitmweb ->>> 直接在命令行开启 mitmweb
(2)(3)
mitmdump 加载刚刚写出来的文件 ->>> 加载文件 mitmdump -s addons.py
这样手机在使用 app 滑动的时候,mitmdump 会对所有经过的请求进行过滤,进行文本提取,保存
(3) 上面几乎已经完成,只需要使用自动化工具 appium 或者 AirtestIDE 来对手机不断滑动发送请求,mtimdump 则保存
网络上教程太少了,文档也就那么几个反反复复,
这个流程是否正确??????????? 是可以无视 js 和加密的把?
1
newGamingLife 2019-06-20 10:57:16 +08:00
噶 你的头像和我做的事情真的是一模一样。。。怀疑是不是自己梦游建的账号发的帖
|
2
newGamingLife 2019-06-20 10:57:36 +08:00
小声 BB,微信头像
|
3
z1421012325 OP 更新一下,我试了用 ios,结果可以用 chlarles 抓取到 https 的请求了,果然是小米手机的问题吗?
http://i1.fuimg.com/691087/749b4cdaed5b307c.png http://i1.fuimg.com/691087/511747de62e4717a.png |
4
z1421012325 OP 抓的起点和趣天下
|
5
artandlol 2019-06-20 11:55:53 +08:00 via Android
用 goproxy
|
6
crab 2019-06-20 11:56:10 +08:00
反编译 app,得到算法密钥类能算出签名,直接 api 请求了吧?
|
7
KuroNekoFan 2019-06-20 11:58:38 +08:00 via iPhone 4
android7 之后,用户证书不再被信任,抓不到 https 是正常的,root 了之后把用户证书移到信任区应该可以,另外一种情况是 sslpinging,不太了解
|
8
z1421012325 OP |
9
crab 2019-06-20 13:03:12 +08:00
@z1421012325 还是得到反编译这阶段啊。抓不到 https 你查下 SSL Pinning。
|
10
des 2019-06-20 13:08:02 +08:00
@z1421012325 JustTruestMe 走起
|
11
z1421012325 OP @artandlol 我看了一下,这个软件使用来建立代理服务器开端口用的? 不懂
|
12
z919126592 2019-06-20 13:25:59 +08:00
Xposed+JustTruestme
|
13
stop9125 2019-06-20 14:12:25 +08:00
安卓 8(?不确定)之后只信任系统证书了
|
14
z1421012325 OP @KuroNekoFan 不敢 root 自己用的手机, ios 我测试了可以抓 https 的, sslpinnning 也不可能每个 app 都用了吧
|
15
z1421012325 OP |
16
artandlol 2019-06-20 15:03:40 +08:00 via Android
@z1421012325 golang 版本的,静态文件比 mitproxy 好用
|
17
muchengxue 2019-06-20 15:16:05 +08:00
小米 note4 charles 抓起点 https 没问题
|
18
yoqu 2019-06-20 15:42:41 +08:00
@z1421012325 安卓 8.0 以后用户自己安装的证书都不认了,需要 root 权限安装证书到设备中
|
19
z1421012325 OP @muchengxue 应该是安卓版本没有到 8 把?
|
20
lzvezr 2019-06-20 15:44:25 +08:00 via iPhone
弄个 Android6.0 的实机或者虚拟机是最好的,低版本 xposed 支持不好,高版本安全性太高
|
21
z1421012325 OP @artandlol go'看不懂,再说了我也只是 app 抓数据,不可能数据都给加密了吧,中途拦截数据 mitmdump 挺好用的,简单
|
22
z1421012325 OP |
23
KuroNekoFan 2019-06-20 16:12:39 +08:00
@z1421012325 找个 android5/6 的设备呗...
|
24
Jirajine 2019-06-20 16:25:17 +08:00 via Android
楼上说 root 导入到系统 CA 真的尝试过吗?我弄了很多次,确定按正确格式导入,权限也配置好,仍然不被信任。
至于 justtrustme,试了下他的 release 版仍然不行,回去编译一下看看。 |
25
locoz 2019-06-20 16:34:00 +08:00 4
可以看一下我的这几篇文章
[当你写爬虫遇到 APP 的请求有加密参数时该怎么办? [初级篇-常规模式] ]( https://mp.weixin.qq.com/s/KFM37LN7phd8nbI8iIHDtw) [当你写爬虫遇到 APP 的请求有加密参数时该怎么办? [初级篇-秒杀模式] ]( https://mp.weixin.qq.com/s/_FjW6zzBv7-LENfB9B2loA) [当你写爬虫抓不到 APP 请求包的时候该怎么办? [初级篇] ]( https://zhuanlan.zhihu.com/p/46433599) [当你写爬虫抓不到 APP 请求包的时候该怎么办? [中级篇] ]( https://zhuanlan.zhihu.com/p/56397466) [当你写爬虫抓不到 APP 请求包的时候该怎么办? [高级篇-混淆导致通用 Hook 工具失效] ]( https://zhuanlan.zhihu.com/p/63028507) |
27
duan602728596 2019-06-20 19:44:56 +08:00 via iPhone
ios 直接越狱然后装个 ssl-kill-switch2 就能抓到了啊
|
28
z1421012325 OP @Jirajine 我用模拟器试了下,直接用安卓版本 5.0 以上的 用 xposed +justtrustme 可以无视证书,证书的安装也不用了,charles 能抓到 https 的请求了 这是我写的随笔 https://www.cnblogs.com/zengxm/p/11061900.html
|
29
z1421012325 OP @duan602728596 根据需求来越狱吧? 我直接在 wifi 中写入代理和端口,在 ios 自带的浏览器上下证书,直接安装信任就好了,直接抓到 https 的请求,比起安卓简单的太多了,除非 app 中含有 sslpinning 才需要把?我尝试了起点的 https 请求可以抓到,抖音也行
|
31
jamev5 2019-06-21 00:24:06 +08:00 via Android
还有种简单的方法是安装平行空间,在平行空间里打开对应的软件,然后抓包平行空间的请求就可以了。
|
32
hp66722667 2019-06-21 09:48:55 +08:00
https 指定是能抓到的,跟手机没关系,因为我们测试过小米,华为,IOS
|
33
unclemcz 2019-06-21 10:57:36 +08:00
@hp66722667 要看情况,没做证书验证随便抓,如果客户端有做证书验证,就要干掉 sslpinning,进一步如果客户端服务端做双向验证,则还要找到客户端保存的证书和秘钥,@locoz 发在站上的系列文章,算是很全面教程了。
|
35
z1421012325 OP @jamev5 这种对于证书能搞定吗,对安卓版本有没有要求啊?
|
36
z1421012325 OP @locoz 感谢大佬的文档,不过我有个问题,
比如我是在 win 下使用 mitmdump 拦截数据保存的, 但是我需要手动滑动一些页面,想要使用自动化软件 airtestIDE 让手机自动化,发现使用的是模拟器,没有使用真机,想知道怎么无线让两个运作起来??共用同一个端口也不行吧? 网络上的教程都是使用抓包软甲+有线 adb 手机抓取, 难道只能使用真机+有线来操控吗 |
38
locoz 2019-07-05 10:07:44 +08:00
@z1421012325 #36 卧槽我居然没看到你这个回复的,赶紧补一下,ADB 群控可以用网络控制,不一定非要有线,这些都是灰黑产玩烂的东西了。最简单的就是网络 ADB,但效率没有直接用专门的网络群控 APP+控制端高,而且连接不太稳定,管理起来也不是很方便,所以如果要搞的话建议走第二个方案。
|