Жесткое кодирование ключей 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