Так как не владею в нужной мере uvicorn то единственное что могу посоветовать это искать фрагмент import'a websockets/server.py в инициализацию сервера либы uvicorn. и пробросить изменения метода process_request класса, который описан в websockets_impl.py. Ну или модифицировать код либы не через наследование тогда это конечно костыль (=.
UnsupportedOperation: question not readable.
А если без сарказма то нефига не понятно, что у вас за проблема, пишите более подробнее.
Ну если вы не доходите до browser.quit() в функции то вы явно в бесконечном цикле и while True:
визуально неплохой кандидат на роль такого цикла.
Ну вы определили функцию 8 раз код честно всё сделал. За исключением маленького нюанса(XD) в данном подходе код рабочий. А что вы хотите что бы код сделал?
Больше похоже на бесплатный прокси который работает через раз, а не на блокировку. Купите хорошие прокси.
Интересно а этого бота для задачи вопросов сюда тоже кто-то написал.
На странице selenium позволяет исполнять JavaScript. Всё что вам надо это составить правильный запрос и выполнить этот JS код. Если удобней можете так же загрузить одну из JS библиотек для этого.
Но как и написал человек выше вы можете послать запрос с помощью других библиотек если правильно их составите.
Cookies нужно получать заходом на страницу авторизации в рамках сессии после этого они там будут сохранены. В вашем случае есть вопрос по параметру _xfToken с немалой вероятностью он находится на странице авторизации и его нужно всегда оттуда читать?
Проверьте верность хедера. Возможно в куках чего нет, старайтесь сначала всегда на страницу авторизации заходить(страница с полями ввода своего логина и пароля) и после этого в рамках той же сессии уже отправлять запрос. Так же довольно странно видеть _csrf в payload а не в куках.
Очень обрывочная информация. Однако причин такому поведению может быть много и все они будут на стороне сервера. В вашем случае если api всё же работает а значит поле куки читается сервером то вариантов несколько.
1) Попробуйте скопировать все headers для requests аналогичные OperaGX.
2) Посмотрите что это за 5 пропавших товаров, а то уж очень похоже на систему рекомендаций или рекламу. У них явно должны быть какие-то особенности.
Но в целом ничего не запрещает серверу анализировать с какого браузера пришел запрос и отвечать на каждый по своему. Так же советую поиграться с параметром &per=30 возможно есть ещё доступные значения или прямое чтение(видал как то почти прямой sql запрос в url XD).
UPD
Если бы не аналогичные результаты в Сhrome то я бы подумал о фальшивке. Но в целом в запросах нет никакой магии это обычная пересылка текста с анализом полученных полей.
Путей 2:
1) Вы управляете браузером это selenium и иже с ними средства +/- полноценного рендеринга страницы и извлечения данных.
2) Вы исследуете страницу и повторяете все запросы и передаваемые данные сами и получаете под каждый конкретный сайт скрип использующий все необходимые виды запросов для получения данных. И да websoсket один из необходимых в данном случае форматов обмена данных.