Khóa API mã hóa cứng trong mã nguồn có nghĩa là bất kỳ ai có quyền truy cập vào kho lưu trữ - hoặc bất kỳ ai tìm thấy mã của bạn trên kho lưu trữ công khai - đều có khóa của bạn. Các biến môi trường giúp thông tin đăng nhập không nằm trong mã, kiểm soát phiên bản và nhật ký.
Tệp .env (phát triển cục bộ)
Tạo tệp .env trong thư mục gốc dự án của bạn:
CAPTCHAAI_API_KEY=your_actual_api_key_here
Thêm nó vào .gitignore ngay lập tức:
# .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);
Biến môi trường hệ thống
Đặt biến ở cấp hệ điều hành thay vì sử dụng tệp .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")
Docker
Biến môi trường trong docker chạy
docker run -e CAPTCHAAI_API_KEY="your_key" my-scraper
Docker Soạn
# docker-compose.yml
services:
scraper:
image: my-scraper
environment:
- CAPTCHAAI_API_KEY=${CAPTCHAAI_API_KEY}
${CAPTCHAAI_API_KEY} tham chiếu biến môi trường của máy chủ - khóa không bao giờ xuất hiện trong tệp soạn thảo.
Bí mật của Docker (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
Đọc trong mã:
with open("/run/secrets/captchaai_key") as f:
API_KEY = f.read().strip()
Đường ống CI/CD
Hành động 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 }}
Thêm bí mật vào Cài đặt -> Bí mật và biến -> Hành động -> Bí mật kho lưu trữ mới.
CI GitLab
# .gitlab-ci.yml
scrape:
script:
- python scraper.py
variables:
CAPTCHAAI_API_KEY: $CAPTCHAAI_API_KEY
Thêm biến trong Cài đặt -> CI/CD -> Biến với tùy chọn "Masked" được bật.
Xác thực khi khởi động
Luôn xác thực rằng khóa tồn tại và hoạt động trước khi chạy quy trình của bạ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}")
Những lỗi thường gặp
| sai lầm | Rủi ro | sửa chữa |
|---|---|---|
Cam kết .env với Git |
Khóa được hiển thị trong lịch sử repo | Thêm .env vào .gitignore trước lần xác nhận đầu tiên |
| In khóa API trong nhật ký | Khóa hiển thị trong trình tổng hợp nhật ký | Không bao giờ ghi lại toàn bộ khóa - che dấu hoặc bỏ qua chúng |
| Mã hóa cứng trong Dockerfile | Chìa khóa được nướng thành các lớp hình ảnh | Sử dụng ENV khi chạy, không phải trong giai đoạn xây dựng |
| Chia sẻ khóa qua chat/email | Khóa bị chặn hoặc bị rò rỉ | Sử dụng trình quản lý bí mật hoặc chia sẻ qua kênh bảo mật |
Câu hỏi thường gặp
Tôi có nên mã hóa tệp .env không?
Để phát triển địa phương, .gitignore là đủ. Để sản xuất, hãy sử dụng trình quản lý bí mật trên đám mây (AWS Secrets Manager, Google Secret Manager, Azure Key Vault) thay vì tệp .env.
Điều gì xảy ra nếu khóa của tôi đã được cam kết với Git?
Xoay phím ngay lập tức trong bảng điều khiển CaptchaAI của bạn. Khóa cũ trong lịch sử Git vẫn có thể truy cập được ngay cả sau khi xóa tệp.
Tôi có thể sử dụng nhiều khóa trong một tệp .env không?
Vâng. Sử dụng các giá trị được phân tách bằng dấu phẩy hoặc các khóa được đánh số:
CAPTCHAAI_KEYS=key1,key2,key3
keys = os.environ["CAPTCHAAI_KEYS"].split(",")
Bảo mật tích hợp CaptchaAI của bạn ngay từ ngày đầu tiên
Nhận khóa API của bạn tạicaptchaai.com.