我想在我的 Windows 机器上设置系统范围的代理设置。我知道 Internet Explorer 的设置,但不想那样做。有没有办法设置一个代理,它将被我机器上的所有应用程序使用(尤其是 Firefox,我不想在 Firefox 选项菜单中设置使用系统代理设置)?
2 回答
在 Windows 中,这是设置代理设置的首选方式。但是你可以看看这个命令行选项
https://superuser.com/questions/419696/in-windows-7-how-to-change-proxy-settings-from-command-line
理论上如何实现
我将提供一个有点不寻常的答案,因为我注意到这种解决这个问题的特殊“方式”(出于某种原因)到目前为止还没有出现在人们的脑海中。
如果你想让所有应用程序无一例外地通过你的代理发送互联网流量,你将不得不使用一种称为 TUN/TAP 设备的特殊技术。
简而言之,这些是特殊的驱动程序,在安装时对系统来说似乎是一个网络适配器(就像您的本地Ethernet
或Wireless card
),但实际上它们的构建方式很容易从软件级别进行控制。
基本上,当您在系统上安装这样的驱动程序时,系统现在将该设备视为功能齐全的网络适配器。因此,如果您现在将此网络适配器设置为默认网关,则所有应用程序(不知道或无法阻止它)将自动通过它,就像所有应用程序通过通用Wireless Adapter
/一样Ethernet
。
实现此目标的实用方法/如何将其与代理一起使用?
现在您已经基本了解通过 TAP/TUN 设备重定向系统流量的含义,有几种方法可以做到这一点。
在我开始之前,我真的建议即使你偏离了这里建议的资源,你也坚持使用 OpenVPN 的开源 TAP 设备,因为它已经过广泛的测试并确认可以在许多系统上工作,并且现在已经被广泛使用(一些基础知识可在https://openvpn.net/tuntap获得,我相信您应该会发现它嵌入在任何最新版本的 OpenVPN 中,您需要的唯一文件是已编译的驱动程序 (.inf),您不需要拥有安装了整个 OpenVPN 以使用它们)。
当考虑使用 SOCKS 代理作为 TAP 设备的端点时,立即想到的项目是badvpn/tun2socks。该项目基本上完全按照此处概述的方式进行,因此我绝对建议您阅读源代码,或将其用作独立实用程序(如果您需要一些使用帮助,我建议您查看此 wiki 页面。
如果使用这种方法有什么缺点呢?
首先,说到兼容性、性能和bug,使用这种方法完全没有缺点,如果有什么比系统提供的方法更可靠、更容易使用的话。
在这一点上我能看到的唯一两个缺点是:
- 您必须小心确保您使用的任何代理/中间主机至少能够处理大部分系统流量,因为如果应用程序发送不兼容的互联网流量,它仍将通过 TAP 设备重定向(即是它的目的吗)。
- 代码库可能比其他情况大
特别是对于 Firefox 执行此操作的另一种“不干净”方式
如果您只想为 Firefox 设置这个代理,有几种不干净的方法可以做到这一点:例如,通过命令行。然而,(在我看来)这是一种非常廉价和肮脏的实现方式,因为它不提供任何兼容性(基本上是一种 hack)。
结论
虽然实现这可能需要一段时间,并且代码库可能很大:
实际上,通过任何其他方式来实现与 VPN 通过 OpenVPN 服务器对您的机器的全部流量进行隧道传输时所达到的效果相同的效果实际上是不可能的。
如果您想实现这种行为,建议您使用上面概述的方法,因为它比“替代”方法更清洁(例如,通过在软件级别拦截流量)