Безопасный прокси-сервер для hhcli.
Важно! Прокси-сервер в настоящее время не используется, все секреты хранятся локально на стороне клиента в связи с ограничением использования соискательского API от 15.12.2025.
hhcli-server — это веб-сервис, который выступает в роли посредника между hhcli и API HeadHunter. Его единственная задача — решить фундаментальную проблему безопасности: Client Secret никогда не должен храниться в клиентском приложении. Если поместить его в код hhcli, любой сможет его извлечь и скомпрометировать.
Примечание: Клиент
hhcliоперирует только временным кодом авторизации, а сервер проводит рукопожатие и получает токен доступа,Client Secretникогда не покидает сервер.
Для развёртывания вам понадобится:
- Сервер под управлением Linux (инструкция написана для Debian/Ubuntu).
- Доменное имя, делегированное на IP-адрес вашего сервера.
- Python 3.9+ и
pip. Client IDиClient Secretот dev.hh.ru.
Подключитесь к серверу по SSH и склонируйте репозиторий:
git clone https://github.com/fovendor/hhcli-server.git
cd hhcli-serverУстановка 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)Создайте файл .env в корне проекта для хранения ваших API-ключей.
nano .envДобавьте в него ваши ключи в следующем формате:
HH_CLIENT_ID="ВАШ_ID_КЛИЕНТА"
HH_CLIENT_SECRET="ВАШ_СЕКРЕТ_КЛИЕНТА"Важно: Этот файл никогда не должен попадать в Git. Он уже добавлен в
.gitignore.
Создайте сервис, который будет автоматически запускать 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Скопируйте пример конфигурации. Нужно заменить все вхождения 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Это финальный шаг для обеспечения безопасности.
# Устанавливаем 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/.
GET /api/get_config: Возвращает публичныйclient_id.POST /api/exchange_code: Принимает JSON{ "code": "..." }и обменивает его наaccess_token.