2010-02-23 83 views
2

我想在經過驗證的代理服務器後面使用ruby中的net/imap庫,我開始深入瞭解,並且想知道是否有辦法做到這一點,或者如果我需要製作我自己的支持代理的net/imap庫版本?代理服務器後面的net/imap

回答

1

是可能的隧道通過HTTPS代理服務器的任何套接字連接。

要做到這一點:

  • 打開一個套接字代理服務器
  • 發送 「CONNECT主機名:端口號HTTP/1.0 \ n \ r \ n \ r \ n」
  • 從讀插座,直到你看到的HTTP標頭的結尾(2個空行)
  • 您的插座現在連接

這裏有這樣一個名爲tunN的ruby example埃爾。

原因,這將失敗:

  • 大多數網絡管理員將只允許連接到端口443
  • 代理服務器代理認證
+0

此服務器具有代理身份驗證。但你的例子有這種情況下的套接字方法。我想我應該可以使用該套接字將net/imap重寫爲我可以使用的東西。謝謝 – 2010-03-08 12:25:28

0

破解不支持代理信息庫,最簡單的方法是用Net::HTTP::Proxy一個實例來代替Net::HTTP

# somewhere before you load net/imap 
proxy = Net::HTTP::Proxy(address, host) 
Net.class_eval do 
    remove_const :HTTP 
    HTTP = proxy 
end 
+0

不意味着它需要通過HTTP運行?爲了以防萬一,我會盡力而爲。 – 2010-02-25 06:15:05

+0

大鼠。我假設Net/IMAP庫使用Net :: HTTP庫來構建套接字,但它並沒有。 (我有*沒有線索*順便說一句,爲什麼我認爲這沒有多大意義。) – 2010-02-26 18:59:09

+0

感謝任何方向在套接字級別提供代理支持,我正在尋找,它似乎可能是混亂的。我可能必須遵循他們用於Net :: HTTP :: Proxy的模式 – 2010-02-26 21:45:16

相關問題