Задать вопрос
@domage

Почему после запроса RSS Хабр перестаёт принимать соединения с IP?

Коллеги, сталкивался ли кто-нибудь с похожим поведением защиты Хабра при чтении RSS?

Вплоть до начала этой недели, всё работало нормально.

Использую официальный RSS:
https://habr.com/ru/rss/articles/?limit=100

Запрос выполняется обычным HTTP-клиентом на Go со следующими заголовками:

User-Agent: BlogWatcher/1.0 (+https://github.com/Hyaxia/blogwatcher)
Accept: application/rss+xml, application/atom+xml, application/xml;q=0.9,
text/xml;q=0.8, */*;q=0.1

Наблюдаемое поведение:

1. С нового внешнего IP обычный curl к RSS Хабра работает и возвращает XML.
2. RSS-ридер выполняет один запрос к /ru/rss/articles/?limit=100.
3. После этого Хабр полностью перестаёт принимать соединения с данного IP.
4. Даже обычный curl больше не доходит до TLS:

Trying 178.248.237.68:443...
Failed to connect to habr.com port 443: Timeout was reached
HTTP status: 000
5. Бан держится как минимум 12 часов.

Не устанавливается даже TCP-соединение.

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

До запуска ридера, например, такой запрос работал:

curl https://habr.com/ru/rss/hubs/css/articles/all/

После запроса ридера перестают работать и этот RSS, и сам сайт с того же IP.

Что я делаю не так?
Есть ли сейчас специальные требования к User-Agent RSS-клиентов?
Может ли защита реагировать на TLS fingerprint стандартного Go HTTP-клиента?
Какой интервал обновления RSS считается допустимым?
  • Вопрос задан
  • 16 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Веб-разработчик Базовый
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Web-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
похоже на blackhole от анти-DDoS Хабра (у них Qrator), а не обычный rate limit — TCP-хендшейк вообще не проходит, а 429/403 так не выглядят. Вероятнее всего ловит TLS/HTTP2-отпечаток дефолтного Go http.Client, а не UA-строку — curl даёт другой fingerprint и потому не банится. Попробуй GODEBUG=http2client=0 и сними tcpdump на момент бана, для сравнения убери ?limit=100. Если стабильно ловит разные чистые IP — тащи в поддержку Хабра UTC-время, IP и дамп.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы