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
相关产品推荐
相关产品推荐

