Le codage en dur des clés API dans le code source signifie que toute personne ayant accès au référentiel – ou toute personne qui trouve votre code sur un dépôt public – possède votre clé. Les variables d'environnement gardent les informations d'identification hors du code, du contrôle de version et des journaux.
Fichier .env (développement local)
Créez un fichier .env à la racine de votre projet :
CAPTCHAAI_API_KEY=your_actual_api_key_here
Ajoutez-le immédiatement à .gitignore :
# .gitignore
.env
.env.local
.env.production
Python (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 (dotenv)
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);
Variables d'environnement système
Définissez les variables au niveau du système d'exploitation au lieu d'utiliser des fichiers .env :
Linux/MacOS
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
Variable d'environnement dans l'exécution de Docker
docker run -e CAPTCHAAI_API_KEY="your_key" my-scraper
Docker Composer
# docker-compose.yml
services:
scraper:
image: my-scraper
environment:
- CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}
Le ${CAPTCHAAI_API_KEY} fait référence à la variable d'environnement de l'hôte - la clé n'apparaît jamais dans le fichier de composition.
Secrets Docker (Essaim)
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
Lire en code :
with open("/run/secrets/captchaai_key") as f:
API_KEY = f.read().strip()
Pipelines CI/CD
Actions 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 }}
Ajoutez le secret dans Paramètres → Secrets et variables → Actions → Nouveau secret du référentiel.
GitLabCI
# .gitlab-ci.yml
scrape:
script:
- python scraper.py
variables:
CAPTCHAAI_API_KEY: $CAPTCHAAI_API_KEY
Ajoutez la variable dans Paramètres → CI/CD → Variables avec l'option "Masqué" activée.
Validation au démarrage
Vérifiez toujours que la clé existe et fonctionne avant d'exécuter votre pipeline :
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}")
Erreurs courantes
| Erreur | Risque | Corriger |
|---|---|---|
Valider .env sur Git |
Clé exposée dans l'historique des pensions | Ajoutez .env à .gitignore avant le premier commit |
| Impression de la clé API dans les journaux | Clé visible dans les agrégateurs de journaux | N'enregistrez jamais les clés complètes : masquez-les ou omettez-les |
| Codage en dur dans Dockerfile | Clé intégrée dans les calques d'image | Utilisez ENV au moment de l'exécution, pas dans les étapes de construction |
| Partager des clés via chat/email | Clé interceptée ou divulguée | Utilisez un gestionnaire de secrets ou partagez via un canal sécurisé |
FAQ
Dois-je chiffrer le fichier .env ?
Pour le développement local, .gitignore est suffisant. Pour la production, utilisez un gestionnaire de secrets cloud (AWS Secrets Manager, Google Secret Manager, Azure Key Vault) au lieu de fichiers .env.
Que se passe-t-il si ma clé est déjà validée dans Git ?
Faites pivoter la clé immédiatement dans votre tableau de bord CaptchaAI. L'ancienne clé de l'historique Git reste accessible même après la suppression du fichier.
Puis-je utiliser plusieurs clés dans un seul fichier .env ?
Oui. Utilisez des valeurs séparées par des virgules ou des touches numériques :
CAPTCHAAI_KEYS=key1,key2,key3
keys = os.environ["CAPTCHAAI_KEYS"].split(",")
Sécurisez votre intégration CaptchaAI dès le premier jour
Obtenez votre clé API surcaptchaai.com.
Guides associés
- Liste blanche IP CaptchaAI et sécurité des clés API
- Rotation des clés API CaptchaAI
- Démarrage rapide de l'API CaptchaAI