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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hhcli_server-0.1.1.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hhcli_server-0.1.1-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file hhcli_server-0.1.1.tar.gz.

File metadata

  • Download URL: hhcli_server-0.1.1.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hhcli_server-0.1.1.tar.gz
Algorithm Hash digest
SHA256 881e788763ecb7b97f740c3a59af606befebc79bc3ac4dace71179df9ebc93f0
MD5 6f564c0421fcdc1da9744febd891e1df
BLAKE2b-256 f373ab30ca280669c3da376532b0955523684bac888a2449633a79376e21bf09

See more details on using hashes here.

File details

Details for the file hhcli_server-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hhcli_server-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hhcli_server-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a575b1a1a21f03922214165705ff2fd7ddb52fee1464821b23c967dd613f0c01
MD5 233daad954d8d8b9e1df28a0ce6fcc9c
BLAKE2b-256 779b35c84c55d37629d5a58a01865dddd696dc3a05f4081c8170d32c3fc1decd

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page