Кратко — вы, скорее всего, не «делаете что‑то категорически неправильно», это поведение сервера/фаервола Хабра (или их 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) — тогда дам более конкретные шаги.