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

Коллеги, сталкивался ли кто‑нибудь с похожим поведением защитных механизмов Хабра при чтении RSS?<br/><br/>До начала этой недели всё работало нормально.<br/><br/>Использую официальный RSS: <br/> <a href="https://habr.com/ru/rss/articles/?limit=100" rel="nofollow">https://habr.com/ru/rss/articles/?limit=100</a><br/><br/>Запрос выполняется обычным HTTP‑клиентом на Go с заголовками:<br/><br/>User-Agent: BlogWatcher/1.0 (+ <a href="https://github.com/Hyaxia/blogwatcher" rel="nofollow">https://github.com/Hyaxia/blogwatcher</a>)<br/>Accept: application/rss+xml, application/atom+xml, application/xml;q=0.9, text/xml;q=0.8, */*;q=0.1<br/><br/>Наблюдаемое поведение:<br/><br/>1. С нового внешнего IP обычный curl к RSS Хабра возвращает XML.<br/>2. RSS‑ридер выполняет один запрос к /ru/rss/articles/?limit=100.<br/>3. Сразу после этого Хабр перестаёт принимать соединения с этого IP — даже curl больше не доходит до TLS:<br/><br/>Trying 178.248.237.68:443...<br/>Failed to connect to habr.com port 443: Timeout was reached<br/>HTTP status: 000<br/><br/>4. Блокировка держится минимум ~12 часов; TCP‑соединение установить невозможно.<br/><br/>Запрос на чистом узле был сделан один раз, без повторов; поведение воспроизводится на двух независимых узлах с разными публичными IP.<br/><br/>До запуска ридера аналогичный запрос работал, например:<br/><br/>curl <a href="https://habr.com/ru/rss/hubs/css/articles/all/" rel="nofollow">https://habr.com/ru/rss/hubs/css/articles/all/</a><br/><br/>После выполнения запроса ридера оба RSS и сам сайт перестают быть доступными с того же IP.<br/><br/>Что я делаю не так?
  • 16 июля 2026 г. 22:01
Ответы на вопрос 5
Кратко — вы, скорее всего, не «делаете что‑то категорически неправильно», это поведение сервера/фаервола Хабра (или их CDN/анти‑DDoS) — он пометил ваш IP как подозрительный и начал отбрасывать соединения на сетевом уровне. Блокировка на уровне TCP (timeout на установку соединения) говорит именно об этом — это не «ошибка в XML» и не «ошибка Go‑клиента», а сетевой фильтр/фаервол.

Возможные причины
- Анти‑бот/анти‑скрейп защита (WAF, rate limiter, модуль защиты): один необычный запрос мог совпасть с правилами (User‑Agent, Accept, параметр limit=100) и система автоматически поставила временный бан.
- IP‑репутация / адреса облака/хостера: многие площадки автоматически блокируют диапазоны хостеров/VPS или IP с плохой репутацией.
- Провайдер/анти‑DDoS (Cloudflare/Incapsula и т.п.) применил фильтр на уровне сети — из‑за подозрительной нетипичной активности с этого IP.
- Fail2ban / автоматическая защита на самом хосте — правило могло сработать даже на один «странный» запрос, если совпало с сигнатурой.
- NAT/Shared IP: если ваш внешний IP используется несколькими машинами, суммарная активность могла выглядеть как атака.

Что проверить (диагностика)
1. Повторите запрос curl -v с того же IP и посмотрите, что возвращает (если TCP вообще не устанавливается, curl покажет timeout).  
2. traceroute / mtr до habr.com — где пропадают пакеты?  
3. nmap -Pn -p443 habr.com — порт закрыт/фильтруется?  
4. tcpdump или pcaps на клиенте во время попытки — видны ли SYN/ACK? Если нет — значит SYN теряются до сервера.  
5. DNS: на какой IP резолвится habr.com у вас? Возможно, CDN возвращает разные IP.  
6. Попробуйте с того же IP зайти по HTTP (если поддерживают) или на другой домен habr.com (www/без www).  
7. Попробуйте поменять User‑Agent на curl/браузер и/или уменьшить limit (limit=10) — изменится ли поведение?  
8. Проверьте whois/blacklist вашего IP/диапазона — может быть известная блокировка.

Что делать (рекомендации)
- Свяжитесь с техподдержкой Хабра: пришлите время(UTC), ваш публичный IP, пример запроса (полные HTTP‑заголовки) и вывод curl -v — попросите проверить логи и снять блокировку или объяснить причину. Без этого они вряд ли разблокируют вас.  
- Если нужно читать RSS регулярно:
  - Добавьте разумные задержки и кэширование, не запрашивайте очень большие лимиты часто.  
  - Укажите в User‑Agent корректную контактную информацию (вы уже это делаете) и добавьте Header Retry‑After/If‑Modified‑Since, ETag — уважайте кеширование.  
  - Не делайте параллельных/агрессивных запросов с одного IP.  
- Как временный обход: используйте другой источник (Feedly, публичный прокси или другой IP/провайдер/резидентный прокси), но лучше сначала согласовать с Хабром.  
- Если вы управляете инфраструктурой — убедитесь, что с вашего IP не идёт постороннего трафика (компрометированная машина, утечка), и проверьте с провайдером, не ставят ли они NAT/фильтрацию.

Почему блок мог произойти после «одного» запроса
- Срабатывание сигнатуры: некоторые WAF настроены агрессивно (на основании User‑Agent, Accept‑заголовков или URL-параметров типа limit).  
- История IP: ваш IP мог уже попасть в список и при первом подозрительном действии включился автоматический блок.  
- Shared IP: другие пользователи того же IP раньше создали «репутацию».

Если хотите, помогу подготовить:
- точный набор команд для диагностики (curl/traceroute/tcpdump) и что в них смотреть;  
- пример письма в поддержку Хабра (с шаблоном, какие данные приложить).

Сообщите результаты простых проверок (результаты curl -v, traceroute, к какому IP резолвится habr.com и ваш внешний IP) — тогда дам более конкретные шаги.
похоже на 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 и дамп.
Не логичней ли задать этот вопрос <a href="https://habr.com/ru/feedback/" rel="nofollow">техподдержке Хабра</a> ?
сделай TLS отпечаток хрома или фаерфокса, вместо чистого GO <br/> эт РКНка запросто может быть
Привет! <br/> Вообще RSS-запросы блочить не должно, будем разбираться, если в саппорте не хватит данных из вашего обращения – запросим ещё дополнительно
Похожие вопросы