强制使用 HTTPS

Github 再一次受到攻击,和之前的攻击方式不一样,这一次,Github 被普通网民给 DDos 了。

攻击的大致原理是这样的,百度广告联盟所使用的一个 Javascript 文件被篡改,其中嵌入了一段代码,会每两秒钟给 Github 发送一次请求。由于国内很多网站都使用了百度广告联盟,一旦用户访问这些网站,这些用户的浏览器就开始自动攻击 Github。这一度造成了 Github 的服务瘫痪,一天之后才采取措施修复。具体细节可以查看乌云的一篇文章

至于这是谁干的?大家应该都知道的吧。百度自己是不会砸自己场子的,而对 Github 有仇的,只有我们可爱的防火墙了。

之前我们印象中的 GFW 只是一个屏蔽工具,使得我们无法访问一些网站,而这一次 GFW 的升级可谓是令人恐惧的,因为它具备了修改文件的能力。这种攻击方式为称为“中间人攻击”,比方说,你在和朋友聊天的时候,并没有直接和他对话,而是通过一个中间人传话,那么这个中间人,就有了篡改你们对话能力。这次对于百度广告联盟的修改,表面上并没有让用户察觉到被墙了,但实际却发动了一次前所未有的 DDos 攻击。GFW 可以修改百度的文件,也自然可以修改其它网站的文件。如果下次它直接修改了 jQuery 的源文件,以 jQuery 普及程度,这种 DDos 的强度是大多数网站承受不了的。

作为对策之一,本站开启了 HSTS 以应对可能的中间人攻击。HSTS 是一项浏览器技术,网站通过一个特殊的报头(Header)告诉浏览器,建议浏览器使用 HTTPS 进行访问,在极大程度上避免了中间人攻击。在使用了 HTTPS 之后,你和本站的通讯,只有网站服务器和你的浏览器知道,网络上的各种路由器,包括墙,都无法得知,从而也就不能进行攻击了。

另外我也建议,上网的时候请尽可能地选择 HTTPS 的网站,即地址栏前面有一个小锁,表示当前浏览的网站是安全的。

使用 Nexus 5 一年后,我还是换回了 iPhone 4S

一年前,我开始尝试使用 Nexus 5;一年后,我换回了之前用过的 iPhone 4S。原因?Android 的用户体验太差了。

虽然 Nexus 5 是 Google 的亲儿子,各种新功能新版本都是优先照顾的,但还是有那么一些致命伤,使它无法和 iPhone 一较高下:

莫名的耗电

我的 Nexus 5 在正常使用的情况下,已经用不到半天就要充电,而三年寿命的 iPhone 4S,还可以支撑 8 小时左右。Android 对进程的控制一直是个大问题,它允许各种后台进程不受控制地运行,于是就产生了大量地没有意义的消耗。于是就有了很多工具来限制这些无用的进程,比如 Greenify,Tasker 等,root 之后还有更强大的 Xposed。而这些工具仅仅是为了做到一件事:省电。iPhone 天生就能做到这件事,何必要自己折腾。

破碎的产品

Android 有一些自带的应用,比如相册(Gallery)、浏览器、邮箱等;而 Google 也出了一些对应的产品,比如 Google+ Photo、Chrome 和 Gmail。这些应用长期以来都是共存的,我刚开始用的时候,也花了一些时间才搞清楚它们之前的关系,该用哪个不该用哪个,禁用了一个会对另一个有什么影响等等。作为一个普通用户来说,这并不是我需要去关心的,对于一个特定的功能,系统应该只提供一个应用,干净明了。更讽刺的是,一直有人批评说 iPhone 的自带应用不能删除,不开放;而 Android 的自带应用其实也不能删除,大家半斤八两,没什么好说的。

美国独大的原则

实际上 Google Wallet 是我铁了心要换回 iPhone 的原因,这款已经存在了差不多有十年的产品,目前还只有美国境内可以使用。Google Wallet 的前身是 Google Checkout,早在 2006 年就发布了初版,目前在美国以外的 Play Store 里还下载不到它的应用,这算是什么狗屁东西。

Google 的支付系统一直都搞得不温不火,直到 Apple Pay 出来之后,才开始着急。前几个月 Google 收购了一家支付领域的公司,以增强 Wallet 的支付,但这有什么意义呢?十年的努力被 Apple 一年就超越,我就不信 Google Wallet 能抢在 Apple Pay 之前进入欧洲和中国市场。

基于以上几点,我坚定地换回了 iPhone。科技的作用是使生活更轻松,而不是更“极客(Geek)”。

增强型 Google Drive 文件夹复制工具

大概一年前我做一个工具来复制 Google Drive 中的文件夹,当时是用 App Script 写的,后来觉得它的效率太差了,而且难用,就花了点时间用 Google Drive SDK 重写了一遍。

复述一下这个工具的背景,我需要在 Google Drive 中复制一些文件夹,而 Google Drive 没有提到原生的方法来做到这件事。而我又不高兴把那个文件夹下载下来,本地复制一遍再上传上去,这样做太麻烦了。于是就利用现有的 API,自己写一个工具来在线复制文件夹。由于 Google Drive 统计帐号容量的时候,是按文件的拥有者(Owner)来计算的,所以在迁移帐号的时候,并不是直接把文件夹移动过去就可以了,要复制一下才可以改变文件的拥有者。

上一版本的问题是效率比较差,在一次运行的时限(6 分钟)内,只能复制约 50 个文件;并且不支持子文件夹的复制。网上有一个工具,Drive Migrator,实现了子文件夹的复制,并且突破了 6 分钟的限制,但依然由于效率太差,一天只能复制 5000 个文件。

而新的版本,在网络通畅的情况下,平均 1.5 秒可以完成一个文件的复制,也就是 6 分钟可以复制超过 200 个文件,5000 个文件最多只需要 2 小时即可完成,效率提高了不少。唯一的不足之处是,Drive Migrator 在复制的过程中,不需要把浏览器一直开着,它是完全在 Google 服务器上进行的;而我这个新版本,则是运行在每个用户自己的浏览器上,页面关闭,或者机器休眠了,都被导致复制中断。

新版工具入口:https://leonax.net/tool-google-drive-enhance/

使用方法在新页面中有详细说明。