Задать вопрос
@hghcntrl77

Как решить проблему с подключение к серверу через websocket?

Приветствую
Хотел написать небольшой скрипт для парсинга данных в реальном времени, функционал уже реализован разработчиками сайта, но работает все это дело только в браузере.
Раньше с парсингом дел особых не имел, и тем более с вебсокетом, по этому даже не знаю в какую сторону копать.
В общем проблема следующая, мне удается подключиться, принимать данные 5-10 секунд, после чего идет разрыв соединения с сообщением - received 1008 (policy violation); then sent 1008 (policy violation)

Сервер судя по всему детектит что это не браузер, и рвет коннект, хотя я передаю актуальные куки внутри заголовка, в которых и свежий клаудфлейр айдишник, и ссешн айди. Все как в заголовках которые передает браузер, кроме
sec-websocket-extensions: permessage-deflate; client_max_window_bits
sec-websocket-key: V+rF18z4GSVP5KRDVDxw==
sec-websocket-version: 13

Эти заголовки передать не могу, их видимо генерирует сам клиент при соединении.
Заголовок выглядит следующим образом, пробовал передавать как и больше информации в хедере, так и меньше, итог один - через 5-7 секунд соединение рвется

{
    "Origin": "URL",
    "User-Agent": "AGENT",
    "Cookie": "SESSID=ID; cf_clearance=cloudflare_id"
}

В чем может быть проблема и можно ли как нибудь это обойти?
Тестовый код для соединения выглядит так
import asyncio
import websockets

async def connect():
    try:
        async with websockets.connect(uri, additional_headers=headers) as ws:
            print("Connected!")

            while True:
                message = await ws.recv()
                print(f" Received: {message}")

    except Exception as e:
        print(f" Connection failed: {e}")

asyncio.run(connect())
  • Вопрос задан
  • 519 просмотров
Подписаться 3 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@rPman
Сохрани сессию в браузере в .har файл (консоль разработчика - сеть) и изучи его досканально, в худшем случае придется реверсить скрипты браузера, потому что информацию о том что это браузерный клиент можно передавать даже в таймингах задержек принятия сообщений, т.е. по самим сообщениям этого видно не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽