Goagent 支持 Dropbox 的简单方法

当年金山快盘一出来,Dropbox 在国内即可就被墙了,后来过了一年多,Dropbox 又可以用了,不过需要 HTTPS 连接,HTTP 的连接会被中断。这样导致的后果是 Dropbox 客户端可以上传数据,但无法接收到来自服务器实时更新的信息,因为上传数据走的是 HTTPS 加密,而事实更新走的是 HTTP。

后来月光博客发了篇文章,解决这个问题,方法是使用一个软件把 Dropbox 的加密数据与非加密数据分开,加密数据直连,非加密数据发往 Goagent 去代理。(为什么不能把全部数据都用 Goagent 代理呢?因为 Goagent 代理不了 Dropbox 的加密数据,会让 Dropobx 提示网络错误。)

但这个方法很麻烦,很不方便。

Goagent 3.0 出来的时候,带出了 HOST 功能,作者似乎是为了 Facebook 上传与观看 Youtube 直播而开发的这个功能。原理很简单,就是根据配置,发往特定主机特定端口的数据包绕开代理,直连远程服务器。

我当时一看到,马上觉得此功能可用来解决 Dropbox 长久以来在国内不能实时更新的问题,试了下,添加正则表达式 .+\.dropbox\.com:443 到 Goagent 的配置文件里。

意思是:

往来于本地与 任意前缀.dropbox.com 主机的 443端口 的数据包,不代理走直连。

443端口是 HTTPS 连接专用的端口,即加密数据包的目的地与来源地。


这样,把 Dropobx 网络设置里的代理设置为 Goagent 的代理地址,Dropbox 客户端共会收发两种数据包,一种是 HTTP 的实时更新信息,可以被 Goagent 代理。另一种是 HTTPS 数据包,Goagent 代理不了,但会被上面的正则表达式识别出来而直接转发掉,不去代理。

这样 Dropbox 就能正常接受到加密数据与非加密数据,正常工作了。

一击即中,添加了之后。Dropbox 实时更新这拖了好几年的问题终于得到较好的解决办法了。

上 Goagent 论坛发了个帖,似乎没多少人关注。但过几天后作者默默把这配置添加到默认配置里了。

后来电脑坏了,一直用手机。收到 Gmail 邮件,问我这方法适不适用于 Mac 版的 Dropbox,我说适合的。但对方说无法正常工作,我觉得这应该是 Goagent 的问题了。

后来 Goagent 更新说要改为 .+\.dropbox\.com\:443,以解决在 Mac 上的兼容性问题。看来的确是 Goagent 自身的问题,冒号照理来说是不需要斜杠的。

今天去看了,Goagent 的开发者又照着这样的办法,把 Copy 网盘,Box 网盘的地址也添上去了。查了一下  Goagent 的代码历史,发现原来作者原先有支持 Dropbox 的,只是后来删掉了,以至于到我手里的版本上没有这一配置。后来我察觉到这一功能,拿出来发帖后他又添加上去了,不知道作者怎么想的。