一、前言
众所周知,市面上有很多出名的抓包工具,比如Fiddler、Charles、wireshark、mitmproxy;这些抓包软件都各有各的好处,不过今天小编不介绍这几种抓包软件,今天小编要为大家带来的是阿里开源的一款抓包软件-------LightProxy,翻译过来就是光代理,听名字就很牛X的样子,下面我们一起来感受下光代理的魅力。
二、说明
很多人好奇,LightProxy是什么语言写的,其实它是用前端的Elctron来进行打包并生成的,而且他的部分代理是基于Whistle,Whistle也是和Fiddler一样的抓包工具,只不过他是可以运行在nodejs上的抓包工具,设置起来更方便。那么大家可能要问了,既然有了Whistle了,为啥还要用LightProxy,这不是多此一举吗,很显然并不是,原因就在于,LightProxy有着更强大的功能,而且操作LightProxy绝对比操作Whistle要更简单,而且LightProxy可以自动完成证书安装和代理设置,让开发人员能够精确的掌握自己的开发环境,通过 代理使用规则转发、修改每一个请求和响应的内容。
三、工具作用
- 抓包,包括无线场景抓包
- 实时 hosts 绑定
- 按规则转发资源
- mock 接口,页面等
- 修改请求和响应内容,例如在页面中插入 script ,修改返回头等
四、下载安装使用
这里我们先下载光代理,有两个版本,地址如下:
mac:
https://url25.ctfile.com/f/34512525-533086562-939f08
(访问密码:7054)
window:
https://url25.ctfile.com/f/34512525-533084026-5ae437
(访问密码:7054)
当然,也可以使用git来下载,如下:
git clone https://github.com/alibaba/lightproxy
cd lightproxy
yarn run install-deps
yarn run dev
安装都是傻瓜式的,这里就不说了,下面小编启动 LightProxy ,系统代理将自动设置为 LightProxy。单击主界面上的 Whistle 选项卡,查看 Whistle 提供的数据包捕获接口,如图:
当然了,光代理还支持手机代理,也就是无线代理,方法也很简单,首先需要点击右边手机代理的标签(它会自动使代理在局域网上可见)。此时你可以看到一个二维码(不同的机器有不同的二维码,你需要扫描自己的二维码) ,扫描二维码下载相应的证书,并安装它。
注意: LightProxy 默认情况下在局域网中不可见,您必须单击移动代理选项卡在移动设备上捕获数据包以使局域网可见。安装好后就可以抓到手机上的包了。
默认情况下,LightProxy 的代理设置仅在浏览器和 Webview 上生效。如果需要在命令行上生效(例如 curl 等) ,可以使用菜单栏上提供的 copy shell 脚本函数。
单击后,代理命令将自动复制到剪贴板。在 shell 中粘贴和执行之后,诸如 curl 之类的命令将通过 LightProxy 的代理来执行。
例如,我们执行
export https_proxy=http://127.0.0.1:12888 http_proxy=http://127.0.0.1:12888 all_proxy=socks5://127.0.0.1:12889curl https://baidu.com -I
结果就是
HTTP/1.1 200 Connection EstablishedProxy-Agent: whistleHTTP/2 302server: bfe/1.0.8.18date: Fri, 19 Jun 2020 03:36:36 GMTcontent-type: text/htmlcontent-length: 161location: http://www.baidu.com/__lightproxy-host-ip__: 127.0.0.1__lightproxy-rules__: none__lightproxy-real-url__: https://baidu.com/__lightproxy-help__: See https://github.com/alibaba/lightproxy
应该注意的是,通过这种方式,只有读取环境变量的应用程序将通过代理,并且不会对所有应用程序生效。
五、总结
总体来说,LightProxy 能够让开发者完全掌控自己的开发环境,用极低的成本定制自己的开发环境,而不是总是在等待依赖方按照自己的需求提供相应的环境。
甚至于,你可以自己用 NodeJS 书写针对某个规则的响应