在校园里,经常要使用代理上网的方式,Proxifier可以让不支持通过代理服务器的软件能通过HTTPS或SOCKS代理或代理链,俗称“透明代理”,支持Xp,Vista,Windows 7操作系统。虽然Proxifier在Windows 8下可以正常安装,但是使用却不是十全十美的,所有桌面程序都可以正常通过Proxifier实现代理上网,但是在Metro界面下,所有Metro应用却完全不经过Proxifier的透明代理,并且导致所有Metro无法连接互联网(即使不打开Proxifier)。难道是不兼容?显然不是,毕竟桌面程序没问题。
经过上网搜索发现,找到了一篇博文"How to use Proxifier for Windows 8 MetroStyle apps"讲解了如何让Metro应用可以使用Proxifier,同时也引用了一篇MSDN上的博文Revisiting Fiddler and Windows 8 Metro-style applications",提到了为什么Metro Apps运行的特殊性,摘录重点部分如下:
Metro-style applications run inside isolated processes known as “AppContainers,” and by default, AppContainers are forbidden from sending network traffic to the local computer (loopback)
由此可知,Metro Apps是运行在被隔离的AppContainers环境中,该环境阻止了网络流量发送到本机,即Loopback。从而,像Fiddler这样著名的抓包工具也没法抓取Metro Apps的HTTP请求等记录。
为了让Fiddler能够抓包(在开发时方便调试Metro程序),MSDN那篇博文上给出了新版本的Fiddler,里面包含了一个EnableLoopback Utility的工具,可以Exempt(豁免)部分或全部Metro应用,从而让Metro应用能够Loopback,当然也就能使用Proxifier了。OK,下面给出具体的方法。
1、从这里这里下载最新版的Fiddler并安装
2、打开Fiddler,点击"Win8 Config"或者Tools->Win8 Loopback Exemptions,这时会弹出一个新窗口"AppContainer Loopback Exemption Utility",如果你要将所有Metro Apps都使用Proxifier,点击"Exempt All",然后点击"Save Changes"
3、运行Proxifier,并设置规则让Fiddler进程通过透明代理
这样,所有Metro Apps的HTTP请求都经过Fiddler并且使用Proxifier的透明代理了
下图就是运行商店应用(Store)后Fiddler里HTTP请求的记录,是不是很爽?该方法唯一的麻烦之处是需要一直运行Fiddler,当然你可以将Fiddler设为开机启动,或者Ctrl+M将其最小化到system tray