الدروس التطبيقية

تأمين بيانات اعتماد CaptchaAI في متغيرات البيئة

مفاتيح Hardcoding API في الكود المصدري تعني أن أي شخص لديه حق الوصول إلى المستودع - أو أي شخص يجد الكود الخاص بك في مستودع عام - لديه مفتاحك. تحافظ متغيرات البيئة على بيانات الاعتماد خارج التعليمات البرمجية والتحكم في الإصدار والسجلات.


ملف .env (التطوير المحلي)

قم بإنشاء ملف .env في جذر مشروعك:

CAPTCHAAI_API_KEY=your_actual_api_key_here

أضفه إلى .gitignore على الفور:

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

بايثون (Python دوتنف)

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 (دوتينف)

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

متغيرات بيئة النظام

قم بتعيين المتغيرات على مستوى نظام التشغيل بدلاً من استخدام ملفات .env:

لينكس / ماك

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

ويندوز (باورشيل)

$env:CAPTCHAAI_API_KEY = "your_actual_api_key_here"

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

عامل ميناء

متغير البيئة في تشغيل عامل الإرساء

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

Docker Compose

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

      - CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}

يشير ${CAPTCHAAI_API_KEY} إلى متغير بيئة المضيف - لا يظهر المفتاح مطلقًا في ملف الإنشاء.

Docker Secrets (سرب)

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

اقرأ في الكود:

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

خطوط الأنابيب CI/CD

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

أضف السر في الإعدادات ← الأسرار والمتغيرات ← الإجراءات ← سر المستودع الجديد .

جيتلاب سي

# .gitlab-ci.yml
scrape:
  script:

    - python scraper.py
  variables:
    CAPTCHAAI_API_KEY: $CAPTCHAAI_API_KEY

أضف المتغير في **الإعدادات ← CI/CD ← المتغيرات ** مع تمكين خيار "ملثم".


التحقق من صحة عند بدء التشغيل

تحقق دائمًا من وجود المفتاح وعمله قبل تشغيل خط الأنابيب الخاص بك:

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

الأخطاء الشائعة

خطأ خطر إصلاح
إلزام .env بـ Git تم الكشف عن المفتاح في تاريخ الريبو أضف .env إلى .gitignore قبل الالتزام الأول
طباعة مفتاح API في السجلات المفتاح مرئي في مجمعات السجل لا تقم أبدًا بتسجيل المفاتيح الكاملة - قم بإخفائها أو حذفها
الترميز الثابت في Dockerfile مفتاح مخبوز في طبقات الصورة استخدم ENV في وقت التشغيل، وليس في مراحل الإنشاء
مشاركة المفاتيح عبر chat/email تم اعتراض المفتاح أو تسريبه استخدم مدير الأسرار أو شارك عبر قناة آمنة

الأسئلة الشائعة

هل يجب علي تشفير ملف .env؟

بالنسبة للتنمية المحلية، فإن .gitignore كافٍ. للإنتاج، استخدم مديرًا سريًا سحابيًا (AWS Secrets Manager، وGoogle Secret Manager، وAzure Key Vault) بدلاً من ملفات .env.

ماذا لو كان مفتاحي ملتزمًا بالفعل بـ Git؟

قم بتدوير المفتاح على الفور في لوحة معلومات CaptchaAI. يظل المفتاح القديم في سجل Git قابلاً للوصول حتى بعد حذف الملف.

هل يمكنني استخدام مفاتيح متعددة في ملف .env واحد؟

نعم. استخدم قيمًا مفصولة بفواصل أو مفاتيح مرقمة:

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

قم بتأمين تكامل CaptchaAI الخاص بك من اليوم الأول

احصل على مفتاح API الخاص بك علىcaptchaai.com.


أدلة ذات صلة

التعليقات غير مفعّلة لهذا المقال.