本文背景是,中國到dropbox的http連接會被重置,但是https連接不受影響。如果背景改變了,則本文失效。本文主題是讓dropbox客戶端的http請求經socks代理訪問dropbox服務器,而https請求不經代理直接訪問,用這種方法來解決Dropbox客戶端目前無法實時更新的問題。
現象:在國內的多個電腦客戶端使用同一個Dropbox帳號登錄,實現協同辦公等操作,但是一臺電腦更新文件后,無法實時同步到其他電腦客戶端。而在國外的網絡環境沒有這種現象。
原因:目前在國內,dropbox被關鍵字屏蔽(Wildcard: .dropbox.com),但是客戶端還能正常使用,因為客戶端和服務器之間使用的是https加密傳輸。但只有一處是沒有使用https的,就是 stork47.dropbox.com(筆者是這個地址,其他地方可能不一樣)。這個服務器負責將服務器端(或其他客戶端)發生的文件更新通知到其他客戶端(筆者猜的,但應該差不多),然后其他客戶端才會發起https請求去和服務器同步這些文件。實際中,是客戶端每60秒向 stork47.dropbox.com查詢一次,看是否有文件需要更新。因為該請求沒有使用https連接,導致連接一直被RESET,所以某臺客戶端的更新無法實時反映到其他客戶端。
因為一般人可能沒有這個需求,所以沒多少人關注這個課題。像我以前也只是在家里和公司同步一些文件而已,沒有實時更新的必要。有強烈需求的人,就設置讓客戶端全程走代理,可以解決上述問題,缺點是文件的更新速度受代理服務器速度的影響,大多數情況下沒有直接連接的速度快。還有一部分人當需要更新時,直接重啟客戶端(甚至為此寫了個腳本),因為客戶端只在啟動時才使用https連接檢查更新,這樣做的缺點顯而易見。
解決Dropbox無法實時更新的問題
解決方法:最近用privoxy,發現它可以做到分流http和https,于是試驗了一下,果然可以分流dropbox的客戶端請求了。就是前面說的,讓http 請求走代理,而https請求不走。這樣即滿足了實時更新的需求,又兼顧了更新速度,可謂智能代理了。privoxy還有不少替代方案筆者沒有試過的,比如polipo之類。以下是操作步驟。
1,需要準備的東西:dropbox客戶端、代理軟件、privoxy。該方案應該與平臺無關,但是筆者只在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。