本文背景是,中國到dropbox的http連接會被重置,但是https連接不受影響。如果背景改變了,則本文失效。本文主題是讓dropbox客戶端的http請求經(jīng)socks代理訪問dropbox服務(wù)器,而https請求不經(jīng)代理直接訪問,用這種方法來解決Dropbox客戶端目前無法實(shí)時更新的問題。
現(xiàn)象:在國內(nèi)的多個電腦客戶端使用同一個Dropbox帳號登錄,實(shí)現(xiàn)協(xié)同辦公等操作,但是一臺電腦更新文件后,無法實(shí)時同步到其他電腦客戶端。而在國外的網(wǎng)絡(luò)環(huán)境沒有這種現(xiàn)象。
原因:目前在國內(nèi),dropbox被關(guān)鍵字屏蔽(Wildcard: .dropbox.com),但是客戶端還能正常使用,因?yàn)榭蛻舳撕头?wù)器之間使用的是https加密傳輸。但只有一處是沒有使用https的,就是 stork47.dropbox.com(筆者是這個地址,其他地方可能不一樣)。這個服務(wù)器負(fù)責(zé)將服務(wù)器端(或其他客戶端)發(fā)生的文件更新通知到其他客戶端(筆者猜的,但應(yīng)該差不多),然后其他客戶端才會發(fā)起https請求去和服務(wù)器同步這些文件。實(shí)際中,是客戶端每60秒向 stork47.dropbox.com查詢一次,看是否有文件需要更新。因?yàn)樵撜埱鬀]有使用https連接,導(dǎo)致連接一直被RESET,所以某臺客戶端的更新無法實(shí)時反映到其他客戶端。
因?yàn)橐话闳丝赡軟]有這個需求,所以沒多少人關(guān)注這個課題。像我以前也只是在家里和公司同步一些文件而已,沒有實(shí)時更新的必要。有強(qiáng)烈需求的人,就設(shè)置讓客戶端全程走代理,可以解決上述問題,缺點(diǎn)是文件的更新速度受代理服務(wù)器速度的影響,大多數(shù)情況下沒有直接連接的速度快。還有一部分人當(dāng)需要更新時,直接重啟客戶端(甚至為此寫了個腳本),因?yàn)榭蛻舳酥辉趩訒r才使用https連接檢查更新,這樣做的缺點(diǎn)顯而易見。
解決Dropbox無法實(shí)時更新的問題
解決方法:最近用privoxy,發(fā)現(xiàn)它可以做到分流http和https,于是試驗(yàn)了一下,果然可以分流dropbox的客戶端請求了。就是前面說的,讓http 請求走代理,而https請求不走。這樣即滿足了實(shí)時更新的需求,又兼顧了更新速度,可謂智能代理了。privoxy還有不少替代方案筆者沒有試過的,比如polipo之類。以下是操作步驟。
1,需要準(zhǔn)備的東西:dropbox客戶端、代理軟件、privoxy。該方案應(yīng)該與平臺無關(guān),但是筆者只在windows 7下試驗(yàn)過。
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的代理設(shè)置為HTTP 127.0.0.1:8118,就OK了。
如果有疑問可以留言討論,如果有關(guān)于軟件的其他用法的問題請另行g(shù)oogle。