用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文件。在æµè§ˆå™¨çš„é…置当ä¸ï¼ŒæŠŠâ€œè‡ªåЍæµè§ˆå™¨é…置脚本â€çš„é…置项指到这里å³å¯ã€‚
什么时候ä¸ç”¨ç¿»å¢™å°±å¥½äº†ã€‚。。虽然墙的å˜åœ¨å¤§å¤§æé«˜äº†æˆ‘国网民的电脑水平,呵呵