通过 http 代理连接 Twisted IRCClient
Posted
技术标签:
【中文标题】通过 http 代理连接 Twisted IRCClient【英文标题】:Connect Twisted IRCClient through a http proxy 【发布时间】:2011-09-30 09:23:27 【问题描述】:我在玩 Twisted,在尝试用 Python (2.7) 重写一个旧的 java IRC 机器人时,我建立在 IrcLogBot example 之上。
我需要通过(非身份验证)HTTP 代理连接到 IRC 服务器 - 但在 irc.IRCClient 或 reactor.connectTCP 中似乎没有对此的任何支持。我找错地方了吗?我可以将我的连接封装在某种代理隧道程序中吗?
提前感谢您的帮助!
【问题讨论】:
【参考方案1】:如果您连接的 HTTP 代理支持 CONNECT 请求,这是完全可行的。
这里是an example,它适用于通过 HTTP 代理建立 SSH 连接的隧道。它也应该适用于 IRC 连接。
使用示例代码,您应该能够执行以下操作:
proxy = HTTPProxyConnector('myhttpproxy.server', 8080)
proxy.connectTCP('myirc.server', 6667, MyTwistedIRCClientFactory())
在更优雅/快速地处理服务器超时方面仍有一些问题需要解决,但如果您包含某种定期应用程序或底层协议级别的 ping,它应该可以防止两个服务器超时您的连接。
【讨论】:
@fmoo,我可以确认这是可行的。我在工作时必须使用 XChat 下的代理设置。设置 http_proxy 和 https_proxy 环境变量是不够的。我下载了该 gist 文件并使用 irc log bot 示例运行它,效果很好。谢谢!以上是关于通过 http 代理连接 Twisted IRCClient的主要内容,如果未能解决你的问题,请参考以下文章
Twisted reactor 如何与基于试验的单元测试一起工作?