Tutoriais

Protegendo credenciais CaptchaAI em variáveis ​​de ambiente

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.


Guias relacionados

Os comentários estão desativados para este artigo.