API anahtarlarının kaynak koduna sabit kodlanması, depo erişimi olan herkesin (veya kodunuzu halka açık bir depoda bulan herkesin) anahtarınıza sahip olduğu anlamına gelir. Ortam değişkenleri kimlik bilgilerini kodun, sürüm kontrolünün ve günlüklerin dışında tutar.
.env dosyası (yerel geliştirme)
Proje kökünüzde bir .env dosyası oluşturun:
CAPTCHAAI_API_KEY=your_actual_api_key_here
Hemen .gitignore'ye ekleyin:
# .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);
Sistem ortamı değişkenleri
.env dosyalarını kullanmak yerine değişkenleri işletim sistemi düzeyinde ayarlayın:
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")
Liman işçisi
Liman işçisi çalıştırmasındaki ortam değişkeni
docker run -e CAPTCHAAI_API_KEY="your_key" my-scraper
Docker Oluşturma
# docker-compose.yml
services:
scraper:
image: my-scraper
environment:
- CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}
${CAPTCHAAI_API_KEY}, ana bilgisayarın ortam değişkenine başvurur; anahtar, oluşturma dosyasında hiçbir zaman görünmez.
Docker sırları (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
Kodu okuyun:
with open("/run/secrets/captchaai_key") as f:
API_KEY = f.read().strip()
CI/CD boru hatları
GitHub Eylemleri
# .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 }}
Ayarlar – Gizli diziler ve değişkenler – Eylemler – Yeni veri deposu sırrı bölümüne sırrı ekleyin.
GitLab CI
# .gitlab-ci.yml
scrape:
script:
- python scraper.py
variables:
CAPTCHAAI_API_KEY: $CAPTCHAAI_API_KEY
Değişkeni Ayarlar – CI/CD – Değişkenler bölümüne "Maskeli" seçeneği etkinken ekleyin.
Başlangıçta doğrulama
İşlem hattınızı çalıştırmadan önce her zaman anahtarın var olduğunu ve çalıştığını doğrulayın:
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}")
Yaygın hatalar
| hata | Risk | Düzeltme |
|---|---|---|
.env'nin Git'e kaydedilmesi |
Repo geçmişinde açığa çıkan anahtar | İlk işlemden önce .env'yi .gitignore'ye ekleyin |
| Günlüklerde API anahtarını yazdırma | Günlük toplayıcılarda görünen anahtar | Hiçbir zaman tam anahtarları kaydetmeyin; bunları maskeleyin veya atlayın |
| Dockerfile'da sabit kodlama | Görüntü katmanlarına eklenen anahtar | ENV'yi derleme aşamalarında değil çalışma zamanında kullanın |
| Anahtarları sohbet yoluyla paylaşma/email | Anahtar ele geçirildi veya sızdırıldı | Bir sır yöneticisi kullanın veya güvenli kanal aracılığıyla paylaşın |
SSS
.env dosyasını şifrelemeli miyim?
Yerel kalkınma için .gitignore yeterlidir. Üretim için .env dosyaları yerine bir bulut gizli yöneticisi (AWS Secrets Manager, Google Secret Manager, Azure Key Vault) kullanın.
Anahtarım zaten Git'e bağlıysa ne olur?
CaptchaAI kontrol panelinizdeki anahtarı hemen çevirin. Git geçmişindeki eski anahtar, dosya silindikten sonra bile erişilebilir durumda kalır.
Bir .env dosyasında birden fazla anahtar kullanabilir miyim?
Evet. Virgülle ayrılmış değerler veya numaralı tuşlar kullanın:
CAPTCHAAI_KEYS=key1,key2,key3
keys = os.environ["CAPTCHAAI_KEYS"].split(",")
CaptchaAI entegrasyonunuzu ilk günden itibaren güvence altına alın
API anahtarınızı şu adresten alın:captchaai.com.