You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SOCKS代理通过Python连接IRC服务器失败求助

Python使用SOCKS代理连接IRC服务器失败
  • SOCKS代理经检测可用,mIRC配置该代理后能正常连接IRC服务器,但Python代码无法成功连接
  • 尝试更换多个SOCKS4、SOCKS5代理,均无效果:要么绕过代理直接使用真实IP连接,要么返回连接超时错误

原代码

import socks
import time

proxy_type = socks.PROXY_TYPE_SOCKS4
proxy = '192.111.135.17'
port =  18302

network = "irc.icqchat.net"
port = 6667

irc = socks.socksocket()
irc.setproxy(proxy_type, proxy, port)

irc.connect((network, port))    

print (irc.recv ( 4096 ))
irc.send(bytes(  'NICK  test_connection \r\n' , "UTF-8"))
irc.send(bytes(  'USER botty botty botty :Sup\r\n' , "UTF-8"))
irc.send(bytes(  'JOIN  #testing \r\n' , "UTF-8"))
time.sleep(4)

报错信息

socks.ProxyConnectionError: Error connecting to SOCKS4 proxy 192.111.135.17:6667: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

问题分析与修复

核心错误:变量名冲突

代码中重复使用了port变量:先定义代理端口为18302,随后又将IRC服务器端口6667赋值给同一个port变量,导致调用setproxy()时传入的是IRC端口而非代理端口,这直接导致代理连接失败。

修复后的代码

修改变量名避免冲突,同时规范IRC命令格式(去掉多余空格):

import socks
import time

proxy_type = socks.PROXY_TYPE_SOCKS4
proxy = '192.111.135.17'
proxy_port = 18302  # 重命名代理端口变量

network = "irc.icqchat.net"
irc_port = 6667  # 重命名IRC服务器端口变量

irc = socks.socksocket()
irc.setproxy(proxy_type, proxy, proxy_port)  # 传入正确的代理端口

irc.connect((network, irc_port))    

print(irc.recv(4096))
# 去掉命令中的多余空格,避免服务器解析异常
irc.send(bytes('NICK test_connection\r\n', "UTF-8"))
irc.send(bytes('USER botty botty botty :Sup\r\n', "UTF-8"))
irc.send(bytes('JOIN #testing\r\n', "UTF-8"))
time.sleep(4)

额外注意事项

  • 若使用SOCKS5代理,需将proxy_type改为socks.PROXY_TYPE_SOCKS5;部分SOCKS5代理需要验证,可在setproxy()中添加username和password参数
  • 发送IRC命令时尽量保持格式规范,避免多余空格,防止服务器无法正确解析命令

内容的提问来源于stack exchange,提问作者Sib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:57:25