如何捕获Blitzortung.org动态变更端口的WebSocket实时雷电数据?
解决Blitzortung.org动态WebSocket端口连接问题
嘿,这个动态端口的问题确实有点烦人,但其实用个简单的端口遍历逻辑就能搞定。我之前做类似的实时数据捕获时,就是这么处理的,亲测有效。下面给你一步步拆解解决方案:
核心思路
Blitzortung的WebSocket端口在8050-8090之间动态分配,那我们就写个循环,逐个尝试这个区间内的端口,直到成功建立连接。一旦连接成功,就可以正常发送带地图密钥的请求并接收实时雷电数据了。
具体实现步骤
1. 先安装依赖库
确保你已经安装了websocket-client,如果没有的话,用pip安装:
pip install websocket-client
2. 遍历端口尝试连接
我们写一个循环,从8050到8090逐个调用ws.connect(),用try-except捕获连接失败的异常,直到找到可用端口。
3. 获取地图密钥
你提到的地图密钥,得从Blitzortung的网页里挖出来:
- 打开Blitzortung官网,按F12打开开发者工具
- 切换到「Network」标签,筛选「WS」(WebSocket)类型的请求
- 找到已建立的WebSocket连接,查看它发送的初始消息,里面就包含需要的密钥(通常是类似
map_xxxxxx的字符串) - 把这个密钥存到变量里,后续发送请求时用就行
4. 捕获实时JSON数据
连接成功后,发送包含密钥的订阅请求,然后持续监听WebSocket的消息,解析返回的JSON数据即可。
完整代码示例
import websocket import json from time import sleep # 替换成你从网页获取的地图密钥 MAP_KEY = "your_map_key_here" WS_BASE_URL = "ws://ws.blitzortung.org:{}" PORT_RANGE = range(8050, 8091) # 包含8090端口 def on_message(ws, message): # 解析并处理实时雷电JSON数据 try: data = json.loads(message) print("收到雷电数据:", data) # 这里可以添加你的自定义处理逻辑,比如存入数据库、做数据分析等 except json.JSONDecodeError: print("无法解析消息:", message) def on_error(ws, error): print("WebSocket错误:", error) def on_close(ws, close_status_code, close_msg): print("WebSocket连接关闭") def on_open(ws): print("WebSocket连接成功!") # 发送带地图密钥的订阅请求 request_msg = json.dumps({ "command": "subscribe", "key": MAP_KEY }) ws.send(request_msg) print("已发送订阅请求") def connect_to_blitzortung(): for port in PORT_RANGE: ws_url = WS_BASE_URL.format(port) print(f"尝试连接端口 {port}...") try: ws = websocket.WebSocketApp( ws_url, on_open=on_open, on_message=on_message, on_error=on_error, on_close=on_close ) # 启动连接,run_forever会阻塞直到连接关闭 ws.run_forever() # 连接成功运行后,跳出端口遍历循环 break except Exception as e: print(f"端口 {port} 连接失败:{e}") # 失败后稍作等待再试下一个端口 sleep(0.5) if __name__ == "__main__": connect_to_blitzortung()
注意事项
- 密钥有效性:地图密钥可能会随页面更新而变化,如果发现连接后收不到数据,记得重新去网页获取最新的密钥。
- 重连逻辑:如果所有端口都连接失败,可以考虑添加整体重试逻辑,比如过几分钟再重新遍历端口。
- 合规性:确保你的数据捕获行为符合Blitzortung的使用条款,不要过度请求给服务器造成压力。
- 异常完善:代码里的异常处理可以根据你的需求进一步优化,比如处理连接中断后的自动重连。
内容的提问来源于stack exchange,提问作者Ape Toshi
相关产品推荐
相关产品推荐

