todo/Zapret2/find-site-domains.md
loop-uh ef60f63b50
Some checks failed
Published content check / validate (push) Failing after 4s
Zapret 2: переписаны profile, add-profile и find-domain-owner
profile: профиль выбирается для соединения, а не для каждого пакета; --payload и --out-range вынесены из фильтров выбора профиля во внутрипрофильные условия (по manual.md zapret2 они не участвуют в выборе, умолчание --payload=all, а не known). Убраны три аналогии, мета-callout и дубль FAQ из symptom-not-cause, «прямой запуск» описан без путаницы.
add-profile: раздел «нужен ли новый профиль», какие домены вписывать (точные поддомены), проверка порядка профилей, честная проверка через вкладку «Сеть» и лог вместо статуса «Zapret работает», оговорка про QUIC и GEO-ограничения.
find-domain-owner: раздел «ipset практичнее hostlist» заменён на «Подсети или домены» с правилом выбора; списки перечитываются без перезапуска; правки в ipset Amazon — через «Ваши записи»; форма на git.zapret.moe, а не GitHub; порядок TCP/UDP для сайтов и игр разделён.
Якоря: обновлены ссылки на переименованные заголовки, исправлены четыре давно битых якоря на zapret_not_working и payload.
2026-09-27 15:56:02 +03:00

167 lines
26 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date: 2026-09-27
tags:
- zapret
- zapret2
- howto
- troubleshooting
- devtools
- hostlist
aliases:
- Как найти домены сайта
- Какие домены добавить в Zapret
- Какие домены грузит сайт
- Как узнать домены сайта через F12
- Вкладка Сеть в браузере для Zapret
- Сайт открывается не полностью Zapret
- ERR_CONNECTION_RESET какой домен
- DevTools Network найти заблокированный домен
description: "Как через F12 и вкладку «Сеть» найти, какие домены сайта не грузятся, отличить блокировку DPI от ошибок браузера и собрать hostlist для своего профиля Zapret 2."
image: Zapret2/attachments/find-site-domains-header.webp
---
> [!mirror] Резервное зеркало
> Актуальная версия этой страницы — на основной вики: [wiki.zapret.moe/Zapret2/find-site-domains](https://wiki.zapret.moe/Zapret2/find-site-domains)
# 🔎 Как найти домены сайта через F12 (вкладка «Сеть») для своего профиля Zapret 2
![[find-site-domains-header.webp]]
> [!info] О чём заметка
> Как понять, **какие именно домены** вписать в свой [[profile|профиль]] [[Zapret2|Zapret 2]], когда сайт открывается не полностью или не открывается вовсе. Инструмент — встроенная в браузер панель разработчика (клавиша F12) и её вкладка «Сеть». Механика создания профиля и вписывания доменов в GUI — в [[add-profile]]; как по найденному домену узнать CDN и готовый профиль пресета — в [[find-domain-owner]].
> [!tip] TL;DR
> 1. Откройте проблемный сайт, нажмите **F12** → вкладка **«Сеть»**, включите «Сохранять журнал» и «Отключить кеш», обновите страницу через **Ctrl+F5**.
> 2. Ищите красные строки: статусы **«(ошибка)»**, **«(отменено)»** и долго висящие **«(ожидает)»** с размером `0 кБ`. Их домены — кандидаты в профиль.
> 3. Отсейте то, что к DPI не относится: `ERR_BLOCKED_BY_CLIENT` и «(заблокировано)» — это блокировщик рекламы или сам браузер, `ERR_NAME_NOT_RESOLVED` — проблема DNS.
> 4. Выпишите домены, которые падают, и внесите их в hostlist своего профиля по [[add-profile]]. Начинайте с точных поддоменов, а не с родительского домена: запись `example.com` захватывает все поддомены сразу и может сломать те, что работали.
> 5. После подбора стратегии снова откройте «Сеть» и убедитесь, что те же запросы получили статус `200`.
## Почему «сайт» — это десятки доменов
Когда вы вводите в адресной строке `soundcloud.com`, браузер загружает с этого адреса только каркас страницы. Всё остальное — скрипты, картинки, шрифты, данные для ленты, плеер, авторизация — страница затем догружает отдельными запросами, и часто с других доменов: с поддоменов (`api-v2.soundcloud.com`), со своей сети доставки контента (у SoundCloud статика приходит с отдельного домена `sndcdn.com`), со сторонних сервисов аналитики и рекламы. На одну обычную страницу приходится несколько десятков, а то и сотен запросов.
Для обхода блокировок это важно по простой причине. [[Zapret/about#Обход DPI (система ТСПУ)|ТСПУ]] (технические средства противодействия угрозам — оборудование DPI у провайдера) решает судьбу каждого соединения отдельно, по имени домена в нём. Поэтому главная страница может открыться, а запросы к API того же сайта — повиснуть. Со стороны это выглядит как «сайт вроде работает, но кнопки не нажимаются, лента пустая, видео не играет». Если вписать в профиль только домен из адресной строки, часть сайта так и останется за блокировкой.
Проще говоря: чтобы сайт заработал целиком, в [[Zapret/hostlist|hostlist]] профиля должны попасть все домены, запросы к которым режет DPI. Узнать их на глаз нельзя, а вкладка «Сеть» показывает их списком.
## Шаг 1. Откройте панель разработчика и вкладку «Сеть»
Панель разработчика (DevTools) есть в любом браузере на основе Chromium: Chrome, Edge, Яндекс Браузер, Opera, Brave. Открыть её можно клавишей **F12** или сочетанием **Ctrl+Shift+I**. Вверху панели — ряд вкладок: «Элементы», «Консоль», «Источники», **«Сеть»** и другие. Нужна «Сеть» (в английском интерфейсе — Network): она записывает каждый запрос, который страница отправляет, и показывает, чем он закончился.
Перед записью включите две галочки в верхней строке вкладки:
- **«Сохранять журнал»** — чтобы список не очищался при переходах и перезагрузках страницы;
- **«Отключить кеш»** — чтобы браузер заново скачивал всё из сети, а не показывал сохранённые копии. Иначе запрос к заблокированному домену может «успешно» прийти из кеша, и вы его не заметите.
Панель записывает запросы только пока открыта. Поэтому порядок такой: сначала открыть «Сеть», затем обновить страницу через **Ctrl+F5** (обновление с новым соединением, подробнее — в [[verify-strategy]]). Внизу панели появится счётчик вроде «Запросы: 134».
> [!note] Firefox
> В Firefox панель открывается так же, по F12, вкладка тоже называется «Сеть». Колонки и тексты статусов там другие, но принцип тот же: ищите запросы без ответа и с ошибками.
## Шаг 2. Прочитайте таблицу запросов
Каждая строка таблицы — один запрос. Для поиска доменов хватит пяти колонок:
| Колонка | Что в ней | На что смотреть |
|---|---|---|
| **URL** (Имя) | Адрес запроса | Домен — часть между `https://` и следующим `/` |
| **Статус** | Код ответа сервера или причина неудачи | Числа `200`, `204`, `304` — всё дошло; текст в скобках — ответа не было |
| **Тип** | Что запрашивалось: документ, скрипт (`script`), данные (`xhr`, `fetch`), картинка | Больше всего говорят упавшие `document` и `xhr`/`fetch`: без них страница пустая |
| **Размер** | Сколько байт пришло | `0,0 кБ` у упавшего запроса — сервер не ответил ничего |
| **Время** | Сколько длился запрос | Круглые большие числа (`10,00 с`) — запрос висел, пока его не оборвали |
Чтобы видеть домены отдельно от длинных адресов, щёлкните правой кнопкой по заголовку любой колонки и включите колонку **«Домен»**, а заодно **«Удалённый адрес»** — в ней IP-адрес сервера, который пригодится в [[find-domain-owner]]. По заголовку «Домен» таблицу можно отсортировать, и запросы к одному домену встанут рядом.
### Какие статусы означают блокировку
Статус в скобках значит, что нормального ответа сервера не было, и браузер описывает, что случилось вместо него. Точную причину видно в **«Консоли»** (соседняя вкладка): для каждого упавшего запроса там есть красная строка вида `GET https://… net::ERR_CONNECTION_RESET`. Та же ошибка появляется во всплывающей подсказке, если навести курсор на статус.
| Что видно | Что это обычно значит | Помогает ли профиль Zapret |
|---|---|---|
| **«(ошибка)»** + `ERR_CONNECTION_RESET`, `ERR_CONNECTION_CLOSED`, `ERR_SSL_PROTOCOL_ERROR` | Соединение оборвали посреди установки или обмена данными. Типичная картина вмешательства DPI | Да, это основной кандидат в профиль |
| **«(ошибка)»** + `ERR_TIMED_OUT`, `ERR_CONNECTION_TIMED_OUT` | Ответа не пришло вовсе: пакеты теряются по дороге | Часто да; если не помогает ни одна стратегия, возможна блокировка по IP |
| **«(отменено)»** с временем около 10–30 с и размером `0 кБ` | Запрос висел без ответа, и скрипт сайта сам его оборвал по таймауту | Да, это та же «тихая» блокировка, только оборвал её сайт, а не браузер |
| **«(ожидает)»**, который не заканчивается | Запрос ещё не получил ответа | Смотрите по итогу: если так и не завершился, считайте его упавшим |
| **«(заблокировано…)»**, `ERR_BLOCKED_BY_CLIENT` | Запрос не выпустил сам браузер: блокировщик рекламы, расширение или политика сайта | Нет. К провайдеру отношения не имеет |
| `ERR_NAME_NOT_RESOLVED` | Домен не удалось перевести в IP-адрес (не сработал DNS) | Нет. Это проблема DNS, стратегия обхода DPI её не решит |
| Число `403`, `451` или переадресация на страницу-заглушку | Сервер ответил, но отказал: сайт закрылся от региона сам, или провайдер подставил свою заглушку | `403` от самого сайта — нет, см. [[Zapret/hosts\|GEO-ограничения и файл hosts]]; заглушка провайдера — да |
> [!warning] Расшифровка статусов — ориентир, а не диагноз
> Один и тот же текст ошибки бывает и при блокировке, и при обычной неполадке сервера или вашей сети. Надёжный признак DPI — когда запросы к домену падают при включённом Zapret-профиле со «слабой» стратегией и проходят при подобранной. Поэтому таблица выше подсказывает, какие домены проверять первыми, а окончательный ответ даёт только перебор стратегий.
Строки вида `data:image/…` и строки с пометкой «(кеш памяти)» в размере — это данные, которые браузер взял у себя, без обращения к сети. Их можно не рассматривать.
## Пример: SoundCloud открывается, но лента пустая
Типичный случай, сентябрь 2026. Главная страница `soundcloud.com` отрисовалась: баннер, поиск, кнопки на месте. Но ниже заголовка «Hear what's trending» вместо ленты надпись «Sorry, something went wrong.». Во вкладке «Сеть» видна причина:
![[find-site-domains-soundcloud-network-2026-09.png]]
Что можно прочитать в таблице справа:
- **Почти все красные строки ведут на один домен — `api-v2.soundcloud.com`.** Именно оттуда страница берёт данные для ленты, поэтому лента и не появилась.
- **Статус «(отменено)», размер `0,0 кБ`, время ровно `10,00 с`.** Запросы висели без единого байта ответа, и через 10 секунд скрипт сайта их оборвал. Круглая цифра — признак таймаута, заданного самим сайтом, а не сбоя браузера.
- **Статус «(ошибка)» с временем от 0,5 до 8 секунд** на том же домене — соединения, которые оборвались раньше таймаута.
- **Строки «(ожидает)» с инициатором «Предварительная проверка»** — служебные запросы-разрешения (preflight), которые браузер отправляет перед основными запросами к API. Они висят по той же причине.
- **Внизу несколько запросов к тому же `api-v2.soundcloud.com` со статусом `200`.** Домен не заблокирован намертво: часть соединений проходит. Такая картина больше похожа на вмешательство DPI, чем на недоступность сервера, а значит, подобранная стратегия, скорее всего, поможет.
- **`dwt.soundcloud.com` отвечает `200` за 268 мс** — этот поддомен работает.
- **Строки «(заблокировано)» с типом `ping`** — запросы статистики, которые не выпустил браузер или расширение. В профиль их добавлять не нужно.
Итог: для SoundCloud начинать стоит с одной строки `api-v2.soundcloud.com` — именно этот поддомен падает, а `dwt.soundcloud.com` и главная страница работают и без профиля. Если бы красными были и запросы к `sndcdn.com` (картинки, скрипты, звук), его понадобилось бы добавить отдельно: это другой домен. Как быть с поддоменами в целом — в следующем шаге.
## Шаг 3. Соберите список доменов
Когда красные строки найдены, превратите их в список для профиля:
- [ ] Выпишите домены всех упавших запросов типа `document`, `xhr`, `fetch`, `script` и медиа. Упавшие картинки второстепенны, но если их много с одного домена, добавьте и его.
- [ ] Вписывайте точные поддомены, которые падают (`api-v2.example.com`), а не родительский домен целиком. Подробнее — ниже, в «Поддомены: начинайте с малого».
- [ ] Вычеркните домены из строк «(заблокировано…)» и `ERR_BLOCKED_BY_CLIENT`, а также чужие счётчики и рекламу (`google-analytics.com`, `doubleclick.net` и подобные), если без них сайт работает.
- [ ] Отдельно пройдите действия, которые не работают: вход в аккаунт, воспроизведение видео, загрузку файла. Перед каждым очистите журнал кнопкой ⊘ в панели, чтобы видеть только запросы этого действия. Авторизация и видео часто живут на своих доменах.
### Поддомены: начинайте с малого
Hostlist в Zapret [[Zapret/hostlist|сам применяется к поддоменам]]: строка `example.com` включает в профиль и `www.example.com`, и `api-v2.example.com`, и любой другой поддомен. Это удобно, но опасно. Поддомены одного сайта нередко живут на разных серверах и в разных сетях доставки контента, и DPI может обращаться с ними по-разному. Стратегия, которая пробивает `api-v2.example.com`, способна сломать `www.example.com`, который до этого открывался без всякого обхода, потому что профиль начнёт вмешиваться и в его соединения.
Поэтому двигайтесь от меньшего к большему:
1. Впишите только те поддомены, запросы к которым падают, — по одному на строку.
2. Проверьте сайт по вкладке «Сеть» (шаг 4). Если всё заработало, на этом остановитесь.
3. Если падают всё новые поддомены того же сайта и все они лечатся той же стратегией, тогда замените их одной строкой с родительским доменом и снова проверьте, что не сломалось ничего из работавшего.
4. Если после расширения что-то перестало грузиться, верните точные поддомены. Поддомену, которому нужна другая стратегия, заведите отдельный профиль: одно соединение обрабатывает только один профиль, см. [[profile-independence]].
Удобный приём для длинного журнала: в поле **«Фильтр»** можно написать `domain:api-v2.soundcloud.com`, чтобы оставить только запросы к одному домену, или `-domain:soundcloud.com`, чтобы скрыть уже разобранный домен и посмотреть, что осталось.
Готовый список вписывается в hostlist своего профиля: пошагово, со скриншотами GUI, это разобрано в [[add-profile#Шаг 3. Добавьте домены в профиль|«Как добавить свой профиль», шаг 3]].
> [!tip] Прежде чем заводить новый профиль, проверьте, чей это сервер
> Колонка «Удалённый адрес» даёт IP каждого домена. Если сайт живёт на крупной сети доставки контента (Cloudflare, Akamai, Amazon), в пресете уже может быть профиль под эту сеть, и тогда стратегию нужно подбирать в нём, а не плодить свой. Как по IP узнать сеть и найти её профиль — в [[find-domain-owner]].
## Шаг 4. Проверьте результат в той же вкладке
После того как профиль создан и стратегия выбрана, откройте сайт заново: включённые «Сохранять журнал» и «Отключить кеш», очистка журнала, **Ctrl+F5**. Если стратегия подошла, запросы к тем же доменам получат статус `200` (или `204`, `304`), а в колонке «Время» вместо `10,00 с` появятся сотни миллисекунд. Если красные строки остались на тех же доменах — стратегия не пробивает их, переходите к следующей. Если красным стал новый домен — допишите его в список и повторите.
Такая проверка честнее, чем «вроде открылось»: страница может отрисоваться из кеша или по уже открытому соединению, а вкладка «Сеть» показывает каждый запрос. Подробно о ложных успехах при проверке — в [[verify-strategy]]; о том, почему «не работает» почти всегда значит «стратегия устарела», а не «программа сломалась», — в [[symptom-not-cause]].
## Ловушки и оговорки
- **Не всё красное — блокировка.** Блокировщик рекламы, антивирус с веб-защитой и расширения приватности режут запросы сами, и в «Сети» это тоже выглядит как ошибка. Если сомневаетесь, откройте сайт в окне инкогнито без расширений и сравните.
- **Список доменов со временем меняется.** Сайты переезжают на другие домены и сети доставки контента. Если профиль перестал помогать, пройдите вкладку «Сеть» заново.
- **Не для игр и приложений.** Вкладка «Сеть» видит только то, что делает страница в браузере. Для игр, клиентов и голосовых звонков нужен перехват трафика всей системы: [[find-game-strategy]] (TCPView) и [[Zapret/Создание своей категории|создание своей категории]] (Wireshark).
- **Hostlist видит только трафик с именем домена.** Если сайт ходит на голые IP-адреса или по UDP (например, QUIC), домена в соединении может не оказаться, и тогда нужен [[Zapret/ipset|ipset]] с адресами, а не hostlist. Разница разобрана в [[find-domain-owner#Подсети или домены: что выбрать для профиля|find-domain-owner]].
## 📚 См. также
- [[add-profile|Как добавить свой профиль]] — куда в GUI вписать найденные домены и как включить профиль
- [[find-domain-owner|Как узнать CDN домена]] — что делать с IP из колонки «Удалённый адрес» и как найти готовый профиль сети
- [[find-game-strategy|Стратегия для игры]] — тот же подход для игр, где браузерной панели нет
- [[Zapret/hostlist|hostlist]] · [[Zapret/ipset|ipset]] — списки доменов и IP-адресов профиля
- [[verify-strategy|Как проверить, заработала ли стратегия]] — ловушки F5 и автоподбора
- [[profile-independence|Одно соединение — один профиль]] — почему домен должен попасть ровно в один подходящий профиль
- [[Zapret2|Zapret 2: обзор раздела]] — карта всех заметок о настройке
- 🔗 [Документация Chrome DevTools о вкладке Network](https://developer.chrome.com/docs/devtools/network/reference) — все колонки, фильтры и статусы (на английском)
---
> [!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ
> При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование доступно в Forgejo: [исходник этой заметки](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main/Zapret2/find-site-domains.md) · [скачать весь репозиторий одним zip-архивом](https://git.zapret.moe/zapretdiscordyoutube/todo/archive/main.zip).