Cкрипт умеет периодически проверять наличие визовых слотов на сайте Almaviva и отправляет сообщения о наличии мест в Telegram.
- Я iOS-разработчик и в остальных языках программирования/средах разработки умею работать постольку поскольку.
- Решение разрабатывалось для себя с помощью ChatGPT, никакой оптимизации под различные платформы/браузеры не предусматривалось, важна была минимальная работоспособность, чтобы впоследствии при получении уведомления иметь возможность спокойно самостоятельно руками записаться в визовый центр.
- Если есть предложения по улучшению - пришлите, пожалуйста, PR или откройте Issue.
- Уважаемая Almaviva, я не планирую ничего зарабатывать на этом скрипте.
- Я просто хотел записаться в визовый центр для подачи на визу, но не хотел сидеть в профильных телеграм-каналах, на форуме Винского, руками заходить на сайт несколько раз в день, и особенно платить каким-то людям за доступ к информации, которая по идее должна быть открытой.
- У меня нет вопросов почему у вас сделано как сделано, но если вы вдруг это читаете, ради бога, ну сделайте хотя бы API доступности слотов публично доступным.
- Всё это сношение с вашим сайтом ради одного
true/falseвыглядит перебором, вы таким образом стимулируете продаживсякого говнаботов за деньги и какие-то люди (не вы) на этом зарабатывают. - Вам самим сделать официальный канал в телеграм с новостями по слотам стоит примерно ничего, но вы так хотя бы уравняете людей по шансам на запись.
- Если хотите, сделайте его платным, но это хотя бы будет официальный источник данных.
- Раз в указанный интервал (от 1 до 1 440 минут) скрипт запускает Google Chrome через CDP и проверяет наличие мест в визовом центре.
- Итог проверки отправляется в чат/канал Telegram, а так же виден в консоли при выполнении скрипта.
- Сайт визового центра сделан таким образом, что для проверки наличия мест своими руками нужно:
- Открыть сайт
- Пройти капчу от Cloudflare
- Авторизоваться, пройдя капчу от Google
- Открыть страницу с записью
- Ввести OTP-код из почты
- Выбрать город из списка
- Увидеть наличие мест
- Скрипт по сути делает то же самое, но за счет взаимодействия напрямую с сервером и того, что большинство проверок, кроме капчи от Cloudflare, ограничивают только взаимодействие на фронте, некоторые шаги исключаются, и путь выглядит следующим образом:
- Открывается сайт
- При необходимости автоматически проходится капча от CloudFlare через сервис 2Captcha
- Сессия капчи живет около 40 минут
- При необходимости происходит логин
- Авторизационная сессия живет 1 час
- Происходит прямой запрос на наличие мест
- Отправляется сообщение в Telegram
- Вызов API напрямую (вне контура браузера) блокируется CloudFlare
- Капча от CloudFlare распознает автоматизированные бразуеры (Selenium и другие)
- Единственный рабочий вариант, в котором капча от CloudFlare не блокирует доступ к сайту и есть возможность автоматизации - CDP
- CloudFlare на сайте настроен таким образом, что доступ вне России блокируется.
- Перед настройкой скрипта попробуйте открыть сайт Almaviva, и убедитесь, что он корректно открывается.
- Если сайт открылся с ошибкой, попробуйте подключиться к другой сети, либо используйте VPN с российским IP.
- В моем случае, сайт считал, что я не в РФ.
- Был арендован российский VPS на Aez'e - стоимость самого дешевого тарифа €4.94/мес. (есть оплата РФ картами)
- Доступ к нему был настроен через Amnezia
- Там же в Aez'e можно просто купить VPN, и сделать профиль с Российским IP-адресом - стоимость самого дешевого тарифа €1.9/мес. (есть оплата РФ картами)
- Python 3.13+
- Google Chrome
- В скрипте сделана завязка на локальный путь
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
- В скрипте сделана завязка на локальный путь
- Сервис 2Captcha
- Используется для автоматизированного решения капчи от CloudFlare.
- Необходим, так как взаимодействие с API Almaviva даже через браузер будет успешным только при наличии решенной капчи от CloudFlare.
- Платный, решение одной капчи стоит около $0.0029.
- Достаточно пополнить на $2-3, этого хватит примерно на месяц при условии проверки слотов каждую минуту для одного города.
- Можно пополнить криптой/картой, выпущенной вне РФ.
- Telegram
- Бот, от имени которого будет отправляться сообщение со статусом
- Канал/групповой чат, с добавленным в него ботом (для каналов - в качестве администратора)
- Инструкция по созданию бота и получению идентификатора доступна по сслыке
- Интервал проверки в минутах (целое число от 1 до 1440).
- Город, для которого будут отслеживаться слоты.
- E-mail аккаунта Almaviva.
- Пароль аккаунта Almaviva.
- Ключ доступа к 2Captcha.
- Токен Telegram-бота, от имени которого будут отправляться сообщения.
- Идентификатор чата/канала, куда бот будет присылать сообщения со статусом о наличии мест.
Примечание:
- После первого запуска переменные окружения сохраняются в
managers/env_config.json. - При повторном запуске скрипта есть возможность отредактировать переменные.
- Для мониторинга слотов в нескольких городах можно сделать несколько запусков скрипта с разными городами
- Для каждого из запусков стоит использовать разные учетные записи Almaviva
- Мне откровенно лень дорабатывать скрипт чтоб он мог смотреть наличие по нескольким городам
- Дополнительно, если сами попробуете руками в рамках пары минут прокликать все города на сайте, примерно на 5 городе наличие слотов уже не вернется, так как сервер вас заблокирует за слишком частые запросы
- Клонировать репозиторий
- Установить зависимости
schedulepychromerequests
- Запустить скрипт
- Скрипт будет выполняться бесконечно, пока вы сами его не остановите.
- Я делал запуск через PyCharm CE
- Так как раз в N минут происходит запуск и закрытие Chrome, выполнение скрипта может помешать обычной работе на устройстве
- Варианты решения:
- Бесплатный - Создать виртуальную машину, например, через UTM и делать запуск через нее
- Средней дороговизны (мой вариант) - Запустить скрипт на маке, которым никто больше не пользуется и выполнение скрипта на нем никому не помешает
- Люкс - Арендовать сервер Mac в облаке (например, в Selectel).
- В этом варианте я бы предложил задуматься о целесообразности данного мероприятия, так как аренда будет стоить равносильно покупке Б/У устройства с Авито и/или стоимости самой визы.
- Напоминаю, что в Таиланд даже не нужна виза, а в Южную Корею K-ETA оформляется за полчаса и 700₽ с российского UnionPay РСХБ.
- Для каждого из городов, скрипт создает профиль Google Chrome по пути
~/almaviva-chrome-profiles/city-{CITY_ID}/, после использования скрипта, не забудьте удалить эти профили.- Можно удалить через терминал командой
$ sudo rm -rf ~/almaviva-chrome-profiles
- Можно удалить через терминал командой
- API получения фактора наличия слотов -
/getDisponibilityi - Теперь думаю, это кто-то опечатался или специально так обозвал?
Если что-то не получилось, напишите мне в телеграм, контакт есть в профиле.
