前言
在我前面两篇文章中分别介绍了proxychains(参见:家庭数据中心系列 强大的局部代理工具:proxychains)和gost(参见:家庭数据中心系列 使用gost搭建自己的代理服务器及转发代理链)这2种软件。
按逻辑顺序来说,gost是解决有没有代理,是什么协议代理的问题,那么proxychains就是解决的如何让linux命令行的的各种基于tcp的应用在需要的时候如何使用这些代理的问题。按照这个逻辑往下说,今天要介绍的proxifier,就是解决的在桌面系统中那些原本不支持设置代理的软件如何使用这些代理的问题。
有些桌面版的软件支持代理,比如telegram(其实也是最近这1年多才支持,以前不支持):
有些可以使用代理,但是并不是通常的协议,比如whatsapp桌面版:
ps:whatsapp的代理有专门的搭建方式,但是我搭建完成以后虽然容器里一切正常,但是在whatsapp里就是显示连接不成功,把我弄得没脾气~,最后也放弃了,就当它不支持吧,反正它也不支持传统的socks5协议。
其实严格来讲,支持在软件里设置代理的是少数,绝大部分的软件都是不支持设置代理的,但是如果说为了这些软件能正常工作,把我整个电脑的流量都进行科学处理,我也不方便,比如我要用迅雷下个片什么的咋办?而且这样访问国内的很多网站也会有问题。。所以对于这些事实上需要走代理(譬如国外的一些软件),但是实际界面里却没有设置代理选项的这些软件,proxifier就是最佳的解决方案了。
配置proxifier
proxifier软件可以在官网下载:https://www.proxifier.com/,默认软件有31天的免费试用期,具体的安装我就不介绍了,在macos下和win下就是正常的安装软件的过程(想白嫖的只能自己想办法了),没啥可说的,所以直接进入界面进行配置介绍
添加proxies
Proxies:
这个界面就是添加代理服务器地址:
为什么上图中我说推荐使用socks5协议?因为proxifier里默认支持的协议除了socks4、5以外,就只有https的选项,要知道https代理服务器涉及到可信证书这个问题,搭建肯定比http代理服务器稍微复杂一些(具体搭建https代理并解决证书问题可以参看我上一篇文章:家庭数据中心系列 使用gost搭建自己的代理服务器及转发代理链),那么为什么proxifier默认不提供http代理的选项呢?
官方解释如下:
混淆 HTTP 代理和 HTTPS 代理是一种常见的误解。HTTP 代理服务器可以处理 HTTP 连接(80 端口)。它们还可以支持 HTTPS 连接(SSL),但通常只允许在 443 端口(HTTPS 的标准端口)上进行此类连接。例如,这是 Squid 和 Microsoft ISA 代理服务器的默认配置。如果 HTTP 代理服务器允许在任意端口上进行 HTTPS 连接,则可将其称为 HTTPS 代理服务器(也称为 CONNECT 或 SSL 代理)。在这种情况下,它可用于通用 TCP 连接,如 SOCKS v4/5 代理。Proxifier 可与不支持任意端口 HTTPS 的 HTTP 代理服务器配合使用。由于该协议的技术限制,只能使用此类代理服务器处理 HTTP 连接。这意味着必须相应配置 Proxification 规则。
大意就是proxifier认为常见的http代理虽然能支持https连接,但是其实是有条件的(例如只在443端口上监听的http代理),而如果这个http代理能在任何端口上都监听并实现https连接,其实它已经不是http代理,而是https代理了~~~~好吧,有点绕,不过大概意思是表达清楚了,就是信不过通常的http代理。而如果你非要使用http代理,要打开以下选项:
然后这时候就多出了http选项:
配置Rules
上一节添加了可用的代理服务器,这一节就是使用Rules将需要使用代理的软件和可用的代理服务器关联起来。
首先需要明确的一点是,一旦启动了proxifier,实际上它已经接管了系统内所有外向网络连接请求,只不过默认有一条Rules允许所有网络连接以"Direct"的方式直接访问网络而已,如下图:
所以我们要做的就是为需要使用代理的软件添加新的Rules,将其流量劫持下来并发往代理服务器。
以telegram为例:
其他需要使用代理的软件按照这种方式依次添加即可,需要注意的是,这个规则是按照从上到下的顺序依次匹配,所以大家在添加规则的时候需要考虑到这个匹配顺序问题。
另:如果想要全机全局代理怎么办?只需要把默认规则的Action从"Direct"改为使用你的某个代理即可。
DNS
DNS里最主要的是红框中上下的2个选项:"Detect DNS settings automatically"和"Resolve hostnames through proxy",这2个选项是2选一的。
"Detect DNS settings automatically",这是默认选项,就是使用本机的DNS解析域名。"Resolve hostnames through proxy"是使用代理服务器上的DNS来解析域名,如果你觉得本机的DNS解析结果有被污染的可能,而代理服务器上的DNS解析结果值得信任,就勾选该选项即可。
http代理配置技巧
我们前面的内容提到过,proxifier对http代理的不信任,假如你只有一个http代理可用,没得选择,也只能硬着头皮上了。那如果按照前面的配置方法配置后软件使用的确有问题,例如,steam可以正常访问页面,但是访问社区与市场时候报如下错误:
诸如之类的不正常,那么可以考虑以下解决方法,简单来说就是相同代理同时添加两次,一次是http,一次是https,如下:
然后在Rules的时候将目标端口80和443端口分别进行添加,80关联http代理,443关联https代理,如下图:
代理链
proxifier也支持代理链功能:
有需要的朋友自己配置吧。
注:详细代理链的概念和构建请参见我另一篇文章:家庭数据中心系列 使用gost搭建自己的代理服务器及转发代理链。
后话
代理三剑客:gost、proxychains、proxifier终于全部写完了,在自己有科学或者魔法出口的情况下,如果再加上tailscale的配合,这3者搭配可以实现几乎所有你能管理的设备的科学自由,不管那设备是在何方。。简直爽得一塌糊涂,能用到什么程度就看大家脑筋的灵活程度了。