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

Python开发WHOIS工具遇运行问题:输出未按预期有序排列

WHOIS查询工具修复方案

你的代码存在几个导致输出混乱、功能异常的问题,以下是修复后的完整代码及说明:

修复后的代码

from socket import socket, AF_INET, SOCK_STREAM
from sys import argv
import pyfiglet

ascii_banner = pyfiglet.figlet_format("WHOIS - Gustang")
print(ascii_banner)

host = 'whois.iana.org'
port = 43
conn = host, port
bufsiz = 4096  # 增大缓冲区,适配更长响应

if len(argv) == 2:
    with socket(AF_INET, SOCK_STREAM) as s:
        s.connect(conn)
        # 发送查询请求,确保编码为字节并添加换行
        s.send(f'{argv[1]}\r\n'.encode('utf-8'))
        # 循环接收完整响应
        full_resp = b''
        while True:
            resp = s.recv(bufsiz)
            if not resp:
                break
            full_resp += resp
        # 解码为字符串并打印,自动处理换行格式
        print(full_resp.decode('utf-8'))
else:
    print("请传入要查询的域名或IP,格式:python consulta.py example.com")

关键修改说明

  • 修复输出格式混乱:原代码直接打印字节对象(print(resp)),会显示b'...'和转义字符,现在先将完整响应解码为UTF-8字符串再打印,自动解析换行符,实现逐条有序显示。
  • 获取完整响应:原代码仅调用一次s.recv(),可能截断长响应。改为循环读取直到无数据返回,确保拿到完整的WHOIS信息。
  • 移除冗余代码:删除无实际作用的ba = bytearray()和ba.endswith(crlf)代码。
  • 增加参数校验提示:当未传入查询目标时,给出明确的使用提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:10:01