当前位置

iPad 和 socks

起因是这样的,前段时间 LD 表弟的 iPad2 托人从美国带过来时经过了我们的手,LD 对这个白色的设备很有些兴趣,后来有一天我在 twitter 上看到有人说 Apple 中国官网上又开卖 iPad2 了,考虑到我家的 kindle3 被 LD 长期霸占,我于是撺掇 LD 咱们也买一个 iPad2 吧。

今天 iPad2 到了,LD 果真扔下了 kindle3 兴冲冲地开始玩这个新玩具,看到有个 youtube 的应用,然后——杯具地撞墙了……

这算是拿到 IT 设备的第一件大事了,google 之。因为平常在电脑上用 ssh turnnel 翻,基于此,iPad 大概有两种方法,一种在网络设置 http 代理的地方填上某个 pac 文件的地址,而在这个 pac 文件里给出 socks 的 ip 和端口。另一种是安装软件,把 socks 代理转成 http 代理(这篇 blog 的留言值得一读,有不少信息)。

对于我来说,似乎直接用 pac 文件更方便一点。不过上面那个文章里面的 pac 文件示例太简单,任何网址都去走 socks 代理。而实际上对于国内网站也用代理既不经济也不实惠,甚至今天发现优酷的某些视频只允许大陆地区的 ip 观看。那么 pac 文件里简单的过滤需要一点。如果不想使用正则的话,可以参看一下我下面写的。除了过滤被墙的网址外,主要目的是处理子域名不需过滤的情况。比方说对 google.com 使用代理,但是 mail.google.com 却不需要。

  1. var patterns = new Array("twitter.com", "twimg.com", "youtube.com", "ytimg.com", "google.com");
  2.  
  3. var patterns_black = new Array("mail.google.com");
  4.  
  5. function FindProxyForURL(url, host) {
  6.     for (i in patterns_black) {
  7.         if (url.indexOf(patterns_black[i]) >= 0) {
  8.             return "DIRECT";
  9.         }  
  10.     }
  11.     for (i in patterns) {
  12.         if (url.indexOf(patterns[i]) >= 0) {
  13.             return "SOCKS 192.168.X.XXX:YYYY";
  14.         }
  15.     }
  16.     return "DIRECT";
  17. }