【发布时间】:2011-09-30 09:23:27
【问题描述】:
我在玩 Twisted,在尝试用 Python (2.7) 重写一个旧的 java IRC 机器人时,我建立在 IrcLogBot example 之上。
我需要通过(非身份验证)HTTP 代理连接到 IRC 服务器 - 但在 irc.IRCClient 或 reactor.connectTCP 中似乎没有对此的任何支持。我找错地方了吗?我可以将我的连接封装在某种代理隧道程序中吗?
提前感谢您的帮助!
【问题讨论】:
我在玩 Twisted,在尝试用 Python (2.7) 重写一个旧的 java IRC 机器人时,我建立在 IrcLogBot example 之上。
我需要通过(非身份验证)HTTP 代理连接到 IRC 服务器 - 但在 irc.IRCClient 或 reactor.connectTCP 中似乎没有对此的任何支持。我找错地方了吗?我可以将我的连接封装在某种代理隧道程序中吗?
提前感谢您的帮助!
【问题讨论】:
如果您连接的 HTTP 代理支持 CONNECT 请求,这是完全可行的。
这里是an example,它适用于通过 HTTP 代理建立 SSH 连接的隧道。它也应该适用于 IRC 连接。
使用示例代码,您应该能够执行以下操作:
proxy = HTTPProxyConnector('myhttpproxy.server', 8080)
proxy.connectTCP('myirc.server', 6667, MyTwistedIRCClientFactory())
在更优雅/快速地处理服务器超时方面仍有一些问题需要解决,但如果您包含某种定期应用程序或底层协议级别的 ping,它应该可以防止两个服务器超时您的连接。
【讨论】: