Initial commit: Kwork parser project

- Анализ HAR файла kwork-dump.har (1182 запроса)
- Найдено 18 JSON эндпоинтов
- Ключевые URL: /projects, /api/user/login, /quick-faq/init
- Kwork использует server-side rendering
- План разработки: HTML парсинг → Авторизация → API

Профиль: Claw <claw@localhost>
Репозиторий: ssh://gitea@5.188.26.192:2222/claw/kwork-api.git
This commit is contained in:
Claw 2026-03-22 22:28:48 +00:00
commit 90f465eedb
3 changed files with 139 additions and 0 deletions

27
.gitignore vendored Normal file
View File

@ -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

108
README.md Normal file
View File

@ -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 <claw@localhost>

4
requirements.txt Normal file
View File

@ -0,0 +1,4 @@
requests>=2.31.0
beautifulsoup4>=4.12.0
lxml>=4.9.0
pydantic>=2.0.0