Melakukan hardcoding kunci API dalam kode sumber berarti siapa pun yang memiliki akses repositori – atau siapa pun yang menemukan kode Anda di repositori publik – memiliki kunci Anda. Variabel lingkungan menjauhkan kredensial dari kode, kontrol versi, dan log.
File .env (pengembangan lokal)
Buat file .env di root proyek Anda:
CAPTCHAAI_API_KEY=your_actual_api_key_here
Segera tambahkan ke .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);
Variabel lingkungan sistem
Tetapkan variabel di tingkat OS alih-alih menggunakan file .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")
buruh pelabuhan
Variabel lingkungan dalam menjalankan buruh pelabuhan
docker run -e CAPTCHAAI_API_KEY="your_key" my-scraper
Penulisan Docker
# docker-compose.yml
services:
scraper:
image: my-scraper
environment:
- CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}
${CAPTCHAAI_API_KEY} mereferensikan variabel lingkungan host — kuncinya tidak pernah muncul di file penulisan.
Rahasia Docker (Kawanan)
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
Baca dalam kode:
with open("/run/secrets/captchaai_key") as f:
API_KEY = f.read().strip()
Jaringan pipa CI/CD
Tindakan 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 }}
Tambahkan rahasia di Pengaturan -> Rahasia dan variabel -> Tindakan -> Rahasia repositori baru.
GitLab CI
# .gitlab-ci.yml
scrape:
script:
- python scraper.py
variables:
CAPTCHAAI_API_KEY: $CAPTCHAAI_API_KEY
Tambahkan variabel di Pengaturan -> CI/CD -> Variabel dengan opsi "Masked" diaktifkan.
Validasi saat startup
Selalu validasi bahwa kunci tersebut ada dan berfungsi sebelum menjalankan pipeline Anda:
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}")
Kesalahan umum
| Kesalahan | Resiko | Perbaiki |
|---|---|---|
Melakukan .env ke Git |
Kunci terekspos dalam riwayat repo | Tambahkan .env ke .gitignore sebelum melakukan commit pertama |
| Mencetak kunci API dalam log | Kunci terlihat di agregator log | Jangan pernah mencatat kunci lengkap – menutupi atau menghilangkannya |
| Pengkodean keras di Dockerfile | Kunci dimasukkan ke dalam lapisan gambar | Gunakan ENV saat runtime, bukan pada tahap pembuatan |
| Berbagi kunci melalui chat/email | Kunci dicegat atau bocor | Gunakan pengelola rahasia atau bagikan melalui saluran aman |
Pertanyaan Umum
Haruskah saya mengenkripsi file .env?
Untuk pengembangan lokal, .gitignore sudah cukup. Untuk produksi, gunakan manajer rahasia cloud (AWS Secrets Manager, Google Secret Manager, Azure Key Vault) alih-alih file .env.
Bagaimana jika kunci saya sudah dikomit ke Git?
Segera putar kunci di dashboard CaptchaAI Anda. Kunci lama dalam riwayat Git tetap dapat diakses bahkan setelah file dihapus.
Bisakah saya menggunakan banyak kunci dalam satu file .env?
Ya. Gunakan nilai yang dipisahkan koma atau kunci bernomor:
CAPTCHAAI_KEYS=key1,key2,key3
keys = os.environ["CAPTCHAAI_KEYS"].split(",")
Amankan integrasi CaptchaAI Anda sejak hari pertama
Dapatkan kunci API Anda dicaptchaai.com.
Panduan terkait
- CaptchaAI Daftar Putih IP dan Keamanan Kunci API
- Rotasi Kunci API CaptchaAI
- Panduan Memulai API CaptchaAI