处理IRC聊天机器人应用程序的全局禁令

时间:2013-02-18 03:27:14

标签: javascript node.js bots irc

我有一个IRC聊天机器人,我使用Node.js + JavaScript为TwitchTV上的广播公司开发。我从我的家用电脑上运行它,我知道如果它发送太多消息或泛滥,IRC将全局禁止IP地址。

我想打开其他广播公司的聊天机器人,但我担心如果不同的机器人我会被全球禁止(我设置它以便广播公司可以为他们的机器人创建一个新帐户,因此名称适合于他们的频道)从一个全球IP发送消息。

我可以使用哪些技术,每个广播公司都会从机器人那里获得他们的消息而不会被全球禁止?

以下是一个机器人的示例,该机器人可以同时在多个频道中发送消息而不会被禁止:

http://www.twitch.tv/moobot

我已经问过创作者他们是否可以给我一些提示,但他们几乎都说没有。

1 个答案:

答案 0 :(得分:1)

您应该知道一些限制,并且您可以/不应该超过:

    每个IP /子网
  • 克隆 大多数网络限制来自单个IP的并发连接数量(有时,尤其是IPv6甚至整个子网)。对于每个网络,此限制是不同的,以及当此限制超过时如何处理。有些网络会创建一个g-line(全局网络禁止你的IP),其他网络只会丢弃任何新连接。

  • 每个连接
  • 频道限制
    您可以同时使用多少个频道。此限制是每个连接,因此添加其他连接会使您需要克隆的最大通道倍增。

  • 每个连接
  • 速率限制 每个连接仅允许在给定时间内将一定量的数据发送到服务器。这可以很容易地从5个命令/秒到复杂,其中不同的命令为阈值添加不同的数量。


那你怎么能绕过这个限制?

  • <强>克隆
    最好的方法是获得一个例外,一个信任。如何获得一个或者如果你能得到一个取决于网络(政策)。

  • 频道限制
    网络中的某些服务器可能允许更多的信道进入。某些网络可以允许某些用户获得更高的限制。再次询问您的IRCop或使用克隆。

  • 限价
    询问您的IRCop或使用克隆。实施队列以避免与Excess Flood断开连接。

总结:

您不应该为每个频道使用单个连接。虽然这为您提供了为每个频道选择不同名称的好处,但这被视为大多数网络上的资源浪费。
更好地使用中性名称并将其用于多个渠道。点击频道上限后,使用克隆。

为了避免被excess flood踢出来实施一个队列来保留线路(你身边的速率限制)。

切勿连接超过允许的并发连接数量到网络。
这包括“Ghosts”,最近被删除但仍然“在服务器上”的连接。 (防止g线将限制除以2或等待3分钟(或更长时间)再重新连接)

修改

看了看抽搐后,看起来这个抽搐不使用IRC网络,而是使用了几个IRC服务器。这使它更简单,更复杂:

  • 如果可能,您应该查找相应的DNS名称并使用现有连接(使用相同的IP)。
  • 使用一个用户名。