代理服务器后面的net/imap

问题描述:

我想在经过验证的代理服务器后面使用ruby中的net/imap库,我开始深入了解,并且想知道是否有办法做到这一点,或者如果我需要制作我自己的支持代理的net/imap库版本?代理服务器后面的net/imap

是可能的隧道通过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

破解不支持代理信息库,最简单的方法是用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