我用 Rust 开发了一个开源的代理抓包工具,让免费好用的工具惠及更多开发者,介绍下这个项目的心路历程。
回想职业生涯,已经做过很多激动人心的东西,属于自己的 GitHub 仓库已经快 60 个了,做过组件库,自己的 vim 配置,博客,CSS 编译器,却没有一个真正自己认可的产品。
恰巧年底的时候看到有人用 Rust 写了一个代理抓包命令行,在这个时间点,我刚好用 Rust 给 biome 贡献了些许代码,对于 Rust 手感还算热乎
马云说过年轻人总是晚上想的天花乱坠,白天什么也不干。
听从前辈的指引,敢想敢干,做就做的好一点,不要做成玩具级别的,要做就做成产品级别的(虽然现在还差得远)
我发现市面上代理抓包的工具很多,但是好用的都是收费的,那么我就搞个开源的,让他免费,这样我就有我对应的受众了,有人用就有需求,有需求就用动力迭代(但是事情发展的远远没有我想想的顺利)。
跟打怪升级一样万事开头难,首先是原型设计就难住了我,本人多年前端,但是对于 UI 设计方面一窍不通,还想出钱找朋友设计来着,奈何囊中羞涩只能作罢。
恰逢 AI 风头正盛,之前调研 AI 相关能力的时候,使用 V0 做了点东西,感觉效果不错,于是过年期间在淘宝买了个共享账号,使用 V0 疯狂画原型,家里人问我怎么放假了还不休息,我笑笑不回答,我正为梦而行,早就进入心流状态,又岂会在乎休息二字。
经过一周的努力也算做出了心中的原型,但是原型实现起来可累死了老命。

初版原型
V0 做的原型开发确实不错,但是写的代码根本不可维护,千行代码对他来说只是小试牛刀,于是自己按照原型自己写。
这时候我还没有对 AI 提取代码质量方面的规范,后面使用 Copilot 等类似产品的时候,AI 也是用的炉火纯青,甚至也想做点 AI 项目,不过都被自己劝回来了,一定要先干好一件事,在多线开花。
话说回来,前端打包工具现在市面上也不少选择的,最初使用 nextjs 框架写前端,想着也算 React 界门面了,后来发现这东西就是一坨,不好改,开发慢,等等各种问题,最终换成了 rsbuild 开发体验直接飞起。
底层框架这方面坑还有很多,就不都说了,显得像个怨妇是的,好在坚持过来了,经过国内假期的开发,代理抓包的基础能力总算是完成了。
最初版本的代理抓包能力,基本上都是自己写的,日志传递通过自建一个长连接的形式,写着写着就发现,这玩意太废人了,我要在 Rust 方面定义的类型,在前端也定义一遍,因为自己通过 hyper 框架写的,不太好接 swagger,这个繁琐的工作量极大的降低了我的开发热情,放弃的心思又涌上心头。
于是就开始搜索怎么类型共享,还好前人走过的坑,我不出意外的又走了一遍,世界上还是聪明人多,使用 ts_rs 解决了类型共享的问题,但是工作效率还是低,因为我要手写接口,axios+react query 的模板代码,让我仍然痛苦不堪。
经过 N 天的努力,我将 axum 集成到项目中,请求接口通过 axum 暴露给前端,这样我就能用上 swagger 了,用上了 swagger 再加上 orval 前端模板代码统统自动生成,开发体验又再度起飞。
经过不懈的努力,我终于开发出第一个版本了,于是又遇见了另一个难题,人太多了,开发的人太多了,githubGitHubgithub 上根本不缺项目,怎么让我的项目能上 GitHub,直接放到 GitHub 不会有任何人发现这个项目的。
世界上只存在两种软件,一种是没人用的,一种是又 BUG 的
显然我的项目目前属于前者,我开始绞尽脑汁想如何推广,好用的前提是不断迭代,这都没人用,我咋迭代呀,苦了我喽。
于是,在 V2ex 上发表文章,V 友人好心善,赏了点 star,也在阮一峰周刊自荐,每期都看,没想到竟然能被选中,涨了好多 star,但是仍然存在一个问题,star 上去了,依旧没人用。

阮一峰的周刊
我自认为代码已经写得不错了,使用 tower (Rust 的洋葱模型)进行 layer 开发,非常可拓展,代码也和 AI 结对编程,写了很多测试,但是目前为止仍然效果不佳。
我一时间陷入了两难,说这项目不好吧,又有人点 star,说这项目好吧,又没人用,于是又去 V2ex 上发文章,问大哥们怎么推广自己的开源项目,V 友热情回复,多平台推广,大大方方的,于是我就个个平台发很简短的推荐。
效果也不错阅读量还是有的,除了掘金不知道怎么搞的没啥反应,看到了些效果,又有动力继续做了,但是我得先推广推广,虽然当前已经满足我自己需求以及我另一个不喜欢 postman 登录同事的需求,但我得让更多人看见,这样能有更多的建议,也就能让这个项目不断前进了。
如果你对这个项目感兴趣的话,辛苦帮忙给项目点个赞,每个赞都是作者坚持不懈的动力
不知道大家代理抓包感兴趣不,如果感兴趣的话可以地下评论,我后续可以出些教程。
同时也欢迎大家一起参与这个项目,大家一起玩就更好玩啦。
Gitee lynx-proxy: Lynx Proxy is a high-performance and flexible proxy tool developed in Rust