没有Ident响应Python IRC

时间:2016-06-05 01:07:32

标签: python sockets irc

我没有通过此IRC连接获得“识别”响应

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

1 个答案:

答案 0 :(得分:0)

identd RFC1413是一种服务,用于将来自多用户主机的连接与拥有"拥有的用户相关联。那些联系。它曾经被更广泛地使用,旧的SMTP和NNTP服务器经常被配置为记录相同的响应,但是现在除了IRC服务器之外它很大程度上不再使用。

最初,IRC服务器在连接时检查身份,因为大多数连接来自具有大量用户的UNIX主机,而且身份允许服务器以及通道操作员在滥用情况下区分这些用户。

直到今天它仍然可以用于此目的,并且经常需要允许超过非常小的连接限制(通常为2-5个连接)的主机。有时,即使对于不共享的主机,服务器也会要求它,因为它为试图从不安全的代理和禁止使用IRC的系统进行IRC的人造成了障碍。

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