我想知道是否所有第三方应用程序都会考虑代理设置。或者,如果更改系统范围的代理设置可能会干扰其他应用程序。(就像当公司的代理需要互联网访问时,所以不能仅仅为了重定向流量而改变twitter.com
。)幸运的是,当应用程序不使用HTTPS时,它无法找到中间人。所以:twitter.com
使用DeleGate为端口80 设置一个中间人。
以下步骤已在Mac OS X 10.6和Windows XP上使用具有完全管理权限的帐户进行了测试。
下载 DeleGate。不要让1990年的主页欺骗你:程序仍然保持。
告诉DeleGate根据HTTP请求中的Host头的值,将端口80(和443)上的所有本地请求转发到HTTPS服务器。与英特尔上的Mac一样(sudo
需要使用1024以下的特权端口):
sudo ./macosxi-dg -v -P80,443 \
SERVER=https \
RELAY=vhost \
RESOLV=cache,dns \
STLS=-fcl,fsv \
ADMIN=a@b.c
对于Windows,如果解压缩为c:\
:
cd c:\dg9_9_4\bin
dg9_9_4.exe -v -P80,443 SERVER=https RELAY=vhost RESOLV=cache,dns STLS=-fcl,fsv ADMIN=a@b.c
如果您需要使用公司的代理进行Internet访问,那么如果您添加类似于PROXY=proxy.example.com:8080
命令行的内容,DeleGate将很乐意使用它。
在您的/etc/hosts
文件中(c:\windows\system32\drivers\etc\hosts
在Windows XP上; 有关其他操作系统上的位置,请参阅Wikipedia ),添加以下行以将所有请求定向twitter.com
到您自己的计算机。请注意,从域名到IP地址的映射不考虑协议。所以:这不仅用于HTTP,还用于HTTPS(以及其他所有内容,如命令等ping
)。
127.0.0.1 twitter.com
确保您的浏览器未设置为使用代理服务器,或添加twitter.com
为例外。如果您的浏览器缓存了Twitter的IP地址,您可能需要重新启动它。
现在,http://twitter.com实际上得到了你(以及你所有的应用程序)https://twitter.com
。
输出显示确实从https://twitter.com
以下位置请求HTTPS站点:
REQUEST - GET / HTTP/1.1
REQUEST = https://twitter.com:443/ GET / HTTP/1.1
[..]
ConnectToServer connected [16] {168.143.161.20:443 <- 192.168.1.68:57067}
## SSLway -- TLSxSNI: sent ru=0 ty=0 nm=localhost
## SSLway ## 0.459622 connected/accepted
## SSLway server's cert. =
**subject /
C=US/
O=twitter.com/
OU=GT09721236/
OU=See www.rapidssl.com/resources/cps (c)09/
OU=Domain Control Validated - RapidSSL(R)/
CN=twitter.com
**issuer /
C=US/
O=Equifax Secure Inc./
CN=Equifax Secure Global eBusiness CA-1
当使用MOUNT="/* https://twitter.com/*"
而不是RELAY=vhost
那时甚至http://localhost
会给一个https://twitter.com
:
当显式请求使用HTTPS时https://twitter.com
,则可信证书链被破坏:支持HTTPS的应用程序将发现中间人攻击,如果它无法请求您继续允许,则会失败:
测试后,要在Windows上作为服务运行,只需删除-v
参数即可。这将把程序安装为服务。然后它将在后台运行,并询问您是否要在启动时运行它:
Trying to start as a service [DeleGate Server -P80,443] ...
Set Automatic Start on System Startup ? [y] / n :
运行不带-v
参数的上述命令后:请参阅控制面板»管理工具»服务以手动启动或停止DeleGate。请注意,此服务将引用您最初启动该dg9_9_4.exe
程序的位置。所以,你不应该删除或移动该程序; 例如,请确保将下载解压缩,c:\dg9_9_4
以避免引用您将来可能删除的某些下载目录。
要删除该服务,只需确保为该-P
参数指定相同的值:
dg9_9_4.exe -P80,443 ADMIN=a@b.c
[..]
The service `DeleGate Server -P80,443' exists. Delete it ? [y] / n : y
OK. DELETEd the previous service.
Create a new service ? [y] / n : n
最后,有人可能想知道DeleGate如何知道twitter.com的IP地址(因为我们已将其映射到hosts
文件中的127.0.0.1 )。DeleGate实际上检索了它自己,因为RESOLV=cache,dns
:
MOUNT[5]X[2] /* https://twitter.com/*
{R} SOA got [162.143.168.in-addr.arpa][ns1.dn.net]
[dnsadmin.enterprise.verio.net] 2008121001 10800 3600 604800 86400