Windows 8 Metro Apps使用Proxifier的方法

by shinichi_wtn 2012-07-05 20:28

在校园里,经常要使用代理上网的方式,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

Comments (12) -

1b1t United States
7/27/2012 4:03:45 AM #

Thank you for sharing the link to my blog. I appreciate it.

Reply

shinichi_wtn People's Republic of China
7/28/2012 10:09:08 AM #

Thanks for your tutorial on this topic, it works like a charm Smile

Reply

Hoary People's Republic of China
8/8/2012 3:31:50 PM #

So many English words.....
终于解决了我一边用proxifier,一边win8的metro都不能联网的问题。。。
之前我自己写了个AppContainer Loopback Exemption Utility类似的软件,挂sogou代理上store。
现在终于明白为啥metro不能联网了,原来是proxifier的事情。。。
我最终的方案是使用ccproxy架设一个本地服务器,挂ie代理到本地,这样metro就可以上网了,fiddler对我用处不大,删掉了~
P.S.你也是北大的啊~

Reply

shinichi_wtn People's Republic of China
8/9/2012 11:54:33 PM #

呵呵,是啊~我平时经常使用Proxifier,但是装上Proxifier后所有的Metro程序就无法联网了,才在网上寻找解决方案的,然后就顺便了解了下Metro Apps的运行方式。

Reply

chen_wenya People's Republic of China
9/16/2012 12:48:04 PM #

谢谢

Reply

chen_wenya People's Republic of China
9/16/2012 1:02:37 PM #

但是我的metro应用还是联不上网,怎么回事呢?只有ie可以上...求解

Reply

shinichi_wtn People's Republic of China
9/16/2012 7:01:45 PM #

运行Metro程序后,你看下Fiddler窗口里是否有新的HTTP请求,如果有的话说明该Metro应用正经过Fiddler中转请求,同时看下Proxifier里面是否有Fiddler程序正在经过其代理。如果都没问题,可能是你的代理连不上Metro应用需要访问的网址。

Reply

EdiTurn People's Republic of China
10/9/2012 12:31:33 PM #

主要问题是安装了 Proxifier 之后所有 Modern UI 程序不能联网吧?如果仅需解决这个问题,我觉得使用 Proxifier Portable Edition 是一个更简便的办法。
按照上文所述方法,仍有一些程序(如 QQ)无法联网,而且我这里应用商店第一次可联网,之后就不行了。

Reply

shinichi_wtn People's Republic of China
10/11/2012 9:11:08 AM #

主要问题是学校的网只能访问教育网,必须要走代理才能使用许多内置的Metro应用。Metro QQ没用过,不知道情况,Store我这里是可以用的。回头可以试下Proxifier Portable Edition,你的意思是这个不会造成Metro Apps不能联网,但是Metro Apps还是不能走代理对吧。

Reply

mirari People's Republic of China
11/20/2012 4:12:39 PM #

这样感觉不对劲啊,fiddler装了以后必须要给Internet选项的连接里设置代理才能工作,这时候再给proxifer上设置fiddler的规则的话,WINInet的设置是全局的,所有应用程序的连接都会先通过fiddler,再通过proxifer走代理,这样的话从一开始直接在Internet选项里设置一下代理不就好了吗?但这样一来proxifer规则代理的意义就失去了啊

Reply

shinichi_wtn People's Republic of China
11/20/2012 11:39:09 PM #

用Proxifier是为了实现透明代理,如果只在Internet选项里设置代理,而代理又需要验证信息的话,很多软件是无法正常连接网络的。

Reply

shiningelf People's Republic of China
1/6/2013 11:12:13 PM #

我今天也是突然发现Metro不能上网了,网上搜了半天都不得要领,就想到会不会是proxifer导致的,卸载了果然好了。找到你这儿以后连原理也明白了,谢谢!

Reply

(仅用于Gavatar)

  Country flag

biuquote
  • Comment
  • Preview
Loading

About

shinichi_wtnI'm Shinichi_wtn

Software Engineering Manager at Microsoft

[More...]

Widget Recent Tweets not found.

The remote server returned an error: (403) Forbidden.X


Month List