Tutorials

Ortam Değişkenlerinde CaptchaAI Kimlik Bilgilerinin Güvenliğini Sağlama

En kısa yanıt: CaptchaAI API anahtarınızı hiçbir zaman kaynak koduna yazmayın; onu bir ortam değişkeninde (environment variable) tutun. Ortam değişkeni yaklaşımı kimlik bilgisini üç kritik yerden uzakta tutar:

  • Kaynak kodundan — anahtar dosyalarınızın içinde düz metin olarak durmaz.
  • Sürüm kontrolünden — Git geçmişine hiç girmez, dolayısıyla geri de alınamaz.
  • Loglardan — çıktı ve hata izlerinde kazara görünmez.

Bu ihmal pratikte pahalıya patlar. Sabit kodlanmış (hardcoded) bir anahtar, depoya erişimi olan herkesin — ya da kodunuzu yanlışlıkla herkese açık bir GitHub deposunda bulan botların — anahtarınıza sahip olması demektir. GitHub'ın secret tarayıcıları herkese açık depoları saniyeler içinde tarar; sızan anahtarı siz fark etmeden bir bot çoktan bulmuş olabilir.

Faturaya etkisi de somuttur: CaptchaAI planları thread bazlı faturalandırılır (örneğin BASIC: $15/ay, 5 thread), bu yüzden sızan bir anahtar birinin sizin thread'lerinizi tüketmesi ve eşzamanlı kapasitenizin size kalmaması anlamına gelir. Bu rehber anahtarınızı yerel geliştirmeden CI/CD hattına kadar her ortamda güvende tutmayı Python, Node.js, Docker ve GitHub Actions örnekleriyle gösterir.

.env dosyası ile yerel geliştirmede API anahtarı

Yerel geliştirmede en pratik başlangıç bir .env dosyasıdır. Proje kökünüzde şu dosyayı oluşturun:

CAPTCHAAI_API_KEY=your_actual_api_key_here

Kritik adım, dosyayı ilk commit'ten önce .gitignore'ye eklemektir. Anahtar bir kez Git geçmişine girdiğinde, dosyayı sonradan silseniz bile geçmişte erişilebilir kalır.

# .gitignore
.env
.env.local
.env.production

Python'da python-dotenv ile anahtarı okuma

python-dotenv paketi .env dosyasını süreç ortamına yükler:

pip install python-dotenv

Ardından anahtarı os.environ üzerinden okuyup doğrudan API isteğinizde kullanın:

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())

Node.js'te dotenv ile anahtarı okuma

Node.js tarafında dotenv paketi aynı işi görür. Anahtarın tanımlı olup olmadığını en başta kontrol etmek, hataları erken yakalar:

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);

İşletim sistemi düzeyinde ortam değişkenleri

.env dosyası yerine değişkeni doğrudan işletim sistemi düzeyinde de tanımlayabilirsiniz. Bu yaklaşım şu durumlarda tercih edilir:

  • Tek bir makinede birden çok proje aynı anahtarı paylaşıyorsa.
  • Sunucuya elle deploy ediyorsanız ve depoda .env bulundurmak istemiyorsanız.
  • CI dışında, kalıcı bir çalışma ortamı yapılandırıyorsanız.

Linux ve 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

export yalnızca mevcut oturum için geçerlidir; kalıcı olması için değeri ~/.bashrc veya ~/.zshrc dosyanıza ekleyin.

Windows (PowerShell)

PowerShell'de geçici ve kalıcı tanım birbirinden ayrılır — ilk satır yalnızca açık pencere için geçerlidir, ikinci satır kullanıcı profilinize kalıcı yazar:

$env:CAPTCHAAI_API_KEY = "your_actual_api_key_here"

# Persist permanently
[System.Environment]::SetEnvironmentVariable("CAPTCHAAI_API_KEY", "your_actual_api_key_here", "User")

Docker ile ortam değişkeni ve secret yönetimi

Konteynerli iş akışlarında en sık yapılan hata anahtarı imaja gömmektir; imaj katmanları değişmezdir ve anahtar orada kalıcı olarak gömülü kalır. Bunun yerine anahtarı her zaman çalışma zamanında (runtime) geçin. Üç yaygın yöntem, güvenlik düzeyi arttıkça şöyle sıralanır:

docker run ile ortam değişkeni geçme

En basit yöntem, anahtarı docker run komutuna doğrudan bir bayrakla vermektir:

docker run -e CAPTCHAAI_API_KEY="your_key" my-scraper

Docker Compose yapılandırması

Compose dosyasında anahtarın kendisini değil, ana makinenin ortam değişkenine bir referans yazın:

# docker-compose.yml
services:
  scraper:
    image: my-scraper
    environment:

      - CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}

Buradaki ${CAPTCHAAI_API_KEY} ana makinenin ortam değişkenine başvurur; anahtarın kendisi Compose dosyasında hiçbir zaman düz metin olarak görünmez.

Docker secrets (Swarm modu)

Üretim için en güçlü seçenek Docker secrets'tır: anahtarı dosya sistemine şifreli biçimde yerleştirir ve yalnızca ilgili servise açar.

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

Kod tarafında secret'ı, konteyner içindeki ilgili dosyadan okursunuz:

with open("/run/secrets/captchaai_key") as f:
    API_KEY = f.read().strip()

CI/CD hattında API anahtarını gizli tutma

Otomasyon işlerini CI/CD üzerinden çalıştırıyorsanız anahtar, platformun gizli değişkenler (secrets) deposunda saklanmalı ve yalnızca çalışma anında iş adımına aktarılmalıdır.

GitHub Actions

# .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 }}

Anahtarı eklemek için GitHub arayüzünde şu yolu izleyin:

  • Settings → Secrets and variables → Actions bölümüne gidin.
  • New repository secret ile CAPTCHAAI_API_KEY adında yeni bir secret oluşturun.
  • Değeri yapıştırıp kaydedin; secret, log çıktısında otomatik olarak maskelenir.

GitLab CI

# .gitlab-ci.yml
scrape:
  script:

    - python scraper.py
  variables:
    CAPTCHAAI_API_KEY: $CAPTCHAAI_API_KEY

Değişkeni Settings → CI/CD → Variables bölümünden, "Masked" (maskeli) seçeneği etkin olacak şekilde ekleyin. Böylece anahtar iş loglarında gizli kalır.

Başlangıçta API anahtarını doğrulama

İş akışınızı çalıştırmadan önce anahtarın hem tanımlı olduğunu hem de gerçekten çalıştığını doğrulayın. Bu küçük kontrol, üretimde saatlerce süren sessiz hataların önüne geçer:

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}")

getbalance çağrısı hem anahtarın geçerliliğini doğrular hem de kalan bakiyenizi USD cinsinden verir; sızma şüphesinde bakiyedeki ani düşüş çoğu zaman ilk uyarı işaretidir.

Serbest otomasyon geliştiricileri için not: Bionluk veya Upwork üzerinden bir müşteriye otomasyon teslim ederken anahtarı proje dosyalarının içine koymayın. Anahtarı ortam değişkeni olarak dışarıda tutmak hem müşteri altyapısında sızıntıyı önler hem de topladığınız kişisel verilere ilişkin KVKK sorumluluğunu netleştirir — kimlik bilgisi de veri de kod tabanının dışında kalmalıdır.

Sık yapılan hatalar ve düzeltmeleri

Aşağıdaki dört hata, destek taleplerinde en sık gördüğümüz kimlik bilgisi sızıntısı nedenleridir:

Hata Risk Düzeltme
.env'nin Git'e commit edilmesi Repo geçmişinde açığa çıkan anahtar İlk commit'ten önce .env'yi .gitignore'ye ekleyin
Loglarda API anahtarını yazdırma Log toplayıcılarda görünen anahtar Tam anahtarları hiçbir zaman loglamayın; maskeleyin veya atlayın
Dockerfile'da sabit kodlama İmaj katmanlarına gömülen anahtar ENV'yi derleme aşamasında değil çalışma zamanında kullanın
Anahtarı sohbet veya e-posta ile paylaşma Ele geçirilen veya sızan anahtar Bir secret yöneticisi kullanın ya da güvenli kanaldan paylaşın

Sık sorulan sorular

Ortam değişkeni mi yoksa bir secret manager mı daha güvenli?

Yerel geliştirme için .gitignore'li bir .env dosyası yeterlidir. Üretimde ise ortam değişkeni yerine bir bulut secret yöneticisi (AWS Secrets Manager, Google Secret Manager, Azure Key Vault) tercih edin; bunlar erişim denetimi, otomatik rotasyon ve denetim günlüğü sunar.

Anahtarım yanlışlıkla depoya commit edildiyse ne yapmalıyım?

Önce CaptchaAI panelinizden anahtarı hemen yeniden üretin. Git geçmişindeki eski anahtar, dosyayı silseniz bile erişilebilir kalır; tek güvenli varsayım, o anahtarın artık herkese açık olduğudur.

CaptchaAI anahtarı sızarsa faturalandırmam nasıl etkilenir?

Planlar thread bazlı olduğu için, sızan bir anahtarla üçüncü bir taraf sizin thread'lerinizi çalıştırabilir ve eşzamanlı kapasitenizi kendi işine ayırabilir. Bakiye veya çözüm istatistiklerinizde beklenmedik hareket görürseniz anahtarı hemen yeniden üretin.

Tek bir .env dosyasında birden fazla anahtar kullanabilir miyim?

Evet. Virgülle ayrılmış değerler veya numaralandırılmış anahtarlar kullanın:

CAPTCHAAI_KEYS=key1,key2,key3
keys = os.environ["CAPTCHAAI_KEYS"].split(",")

.env dosyasını ekip arkadaşlarımla nasıl paylaşırım?

Dosyayı asla depoya koymayın. Bunun yerine gerçek değerleri boş bırakılmış bir .env.example şablonunu commit edin ve gerçek anahtarları bir secret yöneticisi ya da güvenli bir kanal üzerinden paylaşın.

CaptchaAI entegrasyonunuzu ilk günden güvende tutun

API anahtarınızı şu adresten alın: captchaai.com.

İlgili kılavuzlar

Bu makale için yorumlar devre dışı bırakılmıştır.