通过 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 如何与基于试验的单元测试一起工作?

为本地 HTTP/2 代理生成证书

如何使基于扭曲的 irc 客户端通过 socks 代理连接?

爬虫日记(108):Twisted:使用后悔药

网络爬虫之scrapy框架详解,scrapy框架设置代理

Twisted listenSSL虚拟主机