在我的工作中,http://twitter.com被屏蔽了,但https://twitter没有。有没有办法让所有程序/浏览器使用 HTTPS 协议而不是 HTTP 访问这个 URL?
这特别涉及需要访问站点的第三方客户端,但通常硬编码为 HTTP,无法更改它们。
更新:我试图按照下面的建议创建一个提琴手脚本,但我无法让它正确运行。脚本的答案将是最有帮助的,或者另一种完全由访问组成的方法。
我想知道是否所有第三方应用程序都会真正考虑代理设置。或者如果更改系统范围的代理设置可能会干扰其他应用程序。(就像互联网访问需要公司的代理,所以不能仅仅为了重定向流量而改变twitter.com
。)幸运的是,当应用程序不使用 HTTPS 时,它找不到中间人。所以:twitter.com
使用DeleGate在端口 80 上设置一个中间人。
以下步骤已在 Mac OS X 10.6 和 Windows XP 上使用具有完全管理权限的帐户进行测试。
下载代理。不要让 1990 年代的主页欺骗了您:该程序仍在维护中。
根据 HTTP 请求中 Host 标头的值,告诉 DeleGate 将端口 80(和 443)上的所有本地请求转发到 HTTPS 服务器。就像在 Intel 上的 Mac(sudo
需要使用低于 1024 的特权端口):
sudo ./macosxi-dg -v -P80,443 \
SERVER=https \
RELAY=vhost \
RESOLV=cache,dns \
STLS=-fcl,fsv \
ADMIN=a@b.c
Run Code Online (Sandbox Code Playgroud)
对于 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
Run Code Online (Sandbox Code Playgroud)
如果您需要使用公司的代理来访问 Internet,那么如果您PROXY=proxy.example.com:8080
在命令行中添加类似的内容,DeleGate 将很乐意使用它。
在您的/etc/hosts
文件(c:\windows\system32\drivers\etc\hosts
在 Windows XP 上;有关其他操作系统上的位置,请参阅维基百科)中,添加以下行以将所有请求定向twitter.com
到您自己的计算机。请注意,从域名到 IP 地址的映射不考虑协议。所以:这不仅用于 HTTP,还用于 HTTPS(以及其他所有内容,例如像 一样的命令ping
)。
127.0.0.1 twitter.com
Run Code Online (Sandbox Code Playgroud)确保您的浏览器未设置为使用代理服务器,或添加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
Run Code Online (Sandbox Code Playgroud)
当使用MOUNT="/* https://twitter.com/*"
而不是RELAY=vhost
then evenhttp://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 :
Run Code Online (Sandbox Code Playgroud)
在不带-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
Run Code Online (Sandbox Code Playgroud)
最后,人们可能想知道 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4067 次 |
最近记录: |