【问题标题】:No Ident Response Python IRC没有 Ident 响应 Python IRC
【发布时间】:2016-10-04 19:48:47
【问题描述】:

我没有得到这个 IRC 连接的“Ident”响应

import sys
import time
import socket 
server="irc.freenode.net" 
botnick="Hidden" 
channel="Hidden"

#Establish connection 
irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
irc.connect((server,6667)) 
irc.setblocking(False)
time.sleep(1)

time.sleep(1) 
irc.send(("/NICK "+botnick+"\r\n").encode('UTF-8'))
time.sleep(1) 
irc.send(("/JOIN "+channel+"\r\n").encode('UTF-8'))

while 1: 
 time.sleep(0.1) 
 try: 
      text=irc.recv(2040) 
      print(text) 
 except Exception: 
      pass
if text.find("PING")!=-1:
irc.send(("Test").encode('UTF-8'))
input() 

这是控制台输出

b':wilhelm.freenode.net NOTICE * :*** Looking up your       
hostname...\r\n:
wilhelm.freenode.net NOTICE * :*** Checking Ident\r\n:
wilhelm.freenode.net NOTICE * :*** Found your hostname\r\n'
b':wilhelm.freenode.net NOTICE * :*** No Ident response\r\n'

它只挂了大约 5-10 秒,然后说关闭到 127.0.0.1 的链接 然后说 b'' 多次

代码灵感来自 http://agzuniverse.blogspot.ca/2016/05/irc-bot-in-python-tutorial.html

【问题讨论】:

    标签: python sockets irc


    【解决方案1】:

    您在加入频道之前缺少命令。缺少的命令是 USER。没有命令 USER。它将等待 Ident。然后,等待 5-10 秒,然后关闭链接。

    就我而言:

    _user = ("USER %s %s bla :%s\r\n" % (self.irc_nick, self.irc_host,self.irc_nick))
    self.irc_sock.send(bytes(_user, 'UTF-8'))
    

    在你的情况下:

    irc.send('USER %i 8 * :%s\r\n' % (ident, nick))
    

    甚至使用字节:

    irc.send(bytes("USER " + botnick + " " + botnick +" " + botnick + " :python\n", "UTF-8"))
    

    然后你发送到NICKSERV IDENTIFY

    irc.send(bytes("NICKSERV IDENTIFY " + botnickpass + " " + botpass + "\n", "UTF-8"))
    

    【讨论】:

      【解决方案2】:

      identd RFC1413 是一项服务,用于将来自多用户主机的连接与“拥有”这些连接的用户相关联。它曾经被更广泛地使用,旧的 SMTP 和 NNTP 服务器经常被配置为记录 identd 响应,但如今它已基本不再使用,除了 IRC 服务器。

      最初,IRC 服务器在连接时检查 ident,因为大多数连接来自拥有大量用户的 UNIX 主机,并且 ident 允许服务器和频道运营商在滥用情况下区分这些用户。

      时至今日,它仍然可以用于此目的,并且对于希望权限超过非常小的连接限制(通常为 2-5 个连接)的主机来说,它经常需要它。有时,服务器甚至对未共享的主机也需要它,因为它为试图从不安全的代理和禁止使用 IRC 的系统进行 IRC 的人设置了障碍。

      由于 identd 在端口 113 上运行,当将其与类似 unix 的操作系统系统(如 Linux)一起使用时,您无法以普通用户身份启动该服务 - 系统管理员必须安装 ident 守护程序。最有可能的是,您的系统的软件存储库中有一个或多个可用。在 Windows 上,不存在这种特权端口的概念,IRC 客户端软件通常提供它自己的内置 identd。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 2012-06-13
        • 2011-10-07
        • 2017-01-24
        • 1970-01-01
        • 2021-06-15
        相关资源
        最近更新 更多