
Скрепите веб простым способом
SCRAPPER — это не скрапер, это НАБЛЮДАТЕЛЬ СЕССИЙ, который захватывает данные вашего реального браузера для использования в любом инструменте автоматизации.
Построен на фреймворке BertUI React
GitHub: BunElysiaReact/SCRAPY
Никаких доменов. Никакого облака. Всё локально. Всё ваше.

Каждый инструмент веб-автоматизации — Puppeteer, Playwright, Selenium, даже curl — сталкивается с одними и теми же трудностями:
Настоящая проблема: Все эти инструменты пытаются имитировать человека. Но они лишь гадают, как выглядит настоящий человек.
SCRAPPER не занимается скрапингом. Он даёт вам РЕАЛЬНЫЕ данные, НЕОБХОДИМЫЕ для успешного скрапинга.
ВЫ SCRAPPER
│ │
├── Открываете Brave/Chrome/Firefox с расширением ──────►│
│ │
├── Входите на сайты, которые хотите автоматизировать ──────►│ захватывает:
│ │ • Куки
├── Обычно просматриваете, нажимаете кнопки ────────────────►│ • Токены
│ │ • Отпечаток
└── Завершаете просмотр ─────────────────────────────────►│ • API-запросы
│ • DOM-структуру
ВАШ СКРИПТ ──── GET /api/v1/session/all ────► API SCRAPPER (localhost:8080)
◄── { cookies, tokens, fingerprint } ────────────────────────┘
│
▼
Puppeteer / Playwright / Selenium / Python requests / curl
│
▼
✅ Авторизованные запросы с ВАШЕЙ реальной сессией

SCRAPPER Extension

Register Extension

Скрипт выше использовал SCRAPPER для захвата реальной сессии claude.ai, а затем отправлял сообщения напрямую через API — никакого кода для входа, никакого Puppeteer, никакой автоматизации браузера.
📦 Данные сессии
├── 🍪 Куки (включая HttpOnly, Secure, все домены)
├── 💾 localStorage и sessionStorage
├── 🔑 Токены аутентификации (Bearer, JWT, CSRF, кастомные)
└── 📨 Все HTTP-заголовки
🖥️ Отпечаток браузера
├── 📱 User Agent
├── 🖼️ Разрешение экрана и глубина цвета
├── 🌍 Настройки часового пояса и языка
└── 📨 Полный набор заголовков (Accept, Accept-Language, и т.д.)
📡 Сетевой трафик
├── 📤 Все HTTP-запросы (URL, методы, заголовки, POST-данные)
├── 📥 Все HTTP-ответы (статус, заголовки, тела)
└── 🔄 WebSocket-фреймы
🌳 DOM-состояние
├── 📄 DOM-снимки
├── 🎯 Тестирование селекторов вживую
└── 🗺️ DOM-карты (все теги, классы, ID)
После захвата SCRAPPER предоставляет все данные через простой REST API по адресу http://localhost:8080.
curl -fsSL https://raw.githubusercontent.com/BunElysiaReact/SCRAPY/main/install.sh | bash
# Шаг 1 — Загрузите расширение в Brave:
# brave://extensions → Включить режим разработчика → Загрузить распакованное
# → выберите: ~/.scrapper/extension/brave/
# Шаг 2 — Зарегистрируйте ID расширения
scrapper-register-ext ID_ВАШЕГО_РАСШИРЕНИЯ
# Шаг 3 — Запустите SCRAPPER
scrapper-start
# Шаг 4 — Откройте панель управления
# http://localhost:8080
# Клонируйте репозиторий
git clone https://github.com/BunElysiaReact/SCRAPY.git ~/scrapper
cd ~/scrapper
# Соберите C-native host
gcc -O2 -o linux/c_core/native_host/debug_host linux/c_core/native_host/debug_host.c -lpthread
# Соберите движок селекторов на Rust
cd linux/rust_finder && cargo build --release && cd ../..
# Запустите API-сервер
cd linux/python_api && python3 api.py
Откройте http://localhost:8080 → Панель управления готова.
irm https://raw.githubusercontent.com/BunElysiaReact/SCRAPY/main/install.ps1 | iex
⚠️ Запустите PowerShell от имени администратора, чтобы регистрация native messaging работала корректно.
%USERPROFILE%\.scrapper\
├── bin\
│ ├── debug_host.exe ← C-хост native messaging
│ ├── scraper_cli.exe ← CLI-клиент
│ ├── rust_finder.exe ← Быстрый движок HTML-селекторов
│ ├── scrapper-start.bat ← Запустить всё
│ └── scrapper-stop.bat ← Остановить всё
├── data\ ← Все захваченные данные сессий
├── logs\ ← Логи хоста
├── python_api\
│ └── api.py ← REST API-сервер
├── extension\
│ ├── brave\ ← Загрузить в Brave / Chrome / Edge
│ └── firefox\ ← Загрузить в Firefox
└── ui\scrapperui\ ← Исходный код панели управления
brave://extensions или chrome://extensions~/.scrapper/extension/brave/scrapper-register-ext ВАШ_IDТо же, что и Brave/Chrome — Edge основан на Chromium, используйте папку extension/brave/.
about:debugging → Этот Firefox~/.scrapper/extension/firefox/manifest.json⚠️ Firefox захватывает куки, заголовки, localStorage — но не тела запросов на уровне CDP.
from curl_cffi import requests
API = "http://localhost:8080"
domain = "example.com"
cookies_raw = requests.get(f"{API}/api/v1/session/cookies?domain={domain}").json()
fp = requests.get(f"{API}/api/v1/fingerprint?domain={domain}").json()
session = requests.Session(impersonate="chrome120")
for c in cookies_raw:
session.cookies.set(c["name"], c["value"], domain=c.get("domain", domain).lstrip("."))
session.headers.update({"User-Agent": fp.get("userAgent", "")})
response = session.get(f"https://{domain}/api/data")
print(response.json())
import requests
session_data = requests.get('http://localhost:8080/api/v1/session/all').json()
s = requests.Session()
s.cookies.update({c['name']: c['value'] for c in session_data['cookies']})
s.headers.update({'User-Agent': session_data['fingerprint']['userAgent']})
response = s.get('https://api.example.com/data')
source <(curl -s http://localhost:8080/api/v1/export/env)
curl -X POST "https://api.example.com/upload" \
-H "Authorization: Bearer $SCRAPPER_BEARER_TOKEN" \
-b "$SCRAPPER_COOKIES" \
-F "[email protected]"
import requests
from playwright.async_api import async_playwright
session = requests.get('http://localhost:8080/api/v1/session/all').json()
async with async_playwright() as p:
context = await p.chromium.launch_persistent_context(
user_data_dir="./profile",
user_agent=session['fingerprint']['userAgent'],
)
await context.add_cookies(session['cookies'])
page = await context.new_page()
await page.goto('https://example.com')
const session = await fetch('http://localhost:8080/api/v1/session/all').then(r => r.json());
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setCookie(...session.cookies);
await page.setUserAgent(session.fingerprint.userAgent);
await page.goto('https://example.com/dashboard');
SCRAPPER Live Dashboard
Откройте http://localhost:8080:
# Экспорт последних данных сессии
curl -s "http://localhost:8080/api/v1/bulk/all?format=jsonl" > session.jsonl
# Использование в вашем скрапере
python3 my-scraper.py --session session.jsonl
# session_refresh.py — Еженедельный конвейер обновления сессий
import requests, schedule, time
def refresh_session():
notify_user("Пожалуйста, войдите на целевые сайты в вашем браузере")
time.sleep(300) # 5 минут для просмотра пользователем
data = requests.get('http://localhost:8080/api/v1/bulk/all?format=json').json()
with open(f'session_{int(time.time())}.json', 'w') as f:
import json; json.dump(data, f)
schedule.every().monday.at("09:00").do(refresh_session)
while True:
schedule.run_pending()
time.sleep(60)
SCRAPPER by BertUI — Наблюдатель сессий для веб-автоматизации
🔍 Следит за вашим браузером, чтобы вам не пришлось этого делать
⭐ Поставьте звезду репозиторию, если SCRAPPER помог вам — это поможет другим найти его!
| Проблема | Почему это сложно |
|---|
| Аутентификация | Ручное написание скриптов входа для каждого сайта — утомительно и ненадёжно |
| Состояние сессии | Куки истекают, токены ротируются, localStorage очищается |
| Обратная разработка | Часы, проведённые в DevTools за изучением API-паттернов |
| Обнаружение ботов | TLS-отпечатки, энтропия браузера, Cloudflare, hCaptcha |
| Сложность настройки | Борьба с headless-браузерами, прокси и stealth-плагинами |
| SCRAPPER — ЭТО... | SCRAPPER — НЕ... |
|---|
| 🔍 Наблюдатель сессий, который следит за ВАШИМ реальным браузером | ❌ Замена Puppeteer/Playwright/Selenium |
| 💾 Инструмент захвата данных, сохраняющий вашу реальную сессию | ❌ Инструмент, который самостоятельно парсит сайты |
| 📡 Локальный API-сервер, отдающий захваченные данные | ❌ Хостинг-сервис или облачная платформа |
| 🧠 Помощник обратной разработки, раскрывающий скрытые API | ❌ Волшебная кнопка «спарсить всё» |
| 🎯 Визуальный отладчик для понимания структуры сайта | ❌ Конструктор автоматизации без кода |
| Преимущество | Почему это важно |
|---|
| Обход продвинутого обнаружения ботов | Использует curl_cffi, чтобы имитировать TLS-отпечаток реального браузера (например, Chrome 120) — не помечается как автоматизированный |
| 97% успеха | Нацелен на внутренние API-маршруты, а не на визуальный интерфейс — устойчив к изменениям CSS, перемещающимся кнопкам или изменению макета |
| Низкое потребление ресурсов | ~20 МБ ОЗУ против 500+ МБ у Puppeteer/Selenium. Не запускает движок браузера |
| Невидимая аутентификация | Использует вашу существующую сессию, подтверждённую человеком — никакого процесса входа, никаких CAPTCHA |
| Синхронизация с реальным браузером | Сообщения/действия из скриптов отображаются на реальной вкладке браузера после обновления |
| Языковая независимость | API сессии работает с Python, Go, Rust, Node, curl — с чем угодно, что может делать HTTP-запросы |
| Недостаток | Что это означает |
|---|
| Хрупкая продолжительность сессии | Полностью зависит от активной сессии браузера — завершается, если вы выйдете |
| Зависимость от внутренних API | Использует недокументированные конечные точки, которые могут измениться без предупреждения |
| Требует инфраструктуры установки | Не самостоятелен — необходимо одновременное выполнение native host + расширение браузера |
| Риск для учётной записи | Использует вашу реальную личность. Агрессивное ограничение частоты запросов может привести к блокировке настоящей учётной записи |
| Порог входа | Необходимо читать сетевой трафик, чтобы понять правильные полезные нагрузки API |
| Привязка к одному устройству | device-id привязан к одной захваченной сессии — нельзя легко перенести на другую машину |
| Конечная точка | Описание |
|---|
GET /api/v1/session/cookies?domain=example.com | Все куки для домена |
GET /api/v1/session/localstorage?domain=example.com | Данные localStorage |
GET /api/v1/session/all | Полный дамп сессии |
GET /api/v1/fingerprint | Отпечаток браузера |
GET /api/v1/tokens/all | Все извлечённые токены |
GET /api/v1/requests/recent?limit=50 | Недавние сетевые запросы |
GET /api/v1/dom/snapshot?url=example.com | DOM-снимок |
GET /api/v1/export/env | Формат переменных окружения |
GET /api/v1/bulk/all?format=[json|jsonl|har|csv|txt] | Всё в нужном формате |
| Вкладка | Что она делает |
|---|
| Live | Поток всех захваченных сетевых событий в реальном времени |
| Bodies | Тела HTTP-ответов — JSON, HTML, SVG, изображения, с предпросмотром |
| Responses | Все HTTP-ответы по доменам, фильтруемые по флагам |
| Intel | Сводка по домену — токены, куки, конечные точки, DOM-карта |
| Tokens | Bearer-токены, токены задач, куки аутентификации, curl-фрагменты |
| Endpoints | Все обнаруженные конечные точки API с кнопкой «Копировать для LLM» |
| DOM Map | Полное дерево тегов/классов/ID — нажмите на любой элемент для авто-скрапинга |
| Find | Тестирование CSS-селекторов на реальном отрендеренном HTML |
| Nav | Навигация + отслеживание вкладок, дамп куков, захват HTML |
| Queue | Пакетная обработка списков URL с настраиваемыми задержками |
| Область | Что нужно |
|---|
| Тестирование | Попробуйте SCRAPPER на разных сайтах, сообщайте об ошибках |
| Firefox | Помогите улучшить обходные пути для CDP в расширении Firefox |
| Windows | Протестируйте граничные случаи установщика Windows |
| Документация | Напишите учебные пособия для конкретных сайтов или сценариев использования |
| Код | Принимаются PR — особенно с исправлениями ошибок |