Me estaba conectando a un websocket, un sitio web para recopilar datos de los websockets del módulo de python, pero dejó de funcionar por algún motivo desconocido por ahora. Pero noté que si me conecto a través del navegador con javascript, independientemente del sitio web al que me conecte, los datos me llegan, ya sea que las cookies estén deshabilitadas o no. Me gustaría saber si hay alguna forma de identificar si la conexión es a través del navegador, o de alguna otra manera, para poder intentar solucionar esto.
conexión exitosa por javascript en cualquier sitio web:
const ws = new WebSocket("wss://premws-pt1.365lpodds.com/zap", "zap-protocol-v1"); ws.addEventListener('open', (e) => { console.log("connected") }) ws.addEventListener('message', (message) => { console.log(message.data) }) ws.addEventListener('error', (error) => { console.log(error) }) salida: connected
conexión fallida por python usando el paquete websockets:
import asyncio import websockets headers = { 'Pragma': 'no-cache', 'Accept-Language': 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36', 'Upgrade': 'websocket', 'Sec-WebSocket-Extensions': 'permessage-deflate; client_max_window_bits', 'Cache-Control': 'no-cache', 'Connection': 'Upgrade', 'Sec-WebSocket-Version': '13', } async def main(): try: async with websockets.connect('wss://premws-pt1.365lpodds.com/zap/', extra_headers=headers, origin="https://www.bet365.com", subprotocols=['zap-protocol-v1']) as websocket: print("connected") except websockets.exceptions.InvalidStatusCode as e: print(e) asyncio.get_event_loop().run_until_complete(main()) salida: server rejected WebSocket connection: HTTP 403