2

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

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

我可以使用哪些技术让每个广播公司在不被全球禁令的情况下从机器人获取他们的消息?

这是一个机器人的示例,它可以同时进入多个频道,发送消息并且不会被禁止:

http://www.twitch.tv/moobot

我问过那个创作者是否可以给我一些建议,但他们几乎都拒绝了。

4

1 回答 1

1

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

  • 每个 IP/子网的克隆
    大多数网络限制来自单个 IP 的并发连接数量(有时,尤其是 IPv6 甚至整个子网)。这个限制对于每个网络都是不同的,当超过这个限制时如何处理也是不同的。一些网络会创建一条 g-line(您的 IP 的全球网络禁令),而另一些则只是丢弃任何新连接。

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

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


那么如何绕过这个限制呢?

  • 克隆
    最好的方法是获得例外,获得信任。您如何获得一个,或者您是否能获得一个取决于网络(策略)。

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

  • 速率限制
    询问您的 IRCop 或使用克隆。实现一个队列以避免断开连接Excess Flood

总结一下:

每个通道不应使用单个连接。虽然这使您可以为每个频道选择不同的名称,但这在大多数网络上被视为资源浪费。
最好使用中性名称并将其用于多个频道。达到通道上限后,请使用克隆。

为了避免因excess flood实施队列以阻止线路而被踢(您这边的速率限制)。

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

编辑

在 twitch 上环顾四周后,看起来 twitch 没有使用 IRC 网络,而是使用了多个 IRC 服务器。这使它变得更简单和更复杂:

  • 如果可能,您应该查找适当的 DNS 名称并使用现有连接(具有相同的 ip)。
  • 使用单个用户名。
于 2013-03-30T15:22:49.207 回答