Обход капчи и ошибки 429 через вход в аккаунт Авито#226
Обход капчи и ошибки 429 через вход в аккаунт Авито#226InvisibleRain wants to merge 77 commits intoDuff89:masterfrom
Conversation
This is intended to fix "Не удалось получить HTML" error
This reverts commit c158978.
…ywright uninstall`
E.g. this will pop up a graphical browser and then ask a user for the password to their Avito account: import asyncio import prompt_user_login asyncio.run(prompt_user_login.wrapper())
…t sensitive session cookies
The leak happens when page.goto throws an error, but the page is not closed properly.
After adding support for the playwright client from parser_cls there's a lot of similar code being shared between get_cookies and parser_cls. It would be a good idea to move proxy functionality into a separate class. Methods from the new class can then be inherited and tailored for a specific need.
Similar code exists in prompt_user_login and should probably be moved into a separate file
|
При запуске на Windows AvitoParser.py не открывает окна и сразу завершается с кодом 0 |
|
@PhotikLed Гляну на днях. Скинь пока версию винды, питона и flet. Ну и плюсом, запуск parser_cls.py в консоли работает? |
|
@InvisibleRain Python 3.13.7; Flet: Version: 0.80.1; Win 11 25H2 parser_cls.py при использовании state.json при инициализации AvitoParse выдает предупреждение:
А так да, работает |
|
Ан, нет. При запросе уже второй страницы появляется ошибка:
|
This reverts commit b6a686817a50d45f5f683cd326497cc55dacccce.
This reverts commit 3724c1c.
This reverts commit 142b2ed.
…void type errors in get_html" This reverts commit cd8d21f.
…o save it" This reverts commit 1523de5.
This reverts commit 05fb7fe.
…request" This reverts commit 286e3f7.
This reverts commit ba2ca50.
This reverts commit 546b803.
This reverts commit 5bde40e.
This reverts commit 24f56b1.
This reverts commit 9a07a7c.
This reverts commit da38d59.
This reverts commit 42443f2.
6cc9964 to
6692ae6
Compare
|
Перевел на requests, проверена работа как с прокси, так и без него |
Заранее извиняюсь за столь большой пулл-реквест, изначально ожидал что кода будет гораздо меньше.
Описание
Данный патч добавляет возможность практически полностью обойти rate-limit авито при работе без прокси. Успешно протестирована продолжительная работа парсера без прокси с интервалами
pause_generalиpause_between_linksв одну секунду.Детали работы
Для активации обхода rate-limit требуется войти в аккаунт Авито на системе с графическим интерфейсом через скрипт
prompt_user_login.pyили кнопку "Войти в аккаунт Авито". После успешного входа сессия пользователя будет сохранена в файл (по умолчанию state.json), после чего будет переиспользована в запросах через Playwright, в том числе и на серверах без графического интерфейса. Был существенно переработан сетевой код. Теперь для запросов к urls и для парсинга просмотров используется Playwright вместо requests.Дополнительные изменения
Также в патче присутствуют мелкие изменения, которые было бы трудно мержить отдельно от данного PR:
ensure_playwright_installed.gitignoreво избежание случайного добавления чувствительных файлов в гитТестирование
Данный патч был протестирован на десктопном Debian 13, а также в контейнере из #224. На винде протестирован в чистом venv на Python 3.13.7; Win 11 25H2. Тестирование на macos не осуществлялось.
Технический долг
На данном этапе из кода не были удалены рудиментарные функции, такие как get_cookies, load_cookies, а также функции для работы с прокси в requests. Рудиментарные функции для работы с прокси в requests предлагаю оставить т.к. они могут пригодиться в случае недоступности телеграма в РФ.
В файлах
get_cookies.py,parser_cls.pyиprompt_user_login.pyесть повторяющийся либо крайне похожий код для работы с Playwright, в том числе с его прокси. Предлагаю вынести весь функционал связанный с Playwright в отдельный класс, и при необходимости наследовать и переопределять методы из данного класса. Это упростит поддержку кода в будущем, а также упростит добавление новых фич, связанных с Playwright.