再谈不要乱改Android的hosts文件

  前段时间写过一篇文章,告诉大家不要乱改自己android手机的hosts文件。最近经过研究发现,不要乱改这个结论是对的,但是是不够的,正确的结论应该是——最好什么也别改,除非你真的知道自己在做什么。
  请大家不要参考我那篇文章中推荐保留的hosts记录,因为几乎全都不需要而且可能带来访问某些服务的障碍。放弃上次的思路,这次我们从完全不用hosts文件出发,发现不同于PC上,手机的网络上大部分google服务是可以正常使用的,不需要修改hosts。只有少数的服务不能用/不太好用,所以我们从0开始,一条条添加hosts记录而不是删除没用的,下面我们就来一条条列举:

  1、google listen
  是的,你没有看错,如此小众的服务才会需要hosts的帮助,因为这个不受google待见的小app使用了appspot——后果你懂的。我们需要在hosts中加入如下一句:

203.208.46.148 lfe-alpo-gm.appspot.com

  2、music beta by google
  稍微大众一些的服务了,这个还是比较有价值的。它在国内的网络上的问题很有趣:使用了常用的hosts文件就会不能同步音乐列表,但是去掉hosts文件就会无法播放。为此,你需要确定你的hosts文件中没有这个网址googleapis.l.google.com和这个网址www.googleapis.com,这两个中的某一个(今天白天我实验出来的,现在忘了……)只要设置成google.cn系列的IP,就会导致它不能同步。为了播放音乐,你需要添加以下内容

203.208.46.148 music.google.com
203.208.46.148 t.doc-0-0-sj.sj.googleusercontent.com
203.208.46.148 music-streaming.l.google.com
203.208.46.148 music.googleusercontent.com
203.208.46.148 uploadsj.clients.google.com
203.208.46.148 large-uploads.l.google.com

  3、google docs
  这个是重头戏,倒不是因为docs有多么重要,关键是因为这玩意太需要天时地利人和了。
  首先,你不能有这条记录apis.google.com,不管你设置的是什么IP,只要有这个域名就不行。
  其次,你必须有这条记录

209.85.225.101 docs.google.com

  注意,既不是google.cn系的IP,也不是你用just-ping得到的香港IP——中文地区用的IP似乎都被过滤了google docs,只有这个欧美用的(根据just-ping的结果)IP似乎勉强能用,但还是断断续续、时好时坏、长文件也很难完整载入
  最后,你最好去掉所有的google.com/www.google.com/www.l.google.com等与web访问相关的记录,docs在打开文件的时候有一个复杂的跳转过程,其中似乎会访问到google.com系列的域名,(不是十分确定的)只要你在这些域名上使用了google.cn系IP就会出错。

  4、其他
  也许你需要在手机上通过浏览器访问一些google服务,那么也许你可以加上这些:

203.208.46.148 feedburner.google.com
203.208.46.148 www.feedburner.com
203.208.46.148 feeds.feedburner.com
203.208.46.148 feeds2.feedburner.com
203.208.46.148 feedproxy.google.com
203.208.46.148 goo.gl
203.208.46.148 g.co
203.208.46.148 groups.google.com
203.208.46.148 groups.google.cn
203.208.46.148 groups.google.com.hk
203.208.46.148 groups-beta.google.com
203.208.46.148 groups.l.google.com
203.208.46.148 blob-s-docs.googlegroups.com

  以及其他你想访问的东西,比如google code等。
  如果你像我一样使用pulse,那么你可以加上

203.208.46.148 hr-pulsesubscriber.appspot.com

  如果你要用twitter的官方客户端(建议别用,原因看这里),加上这个就行

199.59.149.243 oauth.twitter.com
199.59.149.243 twitter.com
199.59.149.243 www.twitter.com
199.59.149.243 mobile.twitter.com
199.59.149.243 api.twitter.com
199.59.148.201 search.twitter.com
199.59.148.139 userstream.twitter.com
199.59.149.243 ssl.twitter.com
199.59.149.243 status.twitter.com
199.59.149.243 assets0.twitter.com
199.59.149.243 assets1.twitter.com
199.59.149.243 assets2.twitter.com
199.59.149.243 assets3.twitter.com
199.59.149.243 static.twitter.com
184.29.36.124 platform.twitter.com
219.76.10.138 platform0.twitter.com
199.59.148.206 help.twitter.com
199.59.148.206 support.twitter.com
209.84.4.102 si0.twimg.com
209.84.4.102 si1.twimg.com
209.84.4.102 si2.twimg.com
209.84.4.102 si3.twimg.com
209.84.4.102 si4.twimg.com
209.84.4.102 si5.twimg.com
199.59.149.243 upload.twitter.com
199.59.149.210 t.co

  是的,相信我,你不再需要其他的了。除了youtube我们真的无能为力以外,talk/mail/maps/goggles/market/reader/google+等几乎所有通过apps可以访问的服务,都是正常的,不需要你画蛇添足。
  国内手机网络上解析到的google在香港的IP速度往往不亚于google.cn系,而且通过一些复杂的跳转还会自动使用cn系的某些服务器(market下载的时候似乎会),而乱改hosts只会让你上网更慢,甚至无法访问一些服务。比如很多人在手机上像PC上一样定期更新hosts列表,然后再寻找修改版的google maps来用(见这里,这是一个典型的画蛇添足、却由于换行符错误导致hosts文件不起作用,误打误撞成功访问了一些服务,却自以为是hosts起作用的“中医式”笑话)殊不知官方版的maps在没有hosts记录的情况下工作得非常好。
  需要提醒的是,大家一定要注意android上hosts文件的换行符必须是\n而不是windows的\r\n,你可以用notepad++打开hosts文件,点菜单中的view-show symbol-show all characters,看到行末是LF就正确,CR LF就错误。如果是后者,你需要替换所有的CR LF为LF(用它的replace中的扩展模式)。
  结论已经写在上面了,不要自作聪明乱改android的hosts文件,一方面android的app机制不同于PC系统中的程序,很多网络访问并不是通过在程序中写域名来实现的,google.cn系的服务器并不适合手机apps的使用;另一方面手机网络比主干的线路似乎少了很多DNS污染,所以没有必要修改hosts记录。如果你真的需要解决某个服务不能访问的问题,那么对症下药就好,千万不要使用长长的hosts列表。

Related posts:

  1. 慎改Android的Hosts文件
  2. 在国行双网机(如i909/i809)上使用Android Market购买app研究小结
  3. twitter官方客户端导致android联系人功能不能访问

3 comments on “再谈不要乱改Android的hosts文件

  1. 我也买了个android (moto atrix 4g),虽然很多服务没法用,我都没有折腾的力气了。

    你的水平,快可以给人修手机了 :)

    (如果重复留言,就删了这一条吧)

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">