之前研究asyncio模块的时候,顺便写了个叫Shinpachi的小工具,放在这 写篇东西介绍一下XD

Shinpachi要解决的问题

有没有试过为了在手机上抓一个包,特地在PC上装了Wireshark和整套开发环境?就算 不是移动客户端,有没有试过要在生产环境抓包,但是服务器和客户端都不在你手里? Shinpachi正是为这些场景而生的。

它是一个特殊的HTTP代理服务器,只要将手机上——或者其他什么设备——的代理地址设置 成Shinpachi,你就能在Shinpachi的控制台上看到所有TCP流量。

我在这里部署了一个实例,不过是要用OAuth帐号登录的。因为毕竟是代理服务器, 很容易被滥用,所以还是意思意思,给保护一下……

实现细节

实际上很简单,这里分成前端和后端说明一下。

Shinpachi的前端是一个HTML页面,通过websocket与后端(服务器)保持长连接。前 端经由这个连接给后端发送指令,而后端会返回捕捉到的数据流。后端返回的是原始 HTTP协议,所以这个HTML页面上还包含一个用Javascript写的HTTP协议解析器,解析后 再将结果显示在页面上。

前端的DOM操作用的是Zepto;语法高亮则是highlight.js.

至于后端,当然就是Python+aiohttp啦,另外还有jinja2zeromq…… 很多实现细节我已经在上一篇文章里交代了,这里就不啰嗦了。值得一提的是后端 用aiohttp实现了很多平台的OAuth逻辑,看哪天把它们单独拿出来变成一个package呗~

源码

托管在Github上,欢迎来fork :)