timon_timonich (timon_timonich) wrote,
timon_timonich
timon_timonich

Categories:

ОТЧЁТ ПО ТЕЛЕГАБОТУ. САГА О СРАЖЕНИИ С ИНСТАГРАММОМ

Мой небольшой домашний проект, созданный на коленке в личных целях, немного вышел из под контроля. Почти относительно активных пользователей, а это прям ответственность! По славной традиции, раз в полгода подбиваем по боту статистику. Для тех, кто не в курсе напомним о чём собственно речь. Чуть более трех лет назад меня переклинило и я решил исследовать ботоделание для Telegram, так родился @AximoBot. Бот очень простой, мониторит аккаунты в социальных сетях и в случае нового поста присылает вам ссылку на него. Очень удобно, вся лента в едином месте, понимает тонну источников: Youtube, Instagram, VK, LiveJournal, RSS, Coub, Medium, Twitter, Twitch.





Самоизоляция не прошла бесследно, так что могу поделиться следующими новостями:
— Добавил поддержку Яндекс.Дзен и , прости меня господи, TikTok. С последними пришлось повозиться, так как хитрожопые разработчики наглухо прикрыли вменяемые способы получения данных, приходиться теперь прикидываться браузером.
— После месяца страданий реанимировал работу с instagram. Про данные злоключения интересующиеся могут найти пару абзацев со страданиями в конце поста
— Опять заработал Twitch, но его поломку судя по всему заметил ровно один человек, что мне про эту проблему и написал
— Мелкие фиксы, исправления и всё такое.

Минутка статистики:
— Всего пользователей: 151 824 (+216%), прошло дальше выбора языка: 12 804 (+68%), пользователей с хотя бы одной подписком 5 760 (+61%).
— Всего подписок 39 463 (+51%), из них активных 26 639(+137%)
— Получено ботом команд: 302 943 (+57%).
— Бот отправил ~15.1 млн нотификаций c начала года.

По цифрам рост примерно 2-3 раза. Бот никак не пиарится, не содержит рекламы и абсолютно бесплатен, есть VIP доступ, но это дело добровольное.

Теперь про страдания с Instagram, дальше будет интересно исключительно техногикам, да и то не всем.

Где-то месяц назад эти товарищи сделали финт ушами и заблокировал все запросы с серверных IP-адресов. То есть с телефона или с домашнего интернета заходи в инстаграмушку, со всех остальных адресов (ну например через прокси) извольте изучать сервис исключительно с залогиненных устройств. В случае прокси это вполне решаемо, но чтобы таскать данные для бота полная жопа. Можно конечно бегать за обновлениями авторизованным аккаунтом, только вот это грозит довольно оперативно блокировкой, так что этот вариант даже не рассматривался.

Что делать? Самое просто решение проксировать данные через домашний комп. Постоянный айпишник у меня есть, роутер эти трюки поддерживает, так что пришло время проверить идею. На NAS поставил проксю, на роутере настроил чтобы запросы приходящие на нужный порт и внешний айпишник пробрасывались на проксю, та тащит данные через домашний инет и отдает точно также во внешний мир. На эксперимент ушло минут 15, быстрая проверка показала, что данные с сервака тянутся и айпишник светится везде мой домашний. Решили проблему? Да как бы не так, думаю инстаграм бы довольно оперативно меня бы спалил и заблочил, в случае телефона это легко решается использованием бы мобильного инета, но во-первых это неудобно, во вторых с компа мне тоже доступ нужен для экспериментов.

Техника работает, но не устраивает использование домашней сети. Решение? Гонять данные через мобильный интернет, уж айпишники того же Билайна, МТС или Мегафона блочить не будут. В голове родилась схема: данные приходят на роутер, пробрасываются на железку с проксей, та в свою очередь на прием использует домашний интернет, а для выкачивания данных 4G-роутер к которому есть коннект через Wi-Fi. Пробуем различные вариации сетевых извращений с железками

— Беру NAS (удивляюсь что он умеет Wi-Fi), коннектим его к роутеру с симкой. Пока всё хорошо, дальше лезу в настройки установленной прокси и понимаю что через веб-морду настроить нельзя от слова ничего. Ок, действуем по старинке, коннектимся по ssh обнаруживаем что в качестве прокси используется squid и ручками приписываем, что для выкачки данных надо использовать сетевой интерфейс, что Wi-Fi. Пробую — не работает, myip.com радостно демонстриуют, что для получения данных используется локалка вместо мобильной связи. Грущу, читаю тонны документации, танцую с бубном, ничего не выходит. Сдаюсь.
— Вспоминаю что дома есть малинка, она же raspberry pi. Проворачиваю подобную схему, но с одним исключением, делаю wi-fi подключение приоритетнее проводного. Подобный трюк на NAS я провернуть не могу, хотя бы по причине того, что я с него фильмы смотрю и кучу данных качаю. Тест на самой малинке показывал, что айпишник теперь у нас мобильный, но есть беда — запросы извне роутером не пробрасываются, прокси не работает. Много гуглю, снова терплю фиаско, ухожу страдать
— Читаю доки по роутеру и обнаруживаю, что он умеет использовать подключение к отдельной Wi-Fi сети и использовать его как резервное. Появляется лучик надежды, несколько вариаций конфигураций и вуаля, враг — побежден. Делюсь схемой решения, вдруг кому понадобиться из интернета пролезть во внутренню сеть

Схема достаточно простая, но в некоторых моментах не очень очевидна

1. Коннектим роутер к мобильному, выставляем как резерный канал
2. Создаем профиль, где повышаем приоритет мобильного подключения надо локальным
3. Прописываем новый профиль на устройство, которое будет проксей
4. Настраиваем проброс нужных портов на нужную железку
5. Добавляем маршрутизацию для запросов с айпишника, с которого вы планируете заходить. Этот момент кстати для меня был совсем не очевиден и я потратил наверное день чтобы разобраться, какого фига при изменении приоритетов коннект у меня прокся перестает быть видна извне

Ловите скриншот, для тех кому буквы сложно даются.



Бот работает, инстаграм вернулся, всё довольны. На этом у меня всё, всем спасибо за внимание.

Facebook | Instagram | Vimeo | Youtube
Tags: разное
Subscribe

Posts from This Journal “разное” Tag

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 5 comments