简介
LightProxy是阿里巴巴开源的一个跨平台网络代理工具,底层基于whistle,虽然已不再维护,但是目前为止还没有找到更好用的替代品,基于已经习惯以及暂且够用的原因,目前本人还在重度使用中。
本质上lightproxy只是基于whistle做了一层皮,但是做了一些小的优化,且图形化的软件肯定比控制台使用起来方便一些,所以本人更喜欢用lightproxy。
- whistle文档:http://wproxy.org/whistle/plugins.html
- lightproxy羽雀文档:https://www.yuque.com/lp/doc/quick-start
下载
lightproxy官网已无法访问,github这里还可以下载:
或者从语雀文档下载:https://www.yuque.com/lp/doc/quick-start
推荐使用姿势
由于lightproxy不稳定,使用系统代理方式经常导致整个电脑都间歇性断网,推荐采用 lightproxy
+SwitchyOmega
的组合方式使用,SwitchyOmega是一个Chrome插件。
首先,关闭lightproxy的系统代理:
然后使用的时候根据需要切换不同代理即可:
配置示例
修改responseBody
方法一:resBody
修改响应内容可以用resBody
:
haoji.me/test.json resType://application/json resBody://({"a":1})
但是resBody有很多不方便:
- resBody只是修改响应内容,仍然会先发送请求到目标地址,如果是一个不存在的域名,会报错;
- 虽然可以直接在resBody后面写内容,但是有很多限制,很多字符不能出现,比如不能有空格;
- 一般需要单独配置values或者指向磁盘文件,但是这样又不方便直接分享他人;
方法二:file (推荐)
- 优点:简洁,清爽;
- 缺点:输出json的时候必须写标准JSON,不是很方便;
特别注意,LightProxy和whistle语法不太一样,LightProxy写法:
haoji.me/test.json file:///`{
"code": 0,
"data": {
"test": true
}
}`
haoji.me/test.html resType://text/html file:///`<div style="color:red">你好</div>`
whistle语法:
haoji.me/test.json file://{test.json}
```test.json
{
"code": 0,
"message": "fsdfds",
}
```
方法二:Nodejs
可以采用Nodejs语法实现:
test.com/a.json scriptfile://`
exports.handleRequest = async (ctx, next) => {
ctx.set({'content-type': 'application/json; charset=utf-8'});
ctx.body = JSON.stringify({a: 1});
};
`
- 优点:自由,没有限制,可以写非标准JSON;
- 缺点:引入Nodejs语法,分享给非前端同学会怪怪的;
替换responseBody
resReplace
- 适用场景:适合非常简单的普通字符串替换。
把 https://haoji.me 首页的好记么
全部替换成不好记
:
haoji.me resReplace://`好记么: 不好记`
也可以用正则,例如,把 github
换成 git_hub_
:
haoji.me resReplace://(/git(.+?)(\.)/g:git_$1_)
可以同时写多条替换规则。规则过于复杂的只能采用values写法,建议这种情况下直接上nodejs。
Nodejs
- 适用场景:适合需要复杂替换规则的场景
www.baidu.com scriptfile://`
exports.handleRequest = async (ctx, next) => {
const { headers } = await next();
const resText = await ctx.getResText();
ctx.body = resText.replace(/div/g, 'd_i_v');
};`
修改请求headers
test.com baidu.com reqHeaders:///`X-Raw-Host: xxx.com`