Рейтинг, стоп-лист
и контроль цены
Расширение добавляет к каждому объявлению на avito.ru кнопки 👍 / 👎, скрытие и блокировку продавца ✕, а также кнопку «☆ Следить» с отдельным списком отслеживания и графиком динамики цены. Все сводные рейтинги, пользователи и архив цен закрыты в админ-панели управляющего.
Пакет для Chromium-браузеров
manifest.json и все скрипты лежат строго в корне архива (без лишней вложенной папки). Адрес этого сервера уже прописан автоматически.
- 1. Скачайте архив
avito-rating-chrome.zipкнопкой ниже и распакуйте его в отдельную папку (например,C:\avito-rating-chrome). - 2. Вставьте в адресную строку браузера:
- 3. Включите переключатель «Режим разработчика» и нажмите «Загрузить распакованное расширение» → выберите распакованную папку, внутри которой лежит
manifest.json(либо просто перетащите скачанный.zipмышкой прямо на страницуchrome://extensions).
Пакет для Firefox (ZIP без распаковки + MV3/XPI)
Плоский архив с manifest.json на верхнем уровне, gecko.id и декларацией data_collection_permissions (требование Firefox 2026).
- 1. Скачайте
avito-rating-firefox.zip— распаковывать архив не нужно. - 2. Вставьте в адресную строку Firefox:
- 3. Нажмите «Загрузить временное дополнение…» и выберите скачанный файл
avito-rating-firefox.zip(или если распаковали — выберите сам файлmanifest.jsonвнутри папки, а не общую папку с несколькими сборками).
Сводная статистика, база пользователей и управление рейтингами скрыты от посторонних
Войти в кабинет может только управляющий. Внутри доступны: полный реестр объявлений и продавцов с установкой ручного рейтинга (0–100) и глобальной блокировкой, список всех клиентов расширения с подписями и блокировкой нарушителей, а также каталог цен и история их изменений.
Проверьте работу кнопок 👍 / 👎 / ✕ и «☆ Следить» прямо сейчас
Слева показана панель расширения с вкладкой «Список» (отслеживаемые объявления и мини-графики цены). Нажмите «☆ Следить» на любой карточке справа — объявление сразу появится в вашем списке отслеживания в PostgreSQL.
Как устроены перехват на avito.ru, история цены и админка
Расширение опирается на стабильные атрибуты data-marker. При каждом просмотре выдачи или карточки товара сервер сравнивает текущую цену с последней записью в price_history и сохраняет новую точку при любом изменении стоимости.
- 01
Перехват выдачи и цены
Контент-скрипт разбирает карточки avito.ru по устойчивым атрибутам data-marker и извлекает числовую цену как из общей выдачи, так и со страницы товара.
[data-marker="item"] // карточка объявления [data-marker="item-title"] // ссылка и заголовок [data-marker="item-price"] // цена в поиске [data-marker="item-view/item-price"] // цена на карточке товара
- 02
Идентификация ссылки и продавца
Идентификатор объявления — числовой суффикс slug'а. Продавец — хеш профиля /user/<hash>/profile или слаг витрины /brands/<slug>.
/moskva/telefony/iphone_15_3813986265 └─ listingId = 3813986265 /user/a3f1c8e9…60718/profile └─ sellerId = user:a3f1c8e9…60718
- 03
Кнопка «Следить» и список отслеживания
Рядом с 👍 / 👎 / ✕ расположена кнопка «☆ Следить». Она добавляет товар в отдельный список отслеживания расширения (popup + вкладка в плавающей панели) и строит график динамики цены.
POST /api/v1/watch { action: "watch", listingId, price } GET /api/v1/watch // список слежения клиента GET /api/v1/price-history // точки цены во времени - 04
Закрытая админка управляющего
Общая сводка БД, база клиентов расширения, ручная корректировка рейтингов и полный архив цен закрыты паролем управляющего на маршруте /admin.
POST /api/admin/login // HttpOnly HMAC-сессия GET /api/admin/overview // статистика, цены, клиенты POST /api/admin/manage // ручной рейтинг, блоки, цены
Запуск сервера хранения и расширения
1. Поднимите контейнер с PostgreSQL и сервером
Задайте свой пароль управляющего в ADMIN_PASSWORD и запустите сборку.
docker compose up -d --build # витрина: http://localhost:8080 # админка: http://localhost:8080/admin
2. Установите плагин в Chrome или Firefox
Скачайте готовый ZIP-архив ниже и загрузите распакованную папку в браузер.
chrome://extensions -> Загрузить распакованное about:debugging -> Загрузить временное дополнение
3. Отслеживайте цены и управляйте рейтингами
Жмите «☆ Следить» на объявлениях avito.ru, проверяйте динамику в окне расширения, а сводку — в /admin.
ADMIN_USER=admin ADMIN_PASSWORD=ваш-надёжный-пароль
# ОДИН порт наружу: хост:8080 -> app:3000 -> db:5432 (внутренняя сеть)
services:
app:
build: .
depends_on:
db:
condition: service_healthy
environment:
DATABASE_URL: postgresql://postgres:postgres@db:5432/avito_rating
ADMIN_USER: ${ADMIN_USER:-admin}
ADMIN_PASSWORD: ${ADMIN_PASSWORD:-admin1234}
NODE_ENV: production
ports:
- "${APP_PORT:-8080}:3000" # единственный опубликованный порт
networks: [avito-net]
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: avito_rating
volumes:
- pgdata:/var/lib/postgresql/data
expose: ["5432"] # только внутри avito-net, наружу НЕ пробрасывается
networks: [avito-net]
networks:
avito-net:
driver: bridge| Метод | Путь | Назначение |
|---|---|---|
| GET | /api/health | Проверка связи с PostgreSQL, отдаёт { ok: true }. |
| POST | /api/v1/ratings | Пакетная регистрация объявлений из выдачи, автофиксация цены в price_history и выдача рейтингов. |
| POST | /api/v1/vote | Голос +1 / −1 по объявлению или продавцу с проверкой блокировки клиента. |
| POST | /api/v1/hide | Скрыть объявление и/или заблокировать продавца (кнопка «✕»). |
| GET / POST | /api/v1/watch | Список отслеживания клиента (кнопка «Следить») вместе с историей цен каждого товара. |
| GET | /api/v1/price-history | Полный ряд наблюдений цены, минимум, максимум и разница по listingId. |
| POST | /api/admin/manage | Закрытый API управляющего: ручной рейтинг, блокировка пользователей, запись цен. |
| GET | /api/extension?target=… | Сборка установочного архива расширения: chrome (MV3), firefox (MV2) или all. |
