Chaves de API codificadas no código-fonte significam que qualquer pessoa com acesso ao repositório – ou qualquer pessoa que encontre seu código em um repositório público – tem sua chave. As variáveis de ambiente mantêm as credenciais fora do código, do controle de versão e dos logs.
Arquivo .env (desenvolvimento local)
Crie um arquivo .env na raiz do seu projeto:
CAPTCHAAI_API_KEY=your_actual_api_key_here
Adicione-o ao .gitignore imediatamente:
# .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);
Variáveis de ambiente do sistema
Defina variáveis no nível do sistema operacional em vez de usar arquivos .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
Variável de ambiente em docker run
docker run -e CAPTCHAAI_API_KEY="your_key" my-scraper
Composição do Docker
# docker-compose.yml
services:
scraper:
image: my-scraper
environment:
- CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}
O ${CAPTCHAAI_API_KEY} faz referência à variável de ambiente do host – a chave nunca aparece no arquivo de composição.
Segredos do 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
Leia no código:
with open("/run/secrets/captchaai_key") as f:
API_KEY = f.read().strip()
Pipelines CI/CD
Ações do 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 }}
Adicione o segredo em Configurações -> Segredos e variáveis -> Ações -> Novo segredo do repositório.
CI do GitLab
# .gitlab-ci.yml
scrape:
script:
- python scraper.py
variables:
CAPTCHAAI_API_KEY: $CAPTCHAAI_API_KEY
Adicione a variável em Configurações → CI/CD → Variáveis com a opção “Mascarado” habilitada.
Validação na inicialização
Sempre valide se a chave existe e funciona antes de executar seu 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}")
Erros comuns
| Erro | Risco | Correção |
|---|---|---|
Comprometendo .env com Git |
Chave exposta no histórico do repo | Adicione .env a .gitignore antes do primeiro commit |
| Imprimindo chave de API em logs | Chave visível em agregadores de log | Nunca registre chaves completas – mascare-as ou omita-as |
| Codificação no Dockerfile | Chave inserida em camadas de imagem | Use ENV em tempo de execução, não em estágios de construção |
| Compartilhando chaves via chat/email | Chave interceptada ou vazada | Use um gerenciador de segredos ou compartilhe via canal seguro |
Perguntas frequentes
Devo criptografar o arquivo .env?
Para o desenvolvimento local, .gitignore é suficiente. Para produção, use um gerenciador de segredos em nuvem (AWS Secrets Manager, Google Secret Manager, Azure Key Vault) em vez de arquivos .env.
E se minha chave já estiver comprometida com o Git?
Gire a chave imediatamente em seu painel CaptchaAI. A chave antiga no histórico do Git permanece acessível mesmo após a exclusão do arquivo.
Posso usar várias chaves em um arquivo .env?
Sim. Use valores separados por vírgula ou chaves numeradas:
CAPTCHAAI_KEYS=key1,key2,key3
keys = os.environ["CAPTCHAAI_KEYS"].split(",")
Proteja sua integração CaptchaAI desde o primeiro dia
Obtenha sua chave API emcaptchaai.com.