разработка 282 просмотров

Гайз, как обещал — рассказываю, как решил проблему с блокировкой АПИ Телеграм...

Гайз, как обещал — рассказываю, как решил проблему с блокировкой АПИ Телеграм...
Увеличить
Гайз, как обещал — рассказываю, как решил проблему с блокировкой АПИ Телеграмма на сервере 🔧

Дисклеймер: сразу скажу, что тут никакого рокет саенс не будет, это даже не единственный способ. Я выбрал его и он рабочий. Всё!

Итак, вводная: мой блог (blog.polar-dev.com) парсит канал через Telethon — тянет посты, медиа, пишет в базу. Сервер стоит в РФ, на FreeBSD. И вчера всё тихо сломалось — парсер перестал доставать новые посты 😐

Ясно-понятно, похоже, появились ограничения доступа к API Telegram с российских IP.
Для защиты граждан, конечно же 🫡

Первая мысль — поднять SOCKS5-туннель через SSH до зарубежного VPS. Telethon это умеет нативно.

Но меня напрягло, что постоянное соединение, которое надо держать и мониторить,
весь трафик (включая медиа) через туннель приведёт к просадке скорости. Ну, и это лишняя точка отказа

Решил, как по мне, проще:💡

Вынес сам парсер на зарубежный VPS. Теперь он парсит канал, скачивает фото/аудио, конвертит в WebP — и складывает всё в JSON + папку media/.

А на FreeBSD-сервере по крону запускается sync-скрипт:
1. SSH на VPS -> запускает парсер
2. rsync забирает posts.json + media/
3. Скрипт импорта пишет в MySQL

Получается, парсер работает там, где нет блокировок. Сервер забирает готовый результат. Никаких туннелей, никаких прокси в рантайме 🤫

Получился такой вот пайплайн:
VPS: Telegram API -> JSON + WebP
FreeBSD: rsync -> MySQL -> сайт

З.Ы. Заметьте, делая полностью законный сервис для использования гражданами РФ, разработчики вынуждены для этого переносить сервер из РФ. Т.е. буквально лишают возможности соблюдать закон о локализации персональных данных (152-ФЗ)🤯

И да, мой способ позволит сохранять данные юзеров (если собираете) на территории РФ 💪

В общем, в этом случае я vs «Контора Оптимистов» — 1:0 😉
#API #Telegram #Блокировки #DevOps #РКН

Понравился пост?

Обсуди его в Telegram-канале!

Обсуждение

Комментарии доступны через Telegram. Для участия в обсуждении нужен аккаунт Telegram.

Поделиться: Telegram

📢 в Telegram-канале!