Skip to main content

hh-cli-server

PyPI version License: MIT

Безопасный прокси-сервер для hh-cli.

Описание

hh-cli-server — это веб-сервис, который выступает в роли посредника между hh-cli и API HeadHunter. Его единственная задача — решить фундаментальную проблему безопасности: Client Secret никогда не должен храниться в клиентском приложении. Если поместить его в код hh-cli, любой сможет его извлечь и скомпрометировать.

Примечание: Клиент hh-cli оперирует только временным кодом авторизации, а сервер проводит рукопожатие и получает токен доступа, Client Secret никогда не покидает сервер.

Развёртывание и разработка

Для развёртывания вам понадобится:

  1. Сервер под управлением Linux (инструкция написана для Debian/Ubuntu).
  2. Доменное имя, делегированное на IP-адрес вашего сервера.
  3. Python 3.9+ и pip.
  4. Client ID и Client Secret от dev.hh.ru.

Шаг 1: Клонирование

Подключитесь к серверу по SSH и склонируйте репозиторий:

git clone https://github.com/fovendor/hhcli-server.git
cd hhcli-server

Шаг 2: Настройка окружения

Установка venv и создание окружения:

sudo apt update && sudo apt install -y python3-venv
python3 -m venv venv
source venv/bin/activate

Установка зависимостей:

pip install -r <(poetry export -f requirements.txt)

Шаг 3: Файл с ключами

Создайте файл .env в корне проекта для хранения ваших API-ключей.

nano .env

Добавьте в него ваши ключи в следующем формате:

HH_CLIENT_ID="ВАШ_ID_КЛИЕНТА"
HH_CLIENT_SECRET="ВАШ_СЕКРЕТ_КЛИЕНТА"

Важно: Этот файл никогда не должен попадать в Git. Он уже добавлен в .gitignore.

Шаг 4: Настройка Systemd для автозапуска

Создайте сервис, который будет автоматически запускать Gunicorn и стартовать приложение.

sudo nano /etc/systemd/system/hhcli-server.service

Создайте конфигурацию, заменив your_user на имя пользователя системы:

[Unit]
Description=Gunicorn instance to serve hhcli-server
After=network.target

[Service]
User=your_user
Group=www-data
# ЗАМЕНИТЕ 'your_user'
WorkingDirectory=/home/your_user/hhcli-server
# ЗАМЕНИТЕ 'your_user'
EnvironmentFile=/home/your_user/hhcli-server/.env
# ЗАМЕНИТЕ 'your_user'
ExecStart=/home/your_user/hhcli-server/venv/bin/gunicorn --workers 3 --bind unix:hhcli_server.sock -m 007 hhcli_server.app:app

[Install]
WantedBy=multi-user.target

Запустите и включите сервис:

sudo systemctl start hhcli-server
sudo systemctl enable hhcli-server

# Проверьте статус. Должно быть "active (running)"
sudo systemctl status hhcli-server

Шаг 5: Настройка Nginx

Скопируйте пример конфигурации. Нужно заменить все вхождения your_domain.com и your_user на реальные значения.

sudo cp nginx_config/hhcli-server.conf /etc/nginx/sites-available/your_domain.com.conf
sudo nano /etc/nginx/sites-available/your_domain.com.conf

Включите сайт и проверьте конфигурацию Nginx:

# ЗАМЕНИТЕ 'your_domain.com'
sudo ln -s /etc/nginx/sites-available/your_domain.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Шаг 6: Настройка HTTPS с Certbot

Это финальный шаг для обеспечения безопасности.

# Устанавливаем Certbot
sudo apt install certbot python3-certbot-nginx

# ЗАМЕНИТЕ 'your_domain.com'
sudo certbot --nginx -d your_domain.com

Следуйте инструкциям Certbot. Он автоматически получит SSL-сертификат и настроит Nginx для работы по HTTPS.

Готово! Ваш прокси-сервер развернут и доступен по адресу https://your_domain.com/.

API Эндпоинты

  • GET /api/get_config: Возвращает публичный client_id.
  • POST /api/exchange_code: Принимает JSON { "code": "..." } и обменивает его на access_token.

Лицензия

MIT

Metadata

Release files for hhcli-server 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hhcli-server 0.1.1
File Size Uploaded
hhcli_server-0.1.1.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hhcli-server 0.1.1
File Interpreter ABI Platform
hhcli_server-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.9 kB

Release files / hhcli_server-0.1.1.tar.gz

Download URL hhcli_server-0.1.1.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
881e788763ecb7b97f740c3a59af606befebc79bc3ac4dace71179df9ebc93f0
BLAKE2b-256 checksum
How to use checksums
f373ab30ca280669c3da376532b0955523684bac888a2449633a79376e21bf09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / hhcli_server-0.1.1-py3-none-any.whl

Download URL hhcli_server-0.1.1-py3-none-any.whl
Size 5.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a575b1a1a21f03922214165705ff2fd7ddb52fee1464821b23c967dd613f0c01
BLAKE2b-256 checksum
How to use checksums
779b35c84c55d37629d5a58a01865dddd696dc3a05f4081c8170d32c3fc1decd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page