mitmproxy 太慢了,有没有性能更好的替代品?

2022-02-19 17:45:04 +08:00
 smilebaby

最近在使用 mitmproxy 作为中间人代理服务器做一些对 https 请求和响应的中间修改。现在的问题是 mitmproxy 非常慢 , 在请求到达和响应完成都会增加几百毫秒的延迟,问问大家有没有这样一款代理服务器:

1.像 mitmproxy 也可以有插件机制的 https 代理服务器。 2.性能快一点,真正的请求以外的浪费尽量少;能支持 https 长链接,不要每次请求好像都要重新握手。

7382 次点击
所在节点    Python
37 条回复
smilebaby
2022-02-19 21:47:11 +08:00
@zer 这个知道,感觉和 fiddler 一类,有界面的东西,感觉不会快。
monkeyWie
2022-02-19 21:49:51 +08:00
java 的可以吗,试试我这个: https://github.com/monkeyWie/proxyee
smilebaby
2022-02-19 21:55:47 +08:00
@monkeyWie 谢谢推荐。
smilebaby
2022-02-19 22:00:36 +08:00
@monkeyWie 才发现您是作者,厉害!我需要找朋友随后实验一下。我现在的问题主要集中在浏览器和代理间这个交互需要保持长链接,使用场景是同一台机器上,希望通讯时间能降到 10ms 一下。https 通讯同一台机器上保持长链接并降到 10ms 以下,您觉得可能吗?
smilebaby
2022-02-19 22:03:02 +08:00
先忽略代理服务器和真实网址之间交互的性能问题。( 1.大部分情况是自己组织伪数据,2.有真实的请求也可以自己实现不用代理程序自己的。)
llbbzh
2022-02-19 22:36:26 +08:00
Fiddler 性能不错的呀,感觉比 Mitmproxy 好不少
0o0O0o0O0o
2022-02-19 22:40:44 +08:00
我用过很多 mitm 工具和库,对于你描述的场景,我还是建议你自己实现。go 有不少 mitm 实现,找个用用,十行不到就能实现一个简单的 mitm ,语言跨平台,而且也不用找什么插件系统了,自己写代码实现想要的功能。
0o0O0o0O0o
2022-02-19 22:44:09 +08:00
import "github.com/elazarl/goproxy"

proxy := goproxy.NewProxyHttpServer()
proxy.OnRequest(goproxy.ReqHostMatches(regexp.MustCompile(pattern))).
HandleConnect(goproxy.AlwaysMitm)
// proxy.OnRequest ...
// proxy.OnResponse ...
smilebaby
2022-02-19 22:48:33 +08:00
@0o0O0o0O0o 是个新思路,多谢!
neohob
2022-02-19 23:06:07 +08:00
socat gost realm
mrchi
2022-02-20 09:14:46 +08:00
这是用到生产环境上了?这玩意难道不是调试用的吗?调试时候多了几百豪秒延迟你能感觉出来?
monkeyWie
2022-02-20 10:58:52 +08:00
@smilebaby #24 我这边的实现会保持和复用浏览器和代理服务器的连接的
smilebaby
2022-02-20 11:22:32 +08:00
@monkeyWie #32 那太好了!我想办法试用一下。
SergeGao
2022-02-20 13:31:36 +08:00
可以试试 whistle ,https://github.com/avwo/whistle
smilebaby
2022-02-21 09:05:37 +08:00
@SergeGao 好的。还是非常希望能有个 支持 python 的。 这一块是 python 的强项啊。
warcraft1236
2022-02-21 11:11:59 +08:00
奇怪,如果你的所有返回都是自己构造的,那么你应该做一个 mock server ,这样也不会存在性能问题
smilebaby
2022-02-21 13:00:26 +08:00
@warcraft1236 你是说不过代理,直接做个假的 web 服务吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835061

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX