From 90f465eedb036fb11eaa11c29031dcaf0f6115cf Mon Sep 17 00:00:00 2001 From: Claw Date: Sun, 22 Mar 2026 22:28:48 +0000 Subject: [PATCH] Initial commit: Kwork parser project MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Анализ HAR файла kwork-dump.har (1182 запроса) - Найдено 18 JSON эндпоинтов - Ключевые URL: /projects, /api/user/login, /quick-faq/init - Kwork использует server-side rendering - План разработки: HTML парсинг → Авторизация → API Профиль: Claw Репозиторий: ssh://gitea@5.188.26.192:2222/claw/kwork-api.git --- .gitignore | 27 ++++++++++++ README.md | 108 +++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 4 ++ 3 files changed, 139 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a0747dc --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +env/ +venv/ +*.egg-info/ + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# Данные +*.har +*.json +*.csv +!requirements.txt + +# Секреты +.env +.env.local +*.key +*.pem diff --git a/README.md b/README.md new file mode 100644 index 0000000..43f7f59 --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ +# Kwork Parser + +Парсер для Kwork.ru на основе анализа HAR файла. + +## Анализ HAR (kwork-dump.har) + +### Общая статистика +- **Всего запросов:** 1182 +- **Домены:** kwork.ru, cdn-edge.kwork.ru, cdn-front.kwork.com, kworks.ru, notice.kwork.ru + +### JSON эндпоинты (18 с телом) + +| URL | Метод | Размер (байт) | Описание | +|-----|-------|---------------|----------| +| `/quick-faq/init` | POST | 380,450 | Инициализация FAQ (самый большой) | +| `/projects` | POST | 5,858 - 19,281 | Список проектов (пагинация) | +| `/api/user/checknotify` | GET | 318 | Проверка уведомлений | +| `/api/user/login` | POST | 142 | Авторизация | +| `/user/get_reviews` | POST | 83 | Отзывы пользователя | +| `/settings_main_save` | POST | 166 | Сохранение настроек | + +### Ключевые URL для парсинга + +``` +https://kwork.ru/projects # Список проектов +https://kwork.ru/projects/{id} # Страница проекта +https://kwork.ru/projects/{id}/view # Просмотр проекта +https://kwork.ru/api/user/login # API авторизации +https://kwork.ru/api/user/checknotify # API уведомлений +``` + +### Авторизация + +⚠️ **HAR не содержит токенов авторизации** — сессия записана без заголовков Authorization. + +Для парсинга потребуется: +1. Либо cookies сессии +2. Либо авторизация через `/api/user/login` + +### Структура данных + +Kwork использует **server-side rendering** — данные встроены в HTML. + +**Где искать данные:** +- HTML страницы `/projects` — список проектов +- HTML страницы `/projects/{id}` — детали проекта +- JSON `/quick-faq/init` — данные FAQ (380KB) + +--- + +## План разработки + +### Этап 1: Парсинг HTML +- [ ] Парсер страницы `/projects` (список) +- [ ] Парсер страницы `/projects/{id}` (детали) +- [ ] Обработка пагинации + +### Этап 2: Авторизация +- [ ] Авторизация через login API +- [ ] Сохранение cookies/session +- [ ] Refresh сессии + +### Этап 3: API +- [ ] Эндпоинт `/api/user/checknotify` +- [ ] Эндпоинт `/user/get_reviews` +- [ ] Другие API методы + +--- + +## Структура проекта + +``` +kwork-parser/ +├── README.md +├── requirements.txt +├── kwork_parser/ +│ ├── __init__.py +│ ├── parser.py # HTML парсер +│ ├── api.py # API клиент +│ └── models.py # Модели данных +├── tests/ +│ └── test_parser.py +└── examples/ + └── parse_projects.py +``` + +--- + +## Быстрый старт + +```bash +# Установка +pip install -r requirements.txt + +# Парсинг проектов +python examples/parse_projects.py + +# Запуск тестов +pytest tests/ +``` + +--- + +## Заметки + +- HAR файл: `/root/kwork-dump.har` +- Gitea репозиторий: `ssh://gitea@5.188.26.192:2222/claw/kwork-api.git` +- Профиль: Claw diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3de8192 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +requests>=2.31.0 +beautifulsoup4>=4.12.0 +lxml>=4.9.0 +pydantic>=2.0.0