什么?Sonic 云真机还能在线代理网络抓包?

v1.3.2-beta 已发布啦~ 这次 Sonic 云真机的版本有个很亮眼的功能,就是在线代理网络抓包。

先上使用教学

1、打开对应 tab 页面,下面以今日头条 App 为例

2、首次使用需要安装证书,点击下载证书按钮,手机会自动跳转到下载页,下载证书后安装即可

3、点击开始代理,就可以使用啦~

4、点击对应接口可以看到详细信息

背景

过去我们手机抓包本来就是不太方便,连接 wifi、手动配置代理、信任证书、开启服务等等步骤比较麻烦。不少用户提出这个需求后决定动手做下这个事情,将 http 和 https 的抓包放到平台上,确实能解决不少用户的烦恼啊,话不多说,开干。

技术预研

  1. 常见的抓包工具是 fiddler、charles,桌面端的移植到 Web 端力气是比较大的。基本可以马上排除。
  2. js 有一个whistle,当时觉得就不错,npm 可以直接部署,并且功能强,附带 web 页面。可惜目前逐渐排除 npm 依赖,减少用户安装门槛,所以这个暂时作为保底方案。
  3. python 有个不错的工具叫 mitmproxy,直接 py 部署,有证书,有 web 页面,都齐全了。可惜 sonic 目前已经排除了 py 依赖,所以同上,暂时作为保底方案
  4. 哎?原来还有人做了 go 版的 mitmproxy,叫go-mitmproxy,使用起来不错,该有的都有了,而且 go 打包后的二进制文件可以直接运行,不需要额外依赖,行,就选你了。

改造 go-mitmproxy

接下来对 go-mitmproxy 进行了定制改造与优化,当然优化的点我也会提交 pr 给原作者,原作者也十分满意,后续也欢迎 sonic 一同建设。毕竟共同建设比自己二开成长会更快呀!
优化点:

  1. go-mitmproxy 默认证书生成在用户根目录.mitmproxy 文件夹下面,这个有一个不够好的地方是用户需要先找到证书才能 push 给手机安装,那么 sonic 作为平台化的东西,这个肯定是不够友好的。于是微调了代码,给原项目加上了自定义证书生成目录,这样的话 sonic 的 Agent 端也可以直接做一层文件转发。手机只需要去到 Agent 下载页即可下载。

  2. go-mitmproxy 默认没有生成 cer 证书,只有 pem 证书。然而有的安卓机器不识别 pem 证书,于是我也加以优化,加上了 cer 证书的生成。

    func (ca *CA) saveCert() error {
    file, err := os.Create(ca.caCertFile())
    if err != nil {
        return err
    }
    defer file.Close()
    err = ca.saveCertTo(file)
    if err != nil {
        return err
    }
    
    return ca.saveCertTo(file)
    cerFile, err := os.Create(ca.caCertCerFile())
    if err != nil {
        return err
    }
    defer cerFile.Close()
    err = ca.saveCertTo(cerFile)
    if err != nil {
        return err
    }
    return err
    }
    
    
  3. go-mitmproxy 默认的 web 页面上下滚动时,只是接口列表的表头吸顶,但是头部比较重要的筛选输入框没有做这个处理,于是乎我们的前端小伙也帮忙优化,最终做成了整个吸顶。我也对表宽度加上了自定义伸缩适配,适配较小分辨率的浏览器。

    .top-control {
    position: sticky;
    display: flex;
    align-items: center;
    background-color: #fff;
    top: 0;
    padding: 10px;
    }
    
    

最终提交 pr 如下:

当然也欢迎大家参与建设 go-mitmproxy~

定制部分:

  1. 主要是替换 react 默认 logo 与去除部分外链,打造更贴合 Sonic 业务的界面
  2. 减少 arm 平台的依赖

定制部分主要针对 sonic,所以这部分就没有提交 pr 了。定制结果就是 Sonic 第二个周边生态sonic-go-mitmproxy

接入 Sonic

定制与优化部分完毕了,接下来就是接入到 Sonic 里面去。

一般我们使用代理第一步是连接 Wifi,目前 wifi 列表和连接 Wifi 的功能我们还在打磨,目前实现的效果不够精细化,所以目前需要用户自己手动连接 Wifi。

第二步是配置代理,配置代理有看过一些开源项目:https://github.com/steinwurf/adb-join-wifi,基本大部分的项目写法跟这个差不多,确实很方便,一条指令连接 wifi 加上配置代理。可惜大部分 API 都已经过期了,安卓 10 开始大部分 API 用不了,那这种情况怎么办呢?
Sonic 目前只能选用全局代理,然后用户退出的时候取消全局代理来实现。那么这时候又有人问了,全局代理取消之后不是要重启手机吗?
其实是可以做到不用重启手机的,只不过目前百度的话 99% 的帖子都找不到这个正确答案(可能太多人复制粘贴了):

adb shell settings put global http_proxy ip:port

adb shell settings put global http_proxy :0

这样,就可以完成开启 go-mitmproxy、利用 Agent 做证书下载服务、连接代理、开启 Web 页面一系列操作了。而用户只需要简单操作,就能体验到完整的功能。

结语

Sonic 目前还在不断前进,希望大家多多支持,不满意或者需要改进的点欢迎提出哦,你也是贡献者之一!哦对了这版本还有很多新功能,大家也可以去玩耍

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

推荐阅读更多精彩内容