如何在 Python 中为 IRC 机器人配置 SSL?

Posted

技术标签:

【中文标题】如何在 Python 中为 IRC 机器人配置 SSL?【英文标题】:How can I configure SSL for an IRC bot in Python? 【发布时间】:2020-05-21 09:57:45 【问题描述】:

我该如何解决这个错误:

错误:在仅 SSL 端口上收到非 SSL 命令。检查你的 连接设置

我的代码

import socket

ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server = "server" 
channel = "#channel" 
ircsock.connect((server, 6697)) 
ircsock.send(bytes("USER "+ botnick +" "+ botnick +" "+ botnick + " " + botnick + "n", "UTF-8"))
ircsock.send(bytes("NICK "+ botnick +"n", "UTF-8")) 
ircsock.send(bytes("JOIN "+ channel +"n", "UTF-8")) 
ircmsg = ircsock.recv(4096).decode("UTF-8")
print(ircmsg)

【问题讨论】:

【参考方案1】:

使用 SSL 套接字包装连接套接字。 例如:

import ssl
import socket

port = 6697
server = "server"  # Replace me with real address
ctx = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ircsock = ctx.wrap_socket(sock) 
ircsock.connect((server, port))
ircsock.send(bytes("USER "+ botnick +" "+ botnick +" "+ botnick + " " + botnick + "n", "UTF-8"))
...

【讨论】:

以上是关于如何在 Python 中为 IRC 机器人配置 SSL?的主要内容,如果未能解决你的问题,请参考以下文章

Python IRC bot 在 3 次 ping 后断开连接

Twisted Python IRC bot - 如何异步执行函数以便它不会阻塞机器人?

Twisted Python IRC Bot - 如何在 bot 运行命令时监听命令?

Python twisted irc - 登录时的服务器密码

显示提要的 Bot IRC 不起作用

Python:检查 IRC 连接是不是丢失(PING PONG?)