页面

2011年5月7日星期六

备份Google Reader 以打造离线版Google Reader

关键词:Google Reader, feed, backup, offline, FeedDemon, 备份, 离线, Google Gears

feed阅读器的好处不用我说,Google Reader更有许多妙处。在我看来最大的妙处莫过于单个供稿能保存无限篇文章了。分析可见我的这篇文章。喜欢用Google Reader的人务必点这里互相关注一下共享各自的优秀条目。

Google Reader是个在线阅读器。在线阅读器的缺点就是必须在线才能访问。如果能将Google Reader中的文章备份到本地,我们就可以在没有网络的时候、没有网络的时候以及没有网络的时候也能阅读到一部分文章。说不定读了这些文章,就能知道如何在没有网络的时候也能上网了呢。

我考察过几个方案,最终还是用FeedDemon同步Google Reader的方案。FeedDemon是一款优秀的离线阅读器,它有和Google Reader深度同步的功能。我们通过它将文章下载到本地保存起来。FeedDemon有收费的Pro版,但是我们只用免费的Lite版即可达到目的,我用的就是FeedDemon Lite v4.0.0.22。Pro版中唯一令人眼红的功能,就是未读文章的图片预读取了。因为图片文件会因为各种原因无法访问,我不太喜欢在文章中插入图片,实在需要图片的地方也会在旁边用文字描述清楚。继续说方案,根据我们的目的,按以下步骤配置FeedDemon:

1,从官网下载最新的FeedDemon并安装到D:盘以打造绿色版FeedDemon
  注:这里只是简单的说了一下打造绿色版fd,实际中没有这么简单,请参考自己制作FeedDemon便携版

2,启动FeedDemon,将 文件-->管理缓存 中的缓存文件夹也改到D:盘FeedDemon安装文件夹下
cache folder
3,工具-->选项-->选项
“常规”标签中,勾选“自动更新 Feed”和“在Windows 启动时运行 FeedDemon”,点击“连接…”按钮设置代理服务器。
“桌面提示”标签中,将“显示桌面提示”修改为“从不”。“在系统托盘显示 FeedDemon”设置为“最小化时”。因为我们只是要它做备份的角色,平时还是用Google Reader进行阅读。
4,工具-->选项-->同步选项
在这里添加Google Reader的账号以进行同步。并将更新时间设为最大,即“每隔999分钟更新我的 Feed”。我们只是用它做备份,所以不需要太频繁的更新。
sync
5,等供稿都同步下来了,在主界面Google Reader的根文件夹“订阅”上右击选择“文件夹属性”,在“更新”标签中,将“存档”修改为“每个 Feed 保留最近 2500 个条目”。2500是上限,我们要尽可能多的把文章保存在本地。单个Feed 2500个条目,按每天1个条目计算,也能保存将近7年的文章了,对于达到我们的目的那是绰绰有余了。
option

经过这样的配置,每天FeedDemon就会默默的获取Google Reader上的新文章了。可惜对于设置之前的旧文章,FeedDemon无能为力,只能在第一次同步时获取到少数几篇。初期,FeedDemon上的文章数远远不及Google Reader,但这只是初期。日积月累下来,本地的文章库也能很可观了。

关于Google 官方的离线版Google Reader(使用Google Gears):我在Chrome上从没见到过Offline按钮,但是看介绍,Gears应该是把文章保存到Chrome的某个文件夹下了,不知道能不能转移。但是Gears技术已经被Google放弃了,替代功能是HTML5,基于HTML5的离线Google Reader尚未出现,现在就只能用上述的FeedDemon方案了。

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

2011年3月20日星期日

使用Privoxy让Dropbox智能代理上网

关键词:dropbox, privoxy, stork, stork47, http, https, socks, 代理

本文撰于2011/03/20,背景是,中国大陆到dropbox.com的http连接会被重置,但是https连接不受影响。如果背景改变了,则本文失效。本文原始链接:http://plusium.blogspot.com/2011/03/privoxydropbox.html

本文主题:令dropbox客户端的http请求经socks代理访问dropbox服务器,而https请求不经代理直接访问。如图:

1

高手们只需看到这就行了。以下是详细操作说明。

目前在墙内,dropbox被关键字屏蔽(Wildcard: .dropbox.com),但是客户端还能正常使用,因为客户端和服务器之间使用的是https加密传输。但只有一处是没有使用https的,就是stork47.dropbox.com(在我这是这个地址,其他地方可能不一样)。这个服务器负责将服务器端(或其他客户端)发生的文件更新通知到其他客户端(我猜的,但应该差不多),然后其他客户端才会发起https请求去和服务器同步这些文件。实际中,是客户端每60秒向stork47.dropbox.com查询一次,看是否有文件需要更新。因为该请求没有使用https连接,导致连接一直被RESET,所以某台客户端的更新无法实时反映到其他客户端。

因为一般人可能没有这个需求,所以没多少人关注这个课题。像我以前也只是在家里和公司同步一些文件而已,没有实时更新的必要。有强烈需求的人,就设置让客户端全程走代理,可以解决上述问题,缺点是文件的更新速度受代理服务器速度的影响,大多数情况下没有直接连接的速度快。还有一部分人当需要更新时,直接重启客户端(甚至为此写了个脚本),因为客户端只在启动时才使用https连接检查更新,这样做的缺点显而易见。

最近用privoxy,发现它可以做到分流http和https,于是试验了一下,果然可以分流dropbox的客户端请求了。就是前面说的,让http请求走代理,而https请求不走。这样即满足了实时更新的需求,又兼顾了更新速度,可谓智能代理了。而且我搜索“dropbox privoxy”,google.com.hk前几页都没有关于这个方法的介绍,所以我这个便算原创了。至于是不是第一个,应该还有高人在,只是我没搜出来而已。因为privoxy还有不少替代方案我没有试过的,比如polipo之类。以下是操作步骤。

1,需要准备的东西:dropbox客户端(还没注册的请点我的邀请链接注册)、代理软件、privoxy。privoxy的官网是http://www.privoxy.org/,不知道下哪一个的话就点这里直接下载win32下的3.0.17稳定版http://sourceforge.net/projects/ijbswa/files/Win32/3.0.17%20(stable)/privoxy-3.0.17.zip/download。该方案应该与平台无关,但是我只在windows 7下试验过。

2,打开privoxy的配置文件config.txt,在最后面添加这几行:

#   for dropbox: http --> SOCKS Proxy(19841), https --> direct
forward-socks5 .dropbox.com 127.0.0.1:19841 .
forward .dropbox.com:443 .


注意将19841修改为你自己的代理软件的端口。如果你的代理软件不是socks类型的,那么就不是加上面的几行,而是加这几行:


#   for dropbox: http --> HTTP Proxy(19842), https --> direct
forward .dropbox.com 127.0.0.1:19842
forward .dropbox.com:443 .

注意好多地方有半角的.号,不要弄丢了。


3,启动privoxy,将dropbox的代理设置为HTTP 127.0.0.1:8118,就OK了。


如果有疑问可以留言讨论,如果有关于软件的其他用法的问题请另行google。

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

2011年1月17日星期一

关于Dropbox的Photos文件夹的安全性

关键词:Dropbox, Photos, Security, 权限, 安全性

本文是要分析一下Dropbox(点此注册)的Photos文件夹的权限和安全性。我们知道一个Photos文件夹的公开共享链接是大约这样子的:http://www.dropbox.com/gallery/9628444/2/_wallpaper/_other?h=8a53e8。其中[9628444]是用户ID,[2]是文件夹的深度,[_wallpaper]是一级文件夹名,[_other]是二级文件夹名。[h=8a53e8]是一个校验码,用于保证只有知道这个地址的人才有权限访问这个文件夹。其中的这个[h]很可能是指[hex],表示是16进制的意思。

本文分析一下在已经公开了某一个文件夹链接的前提下,其他文件夹的安全性。本文将从纯技术角度进行分析,类似“如果这么担心安全性的话,就不要往Dropbox上放啊”这样的话,不用说我也知道。

一般情况下,没有链接地址,其他文件夹依然是不可访问的,其中校验码起了很大的作用。

用一个6位的十六进制数进行权限控制,看起来应该很安全,不太可能有人误打误撞进了你的相册。暴力穷举破解也似乎不可行。假设有人知道了你的用户ID和文件夹名称(在本文上述前提下,其他人会知道你的用户ID,和文件夹的命名规则,可以很容易猜测出其他文件夹的名称,或者穷举文件夹名称),那么想要穷举这个校验码,需要最大尝试166次(16,777,216次)。实际上由于最高位不可能是0,那么最大就需要尝试165*15次(15,728,640次)。而Dropbox会在连续尝试失败若干次之后暂时封锁来自该IP的访问,所以暴力破解不太可行。

那么我们来看看这个校验码的生成有没有什么规律。按最安全的方案的话,Dropbox应该在每个文件夹创建时随机生成一个校验码。通过以下实验可以发现,校验码不是随机生成的。

假设校验码是随机生成,那么我们在Photos下面创建一个名为[test]的文件夹,如果分别在客户端和web端创建,校验码应该会不一样。我们将Dropbox客户端的代理服务器设置为一个不存在的代理,令Dropbox处于离线状态,这样可以保证Dropbox客户端程序在生成校验码时不与服务器交互。然后在本地和web端分别创建[test]文件夹并获得共享链接,发现两个链接的校验码是一样的。这足以说明,校验码不是随机生成的。

而这两个分别生成的校验码一样,是不是因为校验码是和路径有关的呢。我们把[test]改名为[test1],发现校验码变了,说明校验码是和路径有关的。

那么校验码和用户ID有没有关系呢。用不同的用户登录Dropbox同样创建[test]文件夹并获得链接,发现校验码不一样,所以校验码是和用户ID有关的。设计上也应该是这样,否则我只要自己也创建一个一样路径的文件夹,就能得到其他所有人的这个文件夹的校验码了。特别是在每个人都有[Photos]这个根文件夹的情况下,这点尤其重要。这个根文件夹虽然看似不提供共享链接,但是有用于通知图片更新的feed地址,可以用来反推共享链接。而且这个feed地址或者共享链接一旦泄漏,那你的所有相册就相当于完全公开了。因为有某文件夹访问权的人,也有它的子文件夹的访问权。如何获得Photos根文件夹的feed地址,在 我的上一篇文章 里有介绍。

既然校验码不是随机生成,那么次级安全的生成方案,就是令校验码和用户密码之类的挂钩了。经测试,校验码和用户登录名以及密码均无关。那么按我的想象,只有两种可能性了。1,为每个用户分别随机生成一个永久的密钥,令校验码和这个密钥有关。2,所有用户使用同一个密钥。安全性上肯定是第一种要高,以Dropbox的技术实力来看,我们应该相信他们是采用了第一种方案。如果用的是第二种方案的话,那么一旦将来这个唯一的密钥以及加密方法泄露出去,事情就大条了。而且考虑到Dropbox的某些技术人员肯定会知道这个密钥,为了限制技术人员的访问权,Dropbox决策层也应该会采用第一种方案。虽然有数据库查看权限的技术人员也能查到单个用户的密钥(这个密钥由于和用户密码无关,肯定不是加密存储的),但我们应该也没必要担心这一点,毕竟我们的文件都存在人家的服务器上,他们要想访问,那还不是轻而易举。顺便一提,我的个人观点,不管其他文件夹的文件是否使用了AES-256加密存储(他们宣称的,但这个加密据我猜测,应该不是使用用户密码进行加密的。从可以通过文件的MD5指纹或者SHA-1指纹进行文件去冗余存储处理,也可以看出文件不是使用类似上述的用户密钥进行加密的。而是使用一个公共密钥进行加密的。但是,没有使用用户密码作为密钥进行的加密,对用户来说都是相当于没有加密。当然使用用户密码作为密钥加密,安全性是最高,但是实用性不够。因为如果那样做的话,只要用户一修改密码,那所有的文件都需要拿出来重新进行加密。关于Dropbox的加密方法,我这边还会继续关注,有这方面消息的人请务必留言讨论一下。),但[Public]和[Photos]这两个文件夹的文件肯定没有加密存储,因为没有加密的必要。考虑到效率,也不应该加密。只要保证这些文件是不可浏览的(not browsable)和不可搜索的(not searchable),就可以认为文件是安全的了。不知道他们的权限管理和Google比怎么样,不要出现像之前Google工程师查看用户私人数据这样的事情才好。

写了这么多,结论就是文件目前是安全的,链接没有公开的相册,别人是怎么也看不了的。想看看有没有人有更深入的分析,所以稍微写一些,也就是抛一块烂砖,看能引出块玉来不。


2011/03/19补:
逛了一圈dropbox的官方论坛,发现dropbox的确是用一个公共密钥来加密所有文件。参考http://forums.dropbox.com/topic.php?id=25288&replies=7#post-159350
既然文件都是用一个公共密钥加密,那么前面提到的共享链接的校验码肯定也是用一个公共密钥了。至于这两个密钥是不是同一个,似乎就不那么重要了。泄漏了任何一个,对dropbox而言都将是毁灭性的打击。
实在不放心人家的安全性的人,建议用dropbox + TrueCrypt 的组合方案。这个方案下dropbox的一大特性--差分同步--是否还有效就不知道了。具体请自行google。
另外还有一个据说是真正的本地加密(可设个人加密密钥)、云端存储的产品,在idrivesync.com。我没实际验证,有兴趣的可以去看看。


2011/03/22补:
国内有不少出售或转让dropbox账号的,我要给大家一个警告,由于文中所述原因,转让dropbox账号是很危险的行为。因为即使更换了账号对应的E-mail地址和密码,原始Photos文件夹的分享链接和验证码是不会变的。前账号所有者保存下这个链接(如果他知道的话),然后将账号转让出去,下一个所有者的Photos文件夹及其子文件夹的所有图片将可以一览无遗。我建议,不要将这个链接保存在任何地方,不要用任何在线或离线的RSS阅读器订阅自己的Photos文件夹更新,最好是自己永远不要去获取这个链接。连你都不知道了,别人就更加无法知道了。不过大家放心,如果你的账号就是从别人手中转让过来的也不用太担心,因为在我写这段文字之前,我想全国没(几个)人知道这件事。
一切打算利用该“feature”进行非法、非道德用途的人,请停止这个想法。因此产生各类法律或者非法律的问题,本人一概不负任何责任。若因本文影响到你的淘宝上的生意,请自己承担后果。

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

2011年1月15日星期六

使用dropbox管理wallpaper

关键词:dropbox, wallpaper, RSS, John’s Background Switcher, cloud, 壁纸, 墙纸, 桌布, 自动切换, 云计算

    如果你和我一样下载了很多漂亮的壁纸图片的话,一定也很在意图片文件的备份问题和占用硬盘空间问题。我介绍一下我的做法,大家看看觉得这样o不ok。

    壁纸的用途,就是要显示到windows(其他操作系统没用过,不熟悉)桌面上,令工作学习之余看看放松心情。而平时一般不会去打开壁纸文件夹一张一张去看的。如今云计算乃是大势所趋,所以如果能把壁纸都存在云端,然后使用支持从云端读取图片的自动切换壁纸的软件进行自动壁纸切换的话,那么既可以空出部分硬盘空间(本地尽量不存储个人数据,为将来的完全云计算做准备),也不必担心万一电脑被盗数据丢失,另外还可以做到令壁纸自动更换免去手动更换的麻烦。这么一想,好处那是太多了。所以我花了不少时间在寻找这样的一个解决方案。最近,总算找到了近乎完美的方案。这个方案要用到2到3款工具软件/服务,先一一简单介绍一下。各软件的使用技巧不在本文讨论范围。

1,用于保存壁纸的在线图片存储服务,dropbox

大名鼎鼎的跨平台文件同步软件,并且提供云端的存储空间。这里不多介绍,可以去 同步控 搜索相关文章进一步了解。想要注册的话,点 我的这个邀请链接 注册可以给你我双方各加250M-500M的在线存储空间。当然这一类的软件/服务还有很多,如何选择一款好的软件/服务,特别是云计算服务的话,那么服务的稳定性是一个很重要的因素。当今要论云计算,Google、Microsoft、Amazon乃是3大广为人知的云计算巨头,服务的稳定性那是没得说。不比其他的小公司,说不定哪天就倒闭了。当然除去这三家,其他颇具规模的云计算服务也不少,但如果这三家中有提供类似服务的话,我会优先考虑这三家的服务。而实际上今天要说的这个解决方案,这三家都有可用的服务。Google的是PicasaWeb,微软有Skydrive,而dropbox虽然不是Amazon家的产品,但是用的是Amazon的云计算平台,而且最近这家公司发展势头似乎不错,再加上其他的一些优秀的功能,完全可以和Google、微软的服务一较高下。加上其他的一些产品,这里列一个表格来比较一下流行的几款软件/服务的差异。

服务名 运营商 免费在线存储容量 在线查看图片 支持RSS订阅图片更新 描述
PicasaWeb Google 1G 非常优秀的在线相册,只是免费空间有点小
Skydrive Microsoft 25G 在线相册的管理不方便
dropbox dropbox 2G或更多 完全符合我的要求。通过邀请注册,存储空间可以最大达到18G以上。而且有时候会做活动赠送存储空间。
SugarSync SugarSync 5G或更多 在线文件夹的组织、管理方式不太方便

其他还有Facebook、Flickr、photozou等可以选择,不一一介绍。

2,自动切换壁纸的windows程序,John’s Background Switcher

    用过不少自动切换壁纸的软件,最终发现还是这个最强大。支持图片来自本地计算机、PicasaWeb、Facebook、Flickr、RSS源、Google图片搜索结果等等,可以设置定时切换、随机切换,可以设置壁纸的显示方式(平铺、居中等一共9种模式,这一点其他很多软件都有缺陷),设置的选项也非常丰富,总之可以满足我的对于设置壁纸的一切需求。不过有两点不太好的地方,第1,软件的运行需要计算机安装有.net Framework。第2,用于访问网络的代理服务器功能,软件仅支持HTTP代理,不支持SOCKS代理。第1点问题也不大,因为从Windows Vista开始已经内置了.net Framework。还在用XP的赶紧升级吧。第2点据说和第1点有关,我专门去官方论坛问过作者能不能让软件支持SOCKS代理,作者说.net不支持SOCKS代理,他也没办法。但是作为一个.net程序员,我对此表示怀疑,大约搜了一下似乎并没有那么回事,.net应该是支持SOCKS代理的。具体还需要进一步调查。

3,代理软件

    在中国大陆,以上许多服务都不能用。如果想用dropbox、PicasaWeb、Flickr、Facebook,则需要另备代理软件。这个自行解决,本文不作推荐。

 

    有了以上的软件,就可以开始我们愉快的云壁纸生活了。以下分步说明。

1,将壁纸放入dropbox的根文件夹Photos

*支持子文件夹、多文件夹

*如果你的没有Photos这个文件夹,则应该在web管理页面添加这个文件夹,注意首字母需要大写。具体看 这里

2,在dropbox的web管理页面,点击壁纸所在文件夹右边的箭头并选择以Gallery方式打开这个相册的在线浏览模式。如果你的浏览器有自动检测feed功能,那么会检测到这个页面有这个相册的RSS更新feed。复制下这个feed地址。如果没有检测到,那么查看这个页面的源文件,搜索“rss”也能找到。还没找到的话,只好用一些非常规的办法了。在本地硬盘中定位到壁纸文件夹,右击这个文件夹,会有一个dropbox关联菜单。选择里面的“Copy Gallery Public Link”可以得到这个相册的共享地址。把地址中的“gallery”替换成“photos_rss”,就是这个相册的feed地址了。

    我在Photos下面建了一个文件夹“_wallpaper”,又在里面建了一个子文件夹“_other”,得到这个相册的feed地址是这样的:http://www.dropbox.com/photos_rss/9628444/2//_wallpaper/_other?h=8a53e8

*这个地址也可以用https开头的地址,但有些代理可能不支持https协议

*注意feed地址有一处有两个斜杠“/”。而使用非常规方法得到的feed地址同一处只有一个斜杠,如果一个斜杠无效的话,试试改成两个斜杠。

3,如果有多个文件夹需要配置,重复上一步。

4,将这些feed地址作为RSS photo feed加入John’s Background Switcher中,设定好间隔时间,就可以了。

5,壁纸全部上传完毕之后,可以在dropbox中设置为不同步壁纸文件夹。设置之后dropbox会删除本地的壁纸文件夹,节省了本地硬盘空间。以后想再往这个文件夹添加文件时,可以先添加到其他文件夹,然后在web管理界面将这些文件移动到壁纸文件夹中。

 

后记:1,关于选择一款好的软件,网上有人说的好:一款优秀的软件在于,你在使用它,但是你感觉不到它的存在。像dropbox、John’s Background Switcher都属于这一类。

2,关于dropbox的Photos文件夹的安全性,我接下来会专门写一篇文章来分析。

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