Последние две недели что-то зачастили с проблемами — пришлось слегка попотеть, чтобы все исправить. Одна проблема касалась (и, возможно, до сих пор касается) только ру-версии сайта, а другая — глобальная.
Есть две версии сайта: для заграничных пользователей и для российских. Заграничная открывается только через Cloudflare, который заблокирован одной конторой, а российская — через местных хостеров.
В начале июня РКН решил начать фильтровать HTTPS-траффик на определенных наборах IP-адресов — под ограничения попали почти все хостинг провайдеры, возможно, кроме ВК Облака и Яндекс Облака. Наш сайт не использовал ни один из них, поэтому 5 июня начались проблемы с загрузкой части сайта: пользователи, зашедшие на любую страницу, не могли увидеть некоторые компоненты страницы и не могли отметить просмотренные серии, потому что все запросы к API блокировались провайдером по новым алгоритмам.
То есть пользователь зашел на страницу сериала (запрос 1), отправилось несколько запросов с фронта к API (запросы 2-3) — и все они заблокированы, потому что "слишком много" запросов к одному источнику может означать, что пользователь использует VPN. Контора из трех букв настолько хочет контролировать всю информацию, что закрыла глаза на любой collateral damage, из-за чего пострадало огромное количество сайтов, хостинг-провайдеров и малый бизнес.
В разных обсуждениях на просторах интернета предлагали включить HTTP/2 и использовать более старый протокол шифрования, но нам не помогло ни одно из этих условий (да и не хочется использовать менее быстрый и безопасный протокол).
Проблему решили так: проксируем траффик к API с сервера на Яндексе.
Последние дни нас запарсили боты (уже не первый раз). Если раньше это были боты Meta (Facebook) или кого-то из крупного американского бигтеха, обучающего LLM-ки, то в этот раз был кто-то неизвестный. С кучи серверов провайдера AS208677 Cloud Technologies LLC trading as Cloud.ru шло по 400 запросов в секунду на все страницы, что есть на сайте, и наш бэкенд не выдерживал и постоянно перезапускался.
Решили так: забанили по ASN все запросы от того провайдера, а потом перенесли самые тяжелые методы API с легаси бэкенда (на PHP) на "новый" (ему пару лет уже), написанный на Go. И серверу стало сильно легче, и для пользователей все стало сильно быстрее работать.






Комментарии