Туториалы

Защита учетных данных CaptchaAI в переменных среды

Жесткое кодирование ключей API в исходном коде означает, что любой, у кого есть доступ к репозиторию, или любой, кто найдет ваш код в общедоступном репозитории, будет иметь ваш ключ. Переменные среды не допускают доступа учетных данных к коду, контролю версий и журналам.


файл .env (локальная разработка)

Создайте файл .env в корне вашего проекта:

CAPTCHAAI_API_KEY=your_actual_api_key_here

Немедленно добавьте его в .gitignore:

# .gitignore
.env
.env.local
.env.production

Питон (python-dotenv)

pip install python-dotenv
import os
from dotenv import load_dotenv

load_dotenv()

API_KEY = os.environ["CAPTCHAAI_API_KEY"]

# Use in API calls
import requests
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": "6Le-SITEKEY",
    "pageurl": "https://example.com",
    "json": "1",
})
print(resp.json())

JavaScript (дотенв)

npm install dotenv
require('dotenv').config();

const API_KEY = process.env.CAPTCHAAI_API_KEY;

if (!API_KEY) {
  console.error('CAPTCHAAI_API_KEY not set');
  process.exit(1);
}

// Use in API calls
const axios = require('axios');
const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: {
    key: API_KEY,
    method: 'userrecaptcha',
    googlekey: '6Le-SITEKEY',
    pageurl: 'https://example.com',
    json: 1,
  },
});
console.log(resp.data);

Переменные системной среды

Установите переменные на уровне ОС вместо использования файлов .env:

Линукс/МакОС

export CAPTCHAAI_API_KEY="your_actual_api_key_here"

# Persist across sessions — add to ~/.bashrc or ~/.zshrc
echo 'export CAPTCHAAI_API_KEY="your_actual_api_key_here"' >> ~/.bashrc

Windows (PowerShell)

$env:CAPTCHAAI_API_KEY = "your_actual_api_key_here"

# Persist permanently
[System.Environment]::SetEnvironmentVariable("CAPTCHAAI_API_KEY", "your_actual_api_key_here", "User")

Докер

Переменная среды при запуске докера

docker run -e CAPTCHAAI_API_KEY="your_key" my-scraper

Докер Составление

# docker-compose.yml
services:
  scraper:
    image: my-scraper
    environment:

      - CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}

${CAPTCHAAI_API_KEY} ссылается на переменную среды хоста — ключ никогда не появляется в файле компоновки.

Секреты Docker (Swarm)

echo "your_actual_api_key_here" | docker secret create captchaai_key -
# docker-compose.yml (Swarm mode)
services:
  scraper:
    image: my-scraper
    secrets:

      - captchaai_key
secrets:
  captchaai_key:
    external: true

Прочитайте в коде:

with open("/run/secrets/captchaai_key") as f:
    API_KEY = f.read().strip()

Трубопроводы CI/CD

Действия GitHub

# .github/workflows/scrape.yml
jobs:
  scrape:
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v4
      - run: python scraper.py
        env:
          CAPTCHAAI_API_KEY: ${{ secrets.CAPTCHAAI_API_KEY }}

Добавьте секрет в Настройки → Секреты и переменные → Действия → Новый секрет хранилища.

GitLab CI

# .gitlab-ci.yml
scrape:
  script:

    - python scraper.py
  variables:
    CAPTCHAAI_API_KEY: $CAPTCHAAI_API_KEY

Добавьте переменную в Настройки — CI/CD — Переменные с включенной опцией «Маскировано».


Проверка при запуске

Всегда проверяйте, что ключ существует и работает, прежде чем запускать конвейер:

import os
import sys
import requests

API_KEY = os.environ.get("CAPTCHAAI_API_KEY")
if not API_KEY:
    print("ERROR: CAPTCHAAI_API_KEY environment variable not set")
    sys.exit(1)

# Verify key works
resp = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": API_KEY, "action": "getbalance", "json": "1"
}).json()

if resp["status"] != 1:
    print(f"ERROR: Invalid API key — {resp['request']}")
    sys.exit(1)

print(f"API key valid — balance: ${float(resp['request']):.2f}")

Распространенные ошибки

Ошибка Риск Исправить
Коммит .env в Git Ключ раскрыт в истории репо Добавьте .env в .gitignore перед первым коммитом.
Печать ключа API в журналах Ключ виден в агрегаторах журналов Никогда не регистрируйте полные ключи — маскируйте или опускайте их.
Жесткое кодирование в Dockerfile Ключ, встроенный в слои изображения Используйте ENV во время выполнения, а не на этапах сборки.
Делимся ключами через чат/email Ключ перехвачен или утек Используйте менеджер секретов или поделитесь информацией по защищенному каналу.

Часто задаваемые вопросы

Должен ли я зашифровать файл .env?

Для локальной разработки достаточно .gitignore. Для рабочей среды используйте облачный диспетчер секретов (AWS Secrets Manager, Google Secret Manager, Azure Key Vault) вместо файлов .env.

Что, если мой ключ уже привязан к Git?

Немедленно поверните ключ на панели управления CaptchaAI. Старый ключ в истории Git остается доступным даже после удаления файла.

Могу ли я использовать несколько ключей в одном файле .env?

Да. Используйте значения, разделенные запятыми, или цифровые ключи:

CAPTCHAAI_KEYS=key1,key2,key3
keys = os.environ["CAPTCHAAI_KEYS"].split(",")

Обеспечьте интеграцию CaptchaAI с первого дня

Получите ключ API по адресуcaptchaai.com.


Связанные руководства

  • CaptchaAI Белый список IP-адресов и безопасность ключей API
  • CaptchaAI Ротация ключей API
  • CaptchaAI Краткое руководство по API
Комментарии для этой статьи отключены.