Hướng Dẫn API

Danh sách trắng IP CaptchaAI và bảo mật khóa API

Khóa API CaptchaAI kiểm soát quyền truy cập vào số dư của bạn. Khóa bị rò rỉ có nghĩa là việc sử dụng trái phép và cạn kiệt tiền. Hướng dẫn này bao gồm danh sách IP trắng, lưu trữ an toàn và kiểm soát truy cập.


Các mối đe dọa chính API

Exposed API key:
  ├── Leaked in Git repository
  ├── Hardcoded in client-side code
  ├── Shared in documentation
  └── Visible in logs

Impact:
  ├── Balance drained by unauthorized users
  ├── Usage spikes from abuse
  └── Key disabled by service provider

Lưu trữ khóa an toàn

Không bao giờ khóa mã cứng

# BAD — key in source code
API_KEY = "abc123def456"  # DO NOT DO THIS

# GOOD — environment variable
import os
API_KEY = os.environ["CAPTCHAAI_API_KEY"]

# GOOD — .env file (not committed to Git)
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.environ["CAPTCHAAI_API_KEY"]

Tệp .env

# .env (add to .gitignore!)
CAPTCHAAI_API_KEY=your_api_key_here

.gitignore

# Always ignore .env files
.env
.env.local
.env.production

Cấu hình dựa trên môi trường

import os

class CaptchaConfig:
    """Load CaptchaAI config from environment."""

    def __init__(self):
        self.api_key = os.environ.get("CAPTCHAAI_API_KEY")
        if not self.api_key:
            raise EnvironmentError(
                "CAPTCHAAI_API_KEY not set. "
                "Set it in your environment or .env file."
            )
        self.base_url = os.environ.get(
            "CAPTCHAAI_URL", "https://ocr.captchaai.com"
        )

    def validate(self):
        """Verify the API key works."""
        import requests
        resp = requests.get(f"{self.base_url}/res.php", params={
            "key": self.api_key,
            "action": "getbalance",
            "json": 1,
        }, timeout=10)
        data = resp.json()
        if data.get("status") != 1:
            raise RuntimeError(f"Invalid API key: {data.get('request')}")
        return float(data["request"])

# Usage
config = CaptchaConfig()
balance = config.validate()
print(f"Key valid, balance: ${balance:.2f}")

Xoay phím

Xoay khóa API định kỳ:

import os
import datetime

class KeyManager:
    """Manage API key rotation."""

    def __init__(self):
        self.primary_key = os.environ.get("CAPTCHAAI_API_KEY")
        self.secondary_key = os.environ.get("CAPTCHAAI_API_KEY_BACKUP")
        self.active_key = self.primary_key

    def get_key(self):
        return self.active_key

    def rotate(self):
        """Switch to secondary key."""
        if self.secondary_key:
            self.active_key = self.secondary_key
            print("Rotated to secondary key")
        else:
            print("No secondary key configured")

    def test_key(self, key):
        """Verify a key is valid."""
        import requests
        resp = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": key, "action": "getbalance", "json": 1,
        }, timeout=10)
        return resp.json().get("status") == 1

# Usage
keys = KeyManager()

# If primary fails, rotate to secondary
if not keys.test_key(keys.get_key()):
    keys.rotate()

Yêu cầu xác thực

Xác thực các yêu cầu trước khi gửi để ngăn chặn việc vô tình làm lộ khóa:

import requests
import logging

logger = logging.getLogger(__name__)

class SecureSolver:
    """Solver with security best practices."""

    def __init__(self, api_key):
        self.api_key = api_key
        self.base = "https://ocr.captchaai.com"

    def solve(self, method, **params):
        # Validate inputs
        self._validate_params(method, params)

        data = {"key": self.api_key, "method": method, "json": 1}
        data.update(params)

        # Log without exposing key
        logger.info(
            "Submitting %s solve for %s",
            method, params.get("pageurl", "unknown"),
        )

        resp = requests.post(
            f"{self.base}/in.php", data=data, timeout=30,
        )
        return resp.json()

    def _validate_params(self, method, params):
        """Prevent common security mistakes."""
        # Ensure pageurl is a valid URL
        pageurl = params.get("pageurl", "")
        if pageurl and not pageurl.startswith(("http://", "https://")):
            raise ValueError(f"Invalid pageurl: {pageurl}")

        # Ensure method is valid
        valid_methods = {
            "userrecaptcha", "turnstile", "geetest",
            "base64", "post", "bls", "cloudflare_challenge",
        }
        if method not in valid_methods:
            raise ValueError(f"Unknown method: {method}")

Ghi nhật ký mà không để lộ chìa khóa

import logging
import re

logger = logging.getLogger(__name__)

class SafeFormatter(logging.Formatter):
    """Redact API keys from log messages."""

    KEY_PATTERN = re.compile(r'[a-f0-9]{32}', re.IGNORECASE)

    def format(self, record):
        msg = super().format(record)
        return self.KEY_PATTERN.sub("[REDACTED]", msg)

# Configure safe logging
handler = logging.StreamHandler()
handler.setFormatter(SafeFormatter("%(levelname)s: %(message)s"))
logger.addHandler(handler)
logger.setLevel(logging.INFO)

# Key is automatically redacted in logs
logger.info(f"Using key: abc123def456ghi789jkl012mno345pq")
# Output: INFO: Using key: [REDACTED]

Bí mật Docker

Đối với việc triển khai trong container:

# Dockerfile — DO NOT embed keys here
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install requests
CMD ["python", "solver.py"]
# docker-compose.yml
services:
  solver:
    build: .
    environment:

      - CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}
    # Or use Docker secrets:
    secrets:

      - captchaai_key

secrets:
  captchaai_key:
    file: ./secrets/captchaai_key.txt

CI/CD Bảo mật

Hành động GitHub

# .github/workflows/test.yml
jobs:
  test:
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v4
      - name: Run tests
        env:
          CAPTCHAAI_API_KEY: ${{ secrets.CAPTCHAAI_API_KEY }}
        run: python test_solver.py

Không bao giờ ghi lại hoặc lặp lại bí mật trong đầu ra CI.


Khắc phục sự cố

Vấn đề Nguyên nhân Cách xử lý
ERROR_WRONG_USER_KEY Khóa không chính xác hoặc đã hết hạn Xác minh khóa từ bảng điều khiển CaptchaAI
Mất cân bằng bất ngờ Chìa khóa bị rò rỉ hoặc chia sẻ Xoay chìa khóa ngay lập tức, kiểm tra quyền truy cập
Khóa hoạt động cục bộ nhưng không hoạt động trong CI Biến môi trường chưa được đặt Thêm vào bí mật CI/CD
Chìa khóa trong lịch sử Git Tệp .env đã cam kết Xoay phím, thêm .env vào .gitignore, sử dụng git filter-branch

Danh sách kiểm tra bảo mật

Thực hành Trạng thái
Khóa API trong biến môi trường â˜
.env đã được thêm vào .gitignore â˜
Không có khóa trong mã nguồn â˜
Các khóa được sắp xếp lại trong nhật ký â˜
CI/CD sử dụng trình quản lý bí mật â˜
Lịch trình luân chuyển chìa khóa â˜
Giám sát số dư đang hoạt động â˜

Câu hỏi thường gặp

Điều gì xảy ra nếu khóa API của tôi bị rò rỉ?

Tạo khóa mới ngay lập tức từ bảng điều khiển CaptchaAI. Cập nhật tất cả các ứng dụng bằng key cũ. Kiểm tra số dư của bạn để phát hiện việc sử dụng trái phép.

Tôi có thể hạn chế khóa API theo địa chỉ IP không?

Kiểm tra bảng điều khiển CaptchaAI của bạn để biết cài đặt hạn chế IP. Nếu có, chỉ đưa IP máy chủ của bạn vào danh sách trắng để ngăn chặn việc sử dụng trái phép.

Tôi có nên sử dụng các khóa khác nhau để phát triển và sản xuất không?

Vâng. Sử dụng các khóa riêng biệt cho nhà phát triển, dàn dựng và sản xuất. Điều này giới hạn bán kính vụ nổ nếu khóa dev bị rò rỉ.


Hướng dẫn liên quan


Bảo vệ khoản đầu tư của bạn —bảo mật khóa API CaptchaAI của bạnHôm nay.

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