解决Dropbox中国无法及时自动同步的

2019年03月05日 来源:

近由于想要使用Dropbox的多人协作功能,就发现Dropbox不能自动同步其他机器上产生的文件变化,经过一番搜索,发现原来是GFW在作怪(GFW和GD的性质和用心我们心知肚明,就不在这里评价了)。月光博客发布了解决Dropbox无法实时更新的问题分析了产生这个问题的原因并提出一个有效的解决方案。但是在使用时我发现,我找不到一个优良稳定的代理服务器,也没工夫去学习privoxy软件的配置和使用,而且我要将解决方案提供给我的合伙人,一个复杂的方案是不能接受的。经过一番研究,提出如下比较简单的办法。

分析 我发现Dropbox向notify8发出的请求很简单,回应也很简单,一共有两种:{ ret : new }和{ ret : punt }

分别表示云端有变化和无变化,然后客户端考虑去下载文件列表并同步。

经过一番痛苦的失败,

我发现这个请求的其实是一个comet请求,服务器端并不马上回应,而是会挂起,如果有变化,则马上回应,如果一直没有变化,大约一分钟超时回应punt,然后客户端再连接服务器。在我分析Dropbox的过程中一直不解:为什么Dropbox的其他请求都是https,而只有这一个请求是http的。现在找到了答案:因为它是comet请求,长连接,而且连接频率非常高,如果使用https代价太大,而且影响效率。如果这个请求返回new,客户端就会使用https连接服务器端。

解决 由此提出一个完美的解决方案,不仅可以解决本机的问题,而且可以解决朋友的问题,只要让朋友修改hosts为我的ip地址:

修改hosts将notify8对应的ip地址改为本机 在本机建立一个http服务,代理notify8得到dropbox的返回值,再原封不动地返回给本机dropbox客户端 具体方法是使用tornado,进行一步http请求,这样只占用很少一部分系统资源。贴出代码。

代码#!/usr/bin/env python

# -*- coding: utf-8 -*-

import tpserver

import loop

import tions

import b

from tions import define, options

from tornado import httpclient

define( port , default=8888, help= run on the given port , type=int)

class Application(plication):

def __init__(self):

handlers = [

(r /subscribe , NotifyHandler),

(r /.* , HomeHandler),

]

settings = dict(

debug=True,

)

bug = True

plication.__init__(self, handlers, **settings)

class HomeHandler(questHandler):

def get(self):

t_header( Content-Type , text/plain )

ite( Hello from Tornado! )

class NotifyHandler(questHandler):

@ynchronous

def get(self):

t_header( Content-Type , text/plain )

url = xxxxx #关键代码还是不贴出来了,人怕出名猪怕壮,要是大多数人会用了,估计这个方法死期不远矣!

http_client = yncHTTPClient()

http_tch(url, ndle_response, request_timeout=100.0)

def handle_response(self, response):

if ror:

print Can not connect.

ite( {\ ret\ : \ new\ } )

else:

print Connect Successfull.

ite(dy)

nish()

def main():

rse_command_line()

http_server = TPServer(Application())

http_sten(rt)

stance().start()

if __name__ == __main__ :

main()

来源:投稿,原文链接。

今天貌似很多国外服务器的站都打不开fklal 于 5:30:00 回复是的。真是气愤。fklal 于 5:30:33 回复今天跟昨天一直是这样。连Live,微软都打不开。wozhenshangxin 于 13:18:27 回复我这边是只要不是大陆站点都上不去……

2012/4/5 0:19:38 支持(29)反对(19) 回复

博主:

和你说一个的消息,昨天下午6点开始 湖南中国电信一直访问不上国外的站,其他省市都可以访问。请问是不是电信的问题 刚才致电了10000说可能是国外服务器的问题。mvke 于 20:54:56 回复中国移动的络也出现这样的问题,我是今天上午上班发现的。估计是gfw又抽风了。

2012/4/5 12:50:22 支持(29)反对(22) 回复

没看懂,本机不能直接访问dropbox http的话,在本机架设代理也还是不能访问啊。代理服务器必须是能够直接访问目标的机器吧?还是说没有贴出来的那部分代码里有什么玄机,直接链接到某个服务器了?

我试了一下ping notify*发现是能够ping通的,返回IP也是美国地址,就是不知道是否为其真实IP。如果是址关键字匹配,是否直接修改本机的notify服务器host即可实现状态更新,而无需设置代理?

因为不懂python所以只能写这些了,不知作者能否指教……

2012/10/23 14:47:42 支持(4)反对(6) 回复

(*)

验证(*)

相关文章
  • 2017科技风云榜即将正式揭榜开启线下嘉
    2017科技风云榜即将正式揭榜开启线下嘉

    2017年,科技与商业的碰撞空前火热,给人类生活带来了巨大改变,也有众多企业继续在变革中寻求着坚守与创新。由举办的“2017科技风云榜”以“他们,改变生活”为主题,希望寻找这样一批企业和产品,他们的努力为行业带来了前所未有的突破,实现了商业与理...

  • 两岸军事互信遭遇军售干扰
    两岸军事互信遭遇军售干扰

    两岸军事互信遭遇军售干扰台海4月16日讯 (海峡导报 燕子 刘强)随着两岸关系日趋走暖,军事安全互信话题被重新带到台前,并获得多方积极响应。耐人寻味的是,美国一方面做出“乐观其成”的官方姿态,另一方面却通过智库、军方,频频抛出对台军售等争议...

  • 高盛告诫投资者股市盛宴不会永远持续
    高盛告诫投资者股市盛宴不会永远持续

    无论是特斯拉汽车公司(Tesla Motors)股票急剧飙升,Facebook股票经历自上市初期的坎坷后惊人上涨,还是飞(Netflix)股价的火箭式上涨使这家流媒体视频公司让的积极参与型投资者卡尔·伊坎(Carl Icahn)无从下手。但这一幕幕的股价暴涨——以及随之造成的极高估值水平...

  • 淮南大通区扎实开展食品安全宣传周活动
    淮南大通区扎实开展食品安全宣传周活动

    淮南大通区扎实开展食品安全宣传周活动近日,大通区以“共建诚信家园,同铸食品安全”为宣传主题,扎实开展食品安全宣传周活动。据淮南报业报道,宣传周活动期间,该区组织农林水利、商贸、质监、粮食、食品药品监管、工商等部门多渠道、多形式、多层次...

  • 园林水系连通工程建设如火如荼
    园林水系连通工程建设如火如荼

    24日。据介绍,目前百里长渠取水闸闸室和U型槽工程已完工,全长797.46米的箱涵工程正在建设中,预计5月底可完工,路面恢复工程将于6月底完工。懒人虾粥的做法家常懒人虾粥怎么做排酸肉现买现吃别冷冻剩余0储存三天内吃完三打发布会小沈阳表白巩俐姐我爱你...

  • 欧盟各国外长将针对埃及局势举行紧急会谈
    欧盟各国外长将针对埃及局势举行紧急会谈

    据法新社8月21道,针对日益恶化的埃及局势,欧盟各国外长将于8月21日举行紧急会谈。法新社称,虽然欧盟似乎将更加严厉地谴责埃及暴力,但是为了保持同该国的沟通,本次会议或将终止对埃及的制裁。报道称,欧盟28国外长或将全部出席本次紧急会谈,各国外长...