运用mitmproxy进行活动端的HTTP抓包


Web
开拓者日常索要经过翻看页面被张开之后所发送的呼吁来调度自身支付的次第,当代浏览器,富含Firefox, Chrome, Safari 都自带了开辟工具,可以扶助开荒者监察和控制 HTTP
央求。可是不常那一个工具仍无法知足我们的要求,举个例子在做一点古老的浏览器(IE)上的兼容性调节和测验时,就需求一个专程用于监控HTTP 央浼的工具才行。方今意识了八个强硬的 HTTP 需要监察和控制工具 ————
mitmproxy Home
Page

点击访谈原著
你仍可以加入全栈技能调换群(QQ群号:254842154)

1. 介绍

mitmproxy 是用 Python 和 C 开拓的贰个中级人代办软件(man-in-the-middle
proxy),它能够用来阻拦、修改、重播和保存 HTTP/HTTPS 央浼。

它提供了三个命令行工具:

  • mitmproxy 具备交互界面
  • mitmdump 不具备交互分界面,类似 tcpdump

本文只介绍 mitmproxy

mitmproxy 帮助二种工作格局:

  • HTTP 代理方式,也正是 mitmproxy 作为三个 HTTP 代理运转,类似于
    HTTPSpy。
  • 晶莹剔透方式,mitmproxy 通过 iptables/pf 作为三个 TCP
    层代理运营,好处是无需修改 HTTP 客商端的布署。

正文只介绍 HTTP 代理格局。


2. 安装

使用 pip 举办设置:

pip install mitmproxy

虚构到回顾自家朝在内的四大文(读作:zhuān)明(读作:zhì)国家所特有的网络情状,pip恐怕会并发互联网连接超时等颠倒是非,能够加上
--proxy 选项:

pip install mitmproxy --proxy=127.0.0.1:8087

自个儿在 OS X Mavericks 上设置还有也许会凌驾一个编写翻译错误,能够通过增添 ARCHFALGS
情状来忽略此错误:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install mitmproxy --proxy=127.0.0.1:8087

HTTP抓包解析工具备比相当多,如Fiddler,FireBug,HttpWatch,Tcpdump,PAW(mac)等。在做活动支付时,找到一款合适本身的能张开移动设备HTTP抓包的工具也是丰富关键的。正所谓,工欲善其事必先利其器。

3. HTTP 客商端配置

mitmproxy 安装到位现在,私下认可以 HTTP 代理情势专门的学问,就供给 HTTP
顾客端将代理配置修改为 mitmproxy 的地址。

# 启动 mitmproxy:
# 使用 -p 选项指定 HTTP 代理所监听的端口号,默认为 8080
mitmproxy -p 8080

以 Firefox + AutoProxy 插件为例,客商端的布局如下:

图片 1

1.png

个人极其喜欢Fiddler,功效壮大,而且还扶助替换文件,对于调节和测量试验线上的js/css文件特别有益。可惜,未有MAC版本。于是作者只可以另寻利器。

4. 呼吁列表

在 Firefox
中开发三个网页,如:http://ruby-china.org/topics

图片 2

2.png

能够在 mitmproxy 中来看三个 HTTP 供给的列表:

图片 3

3.png

在 mitmproxy 中得以按 ? 步向到协理消息分界面,如需重回到央浼列表分界面则按
q

在呼吁列表分界面,法国红的箭头 >> 提示当前甄选的央求,能够运用 vi 的高效键
k, j 来移动箭头,PgUpPgDown
为上下翻页,另外空格键也可用来向下翻页。

如要清空驶列车表,则按大写的 C

今天给我们介绍一款庞大的帮助手提式有线电话机端抓包的工具:mitmproxy。官方网站地址:http://mitmproxy.org/
。那是mitmproxy官方网站的自述:

5. 过滤央求列表

只要供给列表页面中的央求数量太多,则足以选择 mitmproxy 提供的过滤效果。

在伸手列表分界面按 l,此时列表分界面包车型地铁左下方会提示
Limit:,要求在此输出过滤表明式,过滤表明式的语法列在帮扶音讯分界面,能够按
? 进行查看。

举个例子说,只展现全体的 JS 文件的央浼,即央浼的 UWranglerL 相配 \.js
的央浼,则此处应该输入:~u \.js

如需清除过滤,则同样按 l,然后删除过滤表明式就能够。

an interactive, SSL-capable man-in-the-middle proxy for HTTP with a console interface

6. 查看需要的有血有肉新闻

若要查看有个别央求的实际新闻,则在乞求列表分界面选中此呼吁后,按回车就能够走入到查看诉求的详细消息的分界面:

图片 4

4.png

详细音讯分界面蕴含了 RequestResponse 两个 Tab,可以按 tab
键切换,分别查看 Request 和 Response 的详细消息。

分界面包车型客车左上方还出示了此次央浼的出殡和埋葬时间。

mitmproxy 会使用合适的主意展现Request 和 Response 的 body
部分,比方对于减弱过的 JS ,mitmproxy
会解压缩后展现。如要求切换显示格局,可以在此分界面按 m
来选择分裂的展现形式。举个例子,对于富含了普通话的 HTML
页面,如必要出示粤语,能够选拔 urlencoded 模式。

在详细音讯分界面能够按 / 对 body 部分开展搜索。

它是开源的,托管在github上,使用python开拓,跨平台。
https://github.com/mitmproxy/mitmproxy

7. 梗阻恳求

mitmproxy 援救对诉求进行拦截,拦截后还是能够修改 Request 或 Response
的源委。

在伏乞列表分界面按 i,在左下角会显示
Intercept filter:,要求输入过滤表明式,用于提示拦截哪些央浼,此处的过滤表达式的语法同央浼列表过滤表明式一样。

诸如,如要拦截全体的 JS 文件的伸手,则在这里输入 ~u \.js

再一次拜望
http://ruby-china.org/topics
页面,在 mitmproxy 的伸手列表分界面中可以观察对 JS
的央浼都来得为灰褐,表示这么些乞求被截留了。

呼吁被拦截后,能够步入到该诉求的详细音信分界面,然后按
e,对乞求步向编辑,编辑完毕后按 ESC 退出编辑分界面。按 a
放行该诉求(也得以按大写的
A来放行全体被挡住的乞请),央浼被放行后,Server 收到的将是被编辑过的
Request。

当 Server 的 Response 重回到 mitmproxy
时,将再次被拦截,此时在详细信息界面按 e 能够对 Response
举行编制,编辑完结后,同样按 ESC 退出编辑,同样按 aA 放行
Response,顾客端收到的 Response 将是被编辑过的 Response。

至于 mitmproxy
的越来越多用法,请参见其官网的文书档案:http://mitmproxy.org/doc/index.html

上边以android为例做牵线,iOS的调整类似,关键是安装好代理。

下载

下载地址:

http://mitmproxy.org/download/osx-mitmproxy-0.11.3.tar.gz

喜好折腾的能够自个儿编写翻译安装。

计算机端设置

微型Computer和手提式有线电话机总是到同二个wifi情况下。运维时,须要钦点计算机的ip地址,并约定一个端口号:

/Applications/ProgramFiles/mitmproxy-0.11.3/mitmproxy -b 10.0.1.6 -p 2386

手提式有线电电话机端设置

手提式有线电话机和管理器延续同一个wifi,然后设置代理。步向WLAN,找到当前连年的wifi,长按,弹出的框中接纳“修改网络”,步向后,采取“展现高档选项”,代理选用为“手动”,代理服务器主机名设置为mac端的ip地址,端口号是跟刚刚安装的2386,设好后保存。如下图:

Screenshot_2015-02-03-17-35-53.jpeg

此时,手提式有线电话机端的全体http央求都会被mitmproxy检查测验到,并体今后调整高雄。键盘的上下键能够调控豆灰箭头
>> 的移动,回车直接步入伸手详细情形。

3.pic_hd.jpg

mitmproxy基本操作

详细操作在此处能够找到:http://mitmproxy.org/doc/mitmproxy.html
。小编在此地只列出一些时时使用的命令。

骨子里命令基本和vi一致。

C 清空调节台
tab 央浼/响应切换
q 重临上二个分界面
m 在响应结果中,输入m能够挑选body的变现格局,例如json,xml等
e 编辑央求、响应
a 发送编辑后的伸手、响应

拦截HTTP请求

mitmproxy是叁个支撑SSL的HTTP中间人代办工具,它同意你检查HTTP和HTTPS流量并援救直接改写诉求。它放在顾客端和Server端之间,它能够赢得顾客端的Request,然后修改再发送给Server端;Server端获得Request之后再发生相应的Response,又会被mitmproxy拦截,倘令你想修改response,便可修改后再发给客商端。

那几个庞大的职能已经在有个别有关iOS应用的心曲丑闻中都出现过,满含Path的地址簿上传丑闻。它的直白改写央求的力量也被用来针对iOS平台,其行使富含在GameCenter中伪造三个冒牌的高分数值。感兴趣的能够阅读:

http://mitmproxy.org/doc/tutorials/gamecenter.html

上边作者要做的便是拦截android的http乞请,然后修改央求url,等待服务器再次来到后再修改响应体。

在私下认可景况下mitmproxy是过滤抓包的U卡宴L,举例作者想拦截全体url中包罗cmd=200的乞请,操作如下:

在伸手列表界面,输入i(代表Intercept filter)步入命令行,输入cmd=200

8.pic.jpg

然后在android客商端发起呼吁,大家可以见到被挡住的央求被标红色高棉亮了

5.pic.jpg

应用键盘的前后箭头移动深灰的>>,到被拦截的恳求那一行,回车步入实际情况,使用tab键切换Request和Response,未来呼吁还尚未发出去。输入e,按提醒能够编写制定相应的央求体。编辑完成后回车,然后输入a(accept)发送给服务器。

6.pic_hd.jpg

服务器响应后,会有Response,此时,响应还并未有发放android顾客端,能够看看是Response
intercepted,代表是被堵住了。假使想编辑响应,同样是输入e编辑,步向编辑格局后,正是跟vi的操作同样了,编辑完后须要wq保存退出。然后再输入a,那时android顾客端就能够接受响应了。

7.pic_hd.jpg

任何拦截命令:
~q 拦截全体的乞求

~c 404 拦截特定的响应码404

~m POST 拦截全部POST央浼

越多拦截命令看这里:
https://mitmproxy.org/doc/features/filters.html

更详实的抓包进程也能够看这里:
http://greenrobot.me/devpost/how-to-debug-android-http-get-started/

HTTPS抓包

调护医治https伏乞稍微麻烦一点,须求设置自定义的SSL证书。能够参照官方网址的那篇作品:
https://mitmproxy.org/doc/certinstall/android.html

3G/4G抓包

官方并未有提交应用方案,在英特网找了瞬间,有人经过手提式有线电话机的移动热销来达成,必要用到两台安卓手机,如若为A和B,Computer为C。未来要对A手提式有线电话机的HTTP进行抓包。
①在B中启用WLAN热门成效
②A和C连接到B
③在A中安装代理IP(A的IP地址,平时是192.168.43.xxx )

参考:
http://greenrobot.me/devpost/how-to-debug-http-and-https-traffic-on-android/

相关文章