页面

2013年12月18日星期三

安卓的自定义系统更新后谷歌服务失效的问题

关键词:安卓,CyanogenMod,Google Services Framework,Google Play

今年上半年从 Google Play 官网买了个谷歌四儿子 - Google Nexus 4 手机。当时听闻五儿子就快出生了,我想五儿子刚出生肯定贵,而且还得等,于是果断入手四儿子。一到手就 root 了,然后刷了鼎鼎大名的 CyanogenMod 自定义系统,当时版本还是 10.0 左右。又刷了对应的谷歌服务框架,开始了中端安卓机的幸福生活。

随着不断使用,突然不知道从哪天开始,google play 打不开了,安装了的应用也莫名其妙消失了几个。比如 LINE Tools,菜单里再也没出现了,害我扫个二维码还得打开微信。尝试了几次去解决这个问题,都无功而返。今天又碰到一个想安装的 Google Play 应用,我一气之下决定彻底解决这个问题。搜索了一番,都是建议刷 hosts,但是用 SmartHosts 刷了 hosts 之后还是打不开 Play 商店,就想依电脑上的做法,重装 Play 商店。在寻找 Play 商店的 apk 的路上,顺便搜到了谷歌服务框架的安装包,我便想到,CyanogenMod 的安装包里不带谷歌服务框架,而我的 CM 已经更新到最新的 10.2 了,对应的服务框架显然没有跟着更新,莫非是服务框架的原因?

于是果断刷了个对应版本的服务框架,果然四儿子似乎跑得更带劲了,商店也能进去了,但还是更新不了应用。于是先删除了旧的谷歌账户,再重新添加,Play 商店瞬间活了过来,几个月没有更新的应用纷纷开始自动更新,因为框架不符无法运行的应用们,比如 LINE Tools,也都回来了。

说这么多其实就一句话:更新了 CyanogenMod,要记得更新谷歌服务框架~

ok,2013年总算写了一篇博客了。

使用Facebook社交插件参与评论:

2012年12月8日星期六


关键词:咲, 取名

  第一次见到“咲”这个字,是在许茹芸的一张专辑上,专辑名就是“花咲”。当时不认识这个字,就忘记了。若干年后,在日本出道了一位女演员,名叫武井咲。其中的“咲”字不读 saki 而是读作 emi。“咲”这个字,日语中是“(花)开”的意思,一般读作 saki,有时候也读作 sa,但是绝对没有 emi 这种读法。当时就觉得最近日本人给孩子取名字是越来越随意了,名字想怎么读就怎么读,完全不理会汉字的发音规律。因此一直不怎么喜欢这个艺人。


  最近看到一本影印的手抄版《脂砚斋重评石头记》,里面大量使用了“咲”这个字,是当作“笑”字用的。这说明“咲”这个字是有“笑”的意思的。我立刻想到“笑”字在日语里就读作 emi,突然就明白了武井咲她爸当年取这个名字的用意。果然有文化的人就是不一样,从孩子的名字上就能体现出这个人的文化修养,我以前是错怪武井咲她爸了。


  那么武井咲的中文读音想必大家都知道了,就是 Wujing Xiao。前几天看到她在一档综艺节目里出现,突然就觉得她的笑声很甜很甜。

使用Facebook社交插件参与评论:

2012年1月14日星期六

Fiddler:与 Chrome 配合工作

关键词:reset, chrome, gfwlist, SwitchySharp, Fiddler

  上文大约介绍了一下 Fiddler 的功能,以及与 Internet Explorer 配合的使用方法。要利用 gfwlist 实现自动代理,我们一般都使用 Firefox 或者 Google Chrome 配合相应的插件来上网。以下以安装了 Proxy SwitchySharp 插件的 Chrome 为例说明如何更方便地使用 Fiddler。

  一个典型的 SwitchySharp 的设置方案如下:


  这种设置方案下,只有 gfwlist 和部分自己另外指定的几个网址会走 19840_base 的代理服务器。其他的就属于默认规则,走的是 [直接连接]。我们在“情景模式”标签下新建一个“Fiddler”的场景,如下图所示:


  然后回到“切换规则”标签,将默认规则的情景模式改为“Fiddler”。如下图所示:


  保存之后,其他网站就都走 Fiddler 代理了。然后访问一个 gfwlist 中没有的网站,Fiddler 就能监视这些网站的状态码了。如图:

  可以看出,a3.twimg.com 这么高调的网址就没有被 gfwlist 收录。

  以上其实不是本文的重点,上面说的方法并没有多少技术含量。其实使用 Chrome 的同学要检查请求的返回状态码的话,还有两个更简单的方法,虽然和标题无关,也一并放到这里吧。

  其一,在访问了某个网站之后,打开 chrome://view-http-cache 页面,就能看到请求一览了,如图:


  点击各个链接,就能查看该请求的详细信息,有返回状态码,返回值等等。如图:



  这种方法虽然没有 Fiddler 直观,但也不失为一个轻量级的解决方案。

  其二,使用 Chrome 自带的开发人员工具,也可以直观的看到请求状态。打开某个网站后,如果发现被 reset,那么从扳手菜单的“工具”中启动开发人员工具,定位到“Network”标签下,然后刷新一下页面。这时“network”下面就会显示当前的 http 请求和请求结果。如果点开左下角的“Open Console.”按钮的话,还能看到更详细的出错信息。如图:



  由此可见,没有被 gfwlist 收录的网址 zynga2-a.akamaihd.net 就被屏蔽了。

使用Facebook社交插件参与评论:

2011年12月27日星期二

Fiddler:监视哪些连接被重置

关键词:gfw, reset, fiddler, ipv6-hosts, 连接重置

  经常翻墙的人想必都知道 gfwlist。这个列表里有几乎所有被 gfw 认证了的网站/网页。有了这个列表,我们的翻墙事业如虎添翼。但是这个列表也有些缺陷,有时候还是会遗漏一些网站。当然,由于各地 ISP 也有一个自己的 gfw,这个列表无法做到全国统一,遗漏也是在所难免。我最近找到了一个软件,可以监视到自己的电脑上每一个连接的详细信息,包括服务器返回的 HTTP 状态码。有了这个软件,我们就能找到那些没有被 gfwlist 收录但被 gfw 认证的网站了。

  当然,对于某个特定的网站,要看它有没有被认证,也不用软件监视,以下几个网站就能帮你判断了:

Test if any website is Blocked in China
Website Test behind the Great Firewall of China
Great Firewall of China

  但是要更加强大、适用范围广、效率更高的方式的话,就必须使用这款软件来搞定了。它就是 Fiddler,MSDN 上也有介绍,链接在此:

Fiddler PowerToy - Part 1: HTTP Debugging


  看到这个软件的界面就知道它的功能非常强大。只要是 HTTP 请求的事情,没有它不知道的。其实最近 nirsoft 也出了一个类似的软件,叫 HTTPNetworkSniffer,不过据我试用了一下后发现,HTTPNetworkSniffer 居然不记录那些返回错误的请求,我才另外搜索一番,找到了 Fiddler 这款软件。

  Fiddler 其实是一个代理服务器,它启动后会自动修改系统的 WinInet 代理,退出后又自动还原到原设置。Internet Explorer 也是通过 WinInet 代理连接互联网。其他“使用与 IE 相同的代理设置”的软件,就是走了 WinInet 代理。像 Firefox 的代理不与 IE 互通,用的就不是 WinInet。因此如果要让 Fiddler 监视 Firefox 的连接的话,需要另外将 Firefox 的代理服务器设置为 127.0.0.1:8888。

WinInet 和 Fiddler 的位置

  Fiddler 启动后就开始监视每个连接的状态。界面如下图所示:



  每一行就是一个客户端到服务器的 HTTP 请求。我们最关心的是“Result”这一列。这一列的值就是“Host”服务器针对“URL”所示请求而返回给客户端的状态码。一般正常的话应该是 200,也有其他状态码,见本文后面的参考链接。这时如果访问一个结构比较复杂的页面比如 facebook 的首页,那么 Fiddler 的界面中就会出现一大堆连接信息。我们只关心哪些连接被重置,所以需要稍微过滤一下结果:

如图所示,勾选“Use Filters”并勾选隐藏正常结果

  然后再看主界面,留下的就都是错误请求了:

Result=504,基本上就意味着被 Reset 了

  接下来,把这些被重置的 Host 加入代理,或者加入自己的 hosts 解析,就能不被 Reset 了。至于每个 HTTP 状态码的意思,可以看维基上的说明。以下两个地方也有,可以补充着参考:
http://www.google.com/support/webmasters/bin/answer.py?answer=40132
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

  本文只是一个最基本的介绍,实用性不太强。下一篇文章打算介绍一下 Fiddler 和 Chrome 浏览器 + Proxy SwitchySharp + gfwlist 配合使用的场景,还有使用 Chrome 自带的工具查看请求状态码的方法。

使用Facebook社交插件参与评论: