Инструкция по анализу
🛠️ ЛИКБЕЗ: ГОРЯЧИЕ КЛАВИШИ
- F12 (или
Ctrl+Shift+I) — DevTools. Твой радар. - Ctrl+U — Исходный код. То, что видит робот (без JS).
- Ctrl+Shift+M (внутри F12) — Мобильный режим.
- Ctrl+F — Поиск. Работает везде.
- F5 — Обновить страницу.
ЭТАП 0: УСТАНОВКА (MINDSET)
- Цель: Чистый JSON.
- Правило: Браузер (Selenium/Playwright) — это крайняя мера.
- Приоритет: API > Hydration > HTML > Браузер.
ЭТАП 1: РАЗВЕДКА БОЕМ (Reconnaissance)
Цель: Понять тип сайта и найти легкий путь, не копаясь в сети.
ШАГ 1. Проверка исходного кода (Static Check)
- Открой страницу. Нажми
Ctrl+U. - Жми
Ctrl+F, вбей цену товара или заголовок.- Нашел внутри HTML-тегов? (пример:
<div class="price">100</div>)- 👉 РЕШЕНИЕ: Это SSR. Используй ШАБЛОН №3 (Классика).
- Нашел внутри скрипта? (пример:
<script id="__NEXT_DATA__">...)- 👉 РЕШЕНИЕ: Это Hydration. Используй ШАБЛОН №2 (Хирург).
- Не нашел? (Пустота или
{{price}})- 👉 ВЫВОД: Это CSR. Данные грузятся динамически. Идем дальше.
- Нашел внутри HTML-тегов? (пример:
ШАГ 2. Мобильная проба (Mobile View)
- Нажми
F12. - Нажми
Ctrl+Shift+M(иконка телефона слева сверху в панели). - Выбери iPhone 12.
- 🔴 НАЖМИ F5 (ОБНОВИТЬ)! Без этого не сработает.
- Анализ: Сайт стал простым HTML? Капча пропала?
- 👉 РЕШЕНИЕ: Парсим мобильную версию через ШАБЛОН №3 или ищем API мобилки (ШАБЛОН №1).
ЭТАП 2: ПЕРЕХВАТ (Network Sniffing)
Цель: Найти скрытое API. Работаем в DevTools (F12).
ШАГ 1. Настройка Радара
- Открой вкладку Network.
- Поставь галочки:
- ✅ Preserve log (чтобы не терять запросы при редиректе).
- ✅ Disable cache (чтобы видеть свежие данные).
- Включи фильтр Fetch/XHR.
ШАГ 2. Охота на JSON
- Обнови страницу (F5) или кликни пагинацию.
- Смотри колонку
Name. Ищи запросы. - Кликай по строкам -> смотри вкладку Preview (справа).
- Видишь дерево
{ "items": [...] }с твоими данными? - 👉 РЕШЕНИЕ: Это Джекпот. Используй ШАБЛОН №1 (Чистый API).
- Важно: Сделай
Right Click -> Copy as cURL, чтобы вытащить заголовки.
- Видишь дерево
ШАГ 3. Проверка Вебсокетов
- Если в XHR пусто, а цифры на сайте бегут сами (биржи, ставки).
- Переключи фильтр на WS.
- Видишь поток данных?
- 👉 РЕШЕНИЕ: Используй ШАБЛОН №7 (Радист).
🛠️ СХЕМА DEVTOOLS (Где что искать):
[ NETWORK TAB ]
---------------------------------------------------------
| [x] Preserve log [x] Disable cache |
| Фильтры: [All] [Fetch/XHR] [JS] [WS] <-- ЖМИ СЮДА |
|-------------------------------------------------------|
| Name | Status | Type | Size | |
| api/products | 200 | json | 5kb | <-- КЛИК ЛКМ |
| logo.png | 200 | png | 2kb | |
|-------------------------------------------------------|
| [Headers] [PREVIEW] [Response] |
| ^^^^^^^ |
| Смотри JSON здесь! |
---------------------------------------------------------
ЭТАП 3: ОЦЕНКА ОБОРОНЫ (Если API найдено, но не работает)
Сценарий: В браузере JSON открывается, а Python получает 403.
- Диагноз: TLS Fingerprinting (Сервер видит, что ты скрипт, а не браузер).
- Действие:
- 👉 РЕШЕНИЕ: Используй ШАБЛОН №4 (Хамелеон). Библиотека
curl_cffiпритворится Хромом.
- 👉 РЕШЕНИЕ: Используй ШАБЛОН №4 (Хамелеон). Библиотека
ЭТАП 4: ТЯЖЕЛАЯ АРТИЛЛЕРИЯ (Когда ничего не помогло)
Сценарий: Данных нет в коде, API зашифровано, HTML пустой.
- Случай А: Просто сложный JS (SPA)
- Сайт тормозит, грузит контент кусками, но явной защиты (капчи) нет.
- 👉 РЕШЕНИЕ: Используй ШАБЛОН №5 (Танк / Playwright).
- Обязательно: Блокируй картинки (см. код шаблона).
- Случай Б: Агрессивная Защита
- Playwright получает бан. Видишь "Checking your browser" или галочку Turnstile.
- 👉 РЕШЕНИЕ: Используй ШАБЛОН №6 (Спецназ / DrissionPage).
- Случай В: Веб непробиваем
- Скачай мобильное приложение бренда.
- Поставь сниффер (Charles/Mitmproxy).
- Поймал JSON от приложения?
- 👉 РЕШЕНИЕ: Используй ШАБЛОН №8 (Черный ход).
🚀 СВОДНАЯ ТАБЛИЦА: КАКОЙ ШАБЛОН БРАТЬ?
| Что мы нашли? | Где нашли? | НОМЕР ШАБЛОНА |
|---|---|---|
| JSON с данными | Вкладка Network (XHR) | №1 (Чистый API) |
| JSON с данными | Исходный код (<script>) |
№2 (Хирург) |
| HTML с данными | Исходный код (<div>) |
№3 (Классика) |
| API (ошибка 403) | Network (но Python не может) | №4 (Хамелеон) |
| Ничего (JS) | Браузер рендерит | №5 (Танк/Playwright) |
| Капча / Бан | Браузер не пускает | №6 (Спецназ/Drission) |
| Поток данных | Вкладка Network (WS) | №7 (Радист) |
| API Приложения | Сниффер телефона | №8 (Черный ход) |
ЭТАП 6: ПРОДАКШН (Не будь джуном)
- Авторизация:
- Получил куки один раз -> Сохранил в файл -> Грузишь при старте.
- См. тему №13.
- Сохранение:
- Используй буфер. Пиши в
.jsonlпачками по 100 штук. - См. тему №14.
- Используй буфер. Пиши в
- Скорость:
- Используй очередь
asyncio.Queue. Продюсер ищет ссылки, Воркеры парсят. - См. тему №12.
- Используй очередь
- Валидация:
- Все данные прогоняй через
Pydantic. Никаких сырых словарей. - См. тему №11.
- Все данные прогоняй через