在开发中有时需要抓取指定程序的网络请求,以便进行分析处理。graftcp 是一个可以辅助抓取网络流量的开源程序,和 ProxyChains 一样,不需要对目标程序进行修改,就可以把任何指定程序(应用程序、脚本、shell 等)的 TCP 连接重定向到 SOCKS5 或 HTTP 代理。
本机安装抓包程序
安装配置 reqable
reqable 是一个跨平台的抓包工具,简单抓包直接使用免费版就可以,当然你也可以使用 charles。
直接官网下载安装最新版,安装后选择菜单证书->安装根证书到本机
,完成系统证书安装,并下载根证书reqable-ca.crt
,用于后面把证书安装到开发机 ubuntu 中。
开发机 ubuntu 安装配置
安装 graftcp
访问 graftcp release 下载最新版安装,或执行命令:
wget https://github.com/hmgle/graftcp/releases/download/v0.4.0/graftcp_0.4.0-1_amd64.deb
dpkg -i graftcp_0.4.0-1_amd64.deb
安装 reqable 证书
- 在
/usr/share/ca-certificates
创建目录reqable
,并把前面下载的reqable-ca.crt
证书放入其中
mkdir /usr/share/ca-certificates/reqable
- 修改
/etc/ca-certificates.conf
文件,在末尾追加一行reqable/reqable-ca.crt
,并刷新系统证书
echo 'reqable/reqable-ca.crt' >> /etc/ca-certificates.conf
update-ca-certificates
抓包流程
本机启动 reqable 抓包
这时 reqable 会监听 http://192.168.x.x:9000 的代理地址。
ubuntu 运行 graftcp
在 ubuntu 中执行命令:
mgraftcp --enable-debug-log --select_proxy_mode=only_http_proxy --http_proxy=192.168.x.x:9000 [指定程序路径] [程序参数]
这样目标程序的所有网络请求就会路由到 reqable 中,reqable 界面也能看到所有的 http 网络请求了。
程序抓包替换脚本
先备份原程序,再使用下面的脚本直接替换原程序,这样第三方调用程序都会被抓包。
#!/bin/bash
mgraftcp --enable-debug-log --select_proxy_mode=only_http_proxy --http_proxy=192.168.x.x:9000 [指向原程序路径] "$@"