websocket_gui.py
pip install websocket-client tkinter certifi
python websocket_gui.py
这是一个基于 Python 的图形界面程序(使用 tkinter),用于实现:
- 连接 WebSocket 服务器(支持
ws://和wss://) - 发送文本/JSON 消息
- 显示连接状态、响应时间和消息历史
- 支持 SSL 证书校验或忽略 SSL 验证
- 进行性能测试(发送多条消息并测量响应时间)
- 显示 SSL 诊断信息
- 保存日志到本地文件
- Python 3.x
- tkinter:GUI 框架
- websocket-client:用于 WebSocket 协议处理
- json:解析 JSON 数据
- ssl & certifi:SSL/TLS 证书处理
| 模块 | 功能 |
|---|---|
WebSocketTester 类 |
主类,包含所有逻辑和 UI 构建 |
connect_websocket / disconnect_websocket |
连接/断开 WebSocket |
send_message / send_json |
发送普通/JSON 消息 |
_receive_messages |
在新线程中接收 WebSocket 消息 |
start_performance_test |
执行性能测试 |
show_ssl_diagnostics |
显示 SSL 证书相关信息 |
save_log |
保存所有操作日志 |
- 支持 标准 WebSocket (
ws://) 与 安全 WebSocket (wss://)。 - 可选择忽略 SSL 证书(适用于自签名或内部服务)。
- 支持代理(如使用 Burp Suite 或其他本地代理)。
✅ 示例 URL:
wss://echo.websocket.orgws://localhost:8080
- 可以发送任意字符串。
- 支持发送 JSON 消息,并可以自动格式化,识别 JSON 错误。
- 支持“发送 JSON”按钮发送格式良好的 JSON。
- 自动发送 10 条不同类型的消息。
- 显示平均、最大、最小响应时间、标准差等指标。
- 能够查看每一条测试消息的详细响应情况。
- 显示详细的 SSL 证书路径、OpenSSL 版本等系统信息。
- 提供常见的 SSL 相关问题解决建议,比如:
- “忽略SSL验证”选项
- 更新
certifi、安装系统根证书 - 设置代理证书(如 Burp)
- 所有操作都会记录在 GUI 中的滚动文本框内。
- 支持将日志保存为
.log文件。 - 可通过
SSL 诊断窗口获取详细的 SSL 建立过程。
self.ignore_ssl = tk.BooleanVar(value=False)- 如果用户启用“忽略SSL证书验证”,可能会在传输过程中暴露敏感数据(如密码、API Key 等)。
- 建议:在生产环境下不建议使用此功能,仅限于开发和服务测试。
- 发送的是明文消息,若未加密,可能被中间人截取。
- 不适合用于传输敏感数据(如 JWT Token、密码等)。
- 依赖
certifi包,某些环境可能缺少或版本过低。 - 若遇到 SSL 问题,建议运行
pip install --upgrade certifi。
- 默认 URL:
wss://echo.websocket.org - 使用代理时输入
host:port格式 - 可通过 "SSL诊断" 查看 SSL 日志
欢迎提交 PR 和 issue!