用google.cnåšproxy访问Googleçš„æœåŠ¡
最近玩Google App Engine,å‘现éšç€é—¹è¿ä¼šçš„结æŸï¼Œè¿™ä¸ªä¸œè¥¿ä¹Ÿé‡æ–°ä¸å¯è®¿é—®äº†ã€‚今天å¶ç„¶åœ¨SMTHçš„Python版上看到的。éžå¸¸å®žç”¨çš„一个方法,原始作者ä¸å¯è€ƒï¼ŒäºŽæ˜¯æ•´ç†ä¸€ä¸‹å†™åœ¨è¿™é‡Œã€‚
简å•çš„说,Google的所有æœåŠ¡éƒ½æ˜¯å¯ä»¥é€šè¿‡ä¸€ä¸ªç›¸åŒçš„æœåŠ¡å™¨è®¿é—®åˆ°ï¼ŒGoogleæ ¹æ®è¯·æ±‚çš„URL当ä¸çš„域åæ¥å†³å®šåº”该定å‘到哪个æœåŠ¡ã€‚www.google.cnä¸€æ ·å¯ä»¥è®¿é—®åˆ°æ‰€æœ‰çš„æœåŠ¡ï¼Œä¾‹å¦‚App Engineã€‚ä½†æ˜¯å› ä¸ºDNSæœåŠ¡å™¨çš„åŽŸå› ï¼Œappengine.google.com会被定å‘到Google美国的æœåŠ¡å™¨ï¼Œä¸ä¼šåŽ»è¿žæŽ¥www.google.cn。但是事实上,如果我们能够å‘www.google.cnå‘é€ä¸€ä¸ªHTTP请求,其ä¸çš„URL是指å‘appengine.google.com的,æœåŠ¡å™¨ä¸€æ ·èƒ½å¤Ÿå¸®æˆ‘们ä¸è½¬è¯·æ±‚ï¼Œå¹¶æŠŠç»“æžœä¼šä¼ ç»™æˆ‘ä»¬ã€‚
è¦è¾¾åˆ°è¿™ä¸ªç›®çš„有两个方法,一个是修改hosts,让appengine.google.comå’Œ*.appspot.com指å‘到www.google.cnçš„IP地å€ã€‚这个有两个劣势,一个是www.google.cn其实有很多个地å€åšè´Ÿè½½å‡è¡¡ï¼Œä¸€æ—¦åŠ 上了hostsæ¡ç›®ï¼Œå°±å¤±åŽ»äº†è´Ÿè½½å‡è¡¡çš„好处;å¦ä¸€ä¸ªåŠ£åŠ¿æ˜¯hosts文件ä¸æ”¯æŒ*.appspot.comè¿™ç§è¯æ³•ï¼Œæ‰€ä»¥åªèƒ½æŠŠè‡ªå·±çŸ¥é“çš„appspotä¸Šçš„åº”ç”¨ç»Ÿç»Ÿæ·»åŠ ã€‚
å¦ä¸€ä¸ªæ–¹æ³•åˆ™ç›¸å¯¹å¥½ä¸€ç‚¹ï¼Œå°±æ˜¯æŠŠwww.google.cn:80设置æˆè®¿é—®appengine.google.com的代ç†æœåŠ¡å™¨ã€‚è¿™ç§æ–¹æ³•å¾ˆå¥½ç”¨ï¼Œä½†æ˜¯éœ€è¦å†™PAC文件(Proxy Auto-Config,代ç†æœåŠ¡å™¨è‡ªåŠ¨é…置文件)。所幸这个文件è¯æ³•ç›¸å½“简å•ï¼Œå› æ¤å¯ä»¥ç›´æŽ¥å†™ä¸‹é¢ä¸€æ®µï¼š
function FindProxyForURL(url, host) {
   if (shExpMatch(host,"*.appspot.com")) {
       return "PROXY www.google.cn:80";
   }
   if (shExpMatch(host,"appengine.google.com")) {
       return "PROXY www.google.cn:80";
   }
   return "DIRECT";
}
然åŽä¿å˜æˆä¸€ä¸ªproxy.pac文件。在æµè§ˆå™¨çš„é…置当ä¸ï¼ŒæŠŠâ€œè‡ªåŠ¨æµè§ˆå™¨é…置脚本â€çš„é…置项指到这里å³å¯ã€‚
什么时候ä¸ç”¨ç¿»å¢™å°±å¥½äº†ã€‚。。虽然墙的å˜åœ¨å¤§å¤§æ高了我国网民的电脑水平,呵呵