/AndroidHttpCapture

AndroidHttpCapture网络诊断工具 是一款针对于移动流量劫持而开发的手机抓包软件 主要功能包括:手机端抓包、PING/DNS/TraceRoute诊断、抓包HAR数据上传分享。你也可以看成是Android版的"Fiddler" \(^o^)/~

Primary LanguageJava

##AndroidHttpCapture网络诊断工具
是一款针对于移动流量劫持而开发的手机抓包软件
主要功能包括:手机端抓包、PING/DNS/TraceRoute诊断、抓包HAR数据上传分享
使用前请确保手机HTTP代理的关闭

###Demo APK下载
image

1. http抓包
当用户通过HttpInterceptor访问页面的时候,所有的http请求都会被记录下来,然后这些请求包可以预览、分享、上传(上传接口的网址需自行在MainActivity修改)。
####第一次进入程序需要安装CA证书以便进行HTTPS抓包(原理同fiddler,MITM中间人)
预览页面可以查看从APP启动起所有网络请求数据,实现了按分页过滤、URL搜索功能,并可清空所有数据包
预览的内容包括Request Header、Request Cookie、Request Content、Response Header、Response Cookie、Response Content
Content内容如果为JSON将会自动格式化显示
image image
分享功能将抓包生成的所有数据包打包为har文件并压缩为zip,支持分享到微信、QQ等

2. 环境切换
支持切换模拟为微信、手Q,默认为普通浏览器。
image

3. 多样性输入:导航、地址栏、扫一扫、schema呼起
HttpInterceptor的首页为一个导航页,目前集成了微信和手Q的一级和二级入口,可以快速直达各目标页面。
另外还支持地址栏直接输入地址,扫扫描二维码,以及schema呼起app并打开目标页面。
schema的协议格式为:jdhttpmonitor://webview?param={'url'='http://www.baidu.com'}

4. Host配置
可以配置各域名的host
image

5. 查看console.log日志
image

6. 网络工具
目前HttpInterceptor集成了常见的网络工具,如dns,ping,以及设备信息

7. 设置系统代理,监听其他app请求包(仅android版支持)
当将用户所使用的wifi代理服务器设置为127.0.0.1:8888时,可以对其他app进行抓包(此时该HttpInterceptor就是一个手机上的fiddler)
image

二.Q & A

  1. 分享的http包如何查看和分析?
    分享的http包格式后缀为.har,可以通过fiddler方式或者在线工具进行分析。
    Fiddler方式需要先将包导到电脑上,然后使用fiddler导入该包:Import Sessions->Select Import Format ->HTTPArchive ->选择包,即可
    在线工具外网:http://h5.darkal.cn/har/
    只需要将包拖入此工具即可分析

三.致谢
AndroidHttpCapture基于Netty、browsermob-proxy来实现核心抓包的功能
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
https://github.com/netty/netty
由于Android5.0+不支持Provider 为JKS的证书,所以逆向修改了Netty库的证书部分适配Android系统(netty_android.jar)

A free utility to help web developers watch and manipulate network traffic from their AJAX applications.
https://github.com/lightbody/browsermob-proxy
修改了多处browsermob-proxy的源码适配Android系统
####目前遗留了一个Bug:信任所有的服务器证书不做校验

MIT License
Copyright (c) 2016 AndroidHttpCapture

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.