页面

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社交插件参与评论:

9 条评论:

  1. 我想补充一下, privoxy有很多内容过滤的功能应该关掉, 我的config.txt最后是这样的:
    confdir .
    logdir ./log
    logfile privoxy.log
    # listen on all interface
    listen-address :8118
    # the filtering function is not needed
    toggle 0
    accept-intercepted-requests 1
    # recommended debug level for debug
    # debug 13313
    # recommended debug level
    debug 512

    # GUI options
    log-messages 1
    log-buffer-size 1
    log-max-lines 4096
    log-highlight-messages 1
    log-font-name Consolas

    # conditional forwarding, caution the trailing dot should not be omitted
    forward-socks5 .dropbox.com localhost:50028 .
    forward .dropbox.com:443 .

    回复删除
  2. Re: JimmyZ™
    我基本上用的是默认配置,也没有不方便的地方,就懒得改了。hoho

    回复删除
  3. 但是我设置了之后dropbox提示无法建立安全链接呀,用的是goagent做代理的,求助

    回复删除
  4. 如果dropbox提示无法建立安全链接,可能是你的端口设置错误。

    forward .dropbox.com 127.0.0.1:8087
    forward .dropbox.com:443 .

    上面设置为GAE的端口8087。
    然后dropbox的代理设置为HTTP 127.0.0.1:8118。
    注意这里端口设置为8118。

    enjoy

    回复删除
  5. 请问一下,goagent做代理时,代理模式是需要设置为http还是https呢?

    回复删除
  6. Re: Unknown
    现在dropbox已经不需要设置代理就能自动更新了。见月光博客。
    另外你的goagent可能不支持https,你需要搜一搜goagent的使用说明。

    不支持https的goagent,也可以用4楼通过privoxy转发的方法。

    回复删除
  7. Re: Chun Chu
    你是指proxy.ini中的【mode = http】这个吗?
    我用的是http模式,因为goagent的https模式比较暴力,相当于中间人攻击。但是这样goagent就不支持https了,你要找一个https代理作为补充。

    goagent我好久没更新了,现在可能不太一样了。

    回复删除
  8. Playtech - 888 Casino (India) Slot Online & Live
    Playtech provides a range of 동두천 출장안마 unique casino products, including live dealer games, 군포 출장샵 live games, live 논산 출장안마 dealer 서산 출장샵 games, and 군포 출장안마 bingo. Find out how to play

    回复删除