reqable / reqable-app

Reqable issue track repo
https://reqable.com
3.1k stars 107 forks source link

[feature] 支持透明代理 (Transparent proxy support) #337

Open hiuxia opened 8 months ago

hiuxia commented 8 months ago

原因

Feature 请求说明

希望能够在 system proxy 之外添加增强模式代理(网络层代理)从而实现更好的抓包体验。

MegatronKing commented 8 months ago

@hiuxia 请问你测试的是Reqable的哪个版本?

hiuxia commented 8 months ago

最新的 2.0 版本

MegatronKing commented 8 months ago

@hiuxia 我这clash和surge这些操作一知半解,由相关的一些文章可以给我参考下吗?

hiuxia commented 8 months ago

感谢这么快的回复。我觉得可以参考 Surge 增强模式参考

hiuxia commented 8 months ago

clash 的文档的存档:存档 其中的 premium 部分应该就是增强模式的详细说明(只找到了英文的文档)。

MegatronKing commented 8 months ago

@hiuxia 我看了下,机制好像是创建一个虚拟网卡,所有流量从虚拟网卡经过,类似VPN的模式。这种模式下,数据包需要从网络层开始处理。Reqable本身是实现了应用层(包括SSL)的透明代理的,通过一些第三方工具,解析出应用层的数据包直接发给reqable即可。如果是全部集成到Reqable里面,需要一些第三方库的支持,兼容性也不好说,有难度。

hiuxia commented 8 months ago

您能推荐下相关的网络应用层解析工具吗?

获取 Outlook for iOShttps://aka.ms/o0ukef


发件人: Megatron King @.> 发送时间: Tuesday, December 26, 2023 2:20:08 PM 收件人: reqable/reqable-app @.> 抄送: hiuxia @.>; Mention @.> 主题: Re: [reqable/reqable-app] [feature] 支持透明代理 (Transparent proxy support) (Issue #337)

@hiuxiahttps://github.com/hiuxia 我看了下,机制好像是创建一个虚拟网卡,所有流量从虚拟网卡经过,类似VPN的模式。这种模式下,数据包需要从网络层开始处理。Reqable本身是实现了应用层(包括SSL)的透明代理的,通过一些第三方工具,解析出应用层的数据包直接发给reqable即可。如果是全部集成到Reqable里面,需要一些第三方库的支持,兼容性也不好说,有难度。

― Reply to this email directly, view it on GitHubhttps://github.com/reqable/reqable-app/issues/337#issuecomment-1869290960, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AXLYB7VEBIXR4AA6PHEBNS3YLJUBRAVCNFSM6AAAAABA7MBREGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRZGI4TAOJWGA. You are receiving this because you were mentioned.Message ID: @.***>

Curious-r commented 8 months ago

@hiuxia 我看了下,机制好像是创建一个虚拟网卡,所有流量从虚拟网卡经过,类似VPN的模式。这种模式下,数据包需要从网络层开始处理。Reqable本身是实现了应用层(包括SSL)的透明代理的,通过一些第三方工具,解析出应用层的数据包直接发给reqable即可。如果是全部集成到Reqable里面,需要一些第三方库的支持,兼容性也不好说,有难度。

除了虚拟网卡方案,也有用eBPF实现的,参见这里 不过eBPF目前似乎只有linux比较成熟,其他平台不好说。windows似乎也有,可用程度不清楚

cesaryuan commented 4 months ago

目前Windows有一个工具叫做HTTPDebuggerPro,可以实现全局的应用层抓包

cesaryuan commented 2 months ago

Windows 上没有 iptables,我调查了目前大部分抓包类软件和科学类应用的透明代理实现方式,按照技术栈分类如下,总体来说推荐基于 Windows Filtering Platform (WFP) 的方案

基于 Windows Filtering Platform (WFP) 的方案

这种方案利用了 Windows 提供的 WFP API,需要进行驱动级别的编程,然而有一些项目提供了封装好的易于使用的 API,比较著名的有 Netfilter SDKWinDivert

比如:

基于虚拟网卡接口的方案

这类方案的原理一般为先创建一个虚拟网卡,然后修改路由表将所有流量转发到代理,据说在性能上不如基于WFP的方案。Windows上主流开源方案有以下两个:

具体来说,有以下几个项目:

基于进程注入 Inline Hook 的方案

这类方案通过 hook connect 函数来实现流量的重定向。基于该方案的项目貌似比较少,已知 Proxifier 在 4.0 之间采取该方式实现全局流量捕获。


参考文章