LightProxy/whistle 使用总结
本文由 小茗同学 发表于 2024-05-17 浏览(377)
最后修改 2024-05-17 标签:

简介

LightProxy是阿里巴巴开源的一个跨平台网络代理工具,底层基于whistle,虽然已不再维护,但是目前为止还没有找到更好用的替代品,基于已经习惯以及暂且够用的原因,目前本人还在重度使用中。

本质上lightproxy只是基于whistle做了一层皮,但是做了一些小的优化,且图形化的软件肯定比控制台使用起来方便一些,所以本人更喜欢用lightproxy。

下载

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`