/AndroidHttpCapture

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

Primary LanguageJava

AndroidHttpCapture网络诊断工具

是一款针对于移动流量劫持而开发的手机抓包软件,可以当作是Android版的‘Fiddler’
主要功能包括:手机端抓包、PING/DNS/TraceRoute诊断、抓包HAR数据上传分享
使用前请确保手机HTTP代理的关闭

功能简介

1. HTTP/HTTPS抓包
当用户通过AndroidHttpCapture访问页面的时候,所有的http请求都会被记录下来,然后这些请求包可以预览、分享、上传(上传接口的网址需自行在MainActivity修改)。

第一次进入程序需要安装CA证书以便进行HTTPS抓包(原理同fiddler,MITM中间人)不安装证书的话无法抓取HTTPS的请求

预览页面可以查看从APP启动起所有网络请求数据,实现了按分页过滤、URL搜索功能,并可清空所有数据包
预览的内容包括Request Header、Request Cookie、Request Content、Response Header、Response Cookie、Response Content
Content内容如果为JSON将会自动格式化显示
image image
分享功能将抓包生成的所有数据包打包为har文件并压缩为zip,支持分享到微信、QQ等

2. 返回包注入
支持修改流量返回包(该版本暂时只支持http的修改)
image image

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

4. 多样性输入:导航、地址栏、扫一扫、schema呼起
支持地址栏直接输入地址,扫扫描二维码,以及schema呼起app并打开目标页面。
schema的协议格式为:jdhttpmonitor://webview?param={'url'='http://www.darkal.cn'}

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

6. 查看console.log日志
image

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

8. 设置系统代理,监听其他app请求包
当将用户手机的代理服务器设置为127.0.0.1:8888时,可以对其他app(例如微信)的HTTP数据进行抓包
(此时AndroidHttpCapture就是一个手机上的fiddler)
image

Q & A

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

已知BUG

  1. 信任所有的服务器证书不做校验
  2. 开启返回包注入功能后,https返回的部分页面存在 err_CONTENT_LENGTH_MISMATCH 错误

如果觉得工具好用的话请多多star以及Pull requests
支持我喝杯咖啡请扫描下面的二维码,谢谢(ง •̀_•́)ง

image

致谢

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系统

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.