Tái sử dụng Proxy cho nhiều Request
Tìm hiểu cách giữ nguyên lối ra proxy trong các yêu cầu tiếp theo, để việc kết xuất JavaScript, các lệnh gọi API và các lần tìm nạp được phân trang đều đi ra từ cùng một IP.
Tại sao nên tái sử dụng Proxy
Khi bạn gửi yêu cầu đầu tiên đến một mục tiêu, FourA sẽ chọn một proxy đang hoạt động cho bạn. Mọi phản hồi đều bao gồm proxy ID đã được sử dụng. Hãy truyền lại ID đó vào các yêu cầu sau và:
- Các trang tiếp theo sẽ đi qua cùng một lối ra, do đó các cookie phiên và rate limit vẫn nhất quán với mục tiêu.
- Việc tìm nạp trong phạm vi quốc gia vẫn nằm trong allowlist của bạn mà không cần chọn lại.
- endpoint
POST /api/single/giá rẻ sẽ phát lại qua một proxy mà bạn đã trả phí để khám phá, với chi phí của Single thay vì chi phí của Proxy.
Proxy ID là một chuỗi base36 mờ (tương tự như A1B2C3). Không bao giờ là một IP thô.
Vị trí của ID trong Phản hồi
| Endpoint | Trường | Khi nào xuất hiện |
|---|---|---|
POST /api/auto/ |
session.proxy |
Khi returnSession là true (mặc định) |
POST /api/single/ |
proxy (cấp cao nhất) |
Chỉ khi yêu cầu đã cung cấp trường proxy |
POST /api/proxy/ |
proxy (cấp cao nhất) |
Luôn luôn, khi thành công |
POST /api/browser/ |
proxy (cấp cao nhất) |
Chỉ khi yêu cầu đã cung cấp trường proxy |
Để lấy một lối ra mới mà không ghim, hãy bắt đầu với Auto hoặc Proxy. Cả hai đều khám phá một lối ra đang hoạt động và trả về ID của nó cho bạn.
Mẫu 1: Auto khám phá, Single phát lại
Tốt nhất khi bạn có một mục tiêu mà bạn chưa biết rõ. Auto đi qua thang đo một lần, sau đó Single tái sử dụng phiên đã thắng cho mọi trang tiếp theo.
import requests
API = "https://eu.api.foura.ai"
H = {"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"}
# Step 1: discover a working exit with Auto.
r = requests.post(f"{API}/api/auto/", headers=H, json={
"url": "https://example.com/product/42",
"validate": {"data": {"accept": ["Add to cart"]}}
}).json()
session = r["session"]
proxy = session["proxy"]
user_agent = session["userAgent"]
# Step 2: paginate with Single, reusing the same exit and User-Agent.
for sku in ("43", "44", "45"):
p = requests.post(f"{API}/api/single/", headers=H, json={
"method": "GET",
"url": f"https://example.com/product/{sku}",
"proxy": proxy,
"headers": [["User-Agent", user_agent]],
}).json()
print(sku, p["status"])
Lệnh gọi Auto có chi phí bằng với những gì ladder của nó tiêu thụ. Mỗi lệnh gọi Single tiếp theo tốn 2 credit (Single với unblocker, mặc định).
Mẫu 2: Proxy khám phá, Browser kết xuất qua cùng một exit
Sử dụng mẫu này khi mục tiêu phải thấy một quốc gia exit cụ thể và nội dung cuối cùng cần JavaScript.
# Step 1: pick a country-scoped exit with Proxy.
curl -X POST https://eu.api.foura.ai/api/proxy/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"maxTries": 5,
"exitCountries": ["FR", "GB"],
"request": {"method": "GET", "url": "https://example.com/pricing"}
}'
# Response includes: "proxy": "A1B2C3", "exitCountry": "FR"
# Step 2: render the JS-heavy page through THAT exit.
curl -X POST https://eu.api.foura.ai/api/browser/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/pricing",
"proxy": "A1B2C3",
"timeout_ms": 20000
}'
Không gọi lại /api/proxy/ để làm mới lựa chọn. Một lệnh gọi mới có thể chọn một exit khác và làm mất tác dụng của việc ghim. Nếu exit đã ghim ngừng hoạt động, hãy chạy một lệnh gọi /api/proxy/ mới để chọn exit mới, sau đó tiếp tục với exit đó.
Mẫu 3: Bỏ qua một exit đã bị chặn
Nếu một exit từng hoạt động bắt đầu trả về lỗi chặn hoặc CAPTCHA, hãy yêu cầu FourA bỏ qua nó trong lần lựa chọn tiếp theo.
{
"maxTries": 5,
"ignoreProxies": ["A1B2C3"],
"request": { "method": "GET", "url": "https://example.com/data" }
}
ignoreProxies chấp nhận danh sách các ID proxy từ các response trước đó. Nó hoạt động trên /api/proxy/ và /api/auto/. Danh sách này được tuân thủ trên mỗi lần thử lại nội bộ, vì vậy một lệnh gọi duy nhất với ignoreProxies không bao giờ chọn các exit đã bị hỏng.
Pinned Session Tồn Tại Trong Bao Lâu
Bản thân exit tồn tại chừng nào proxy cơ bản còn hoạt động tốt, thường là vài phút đến vài giờ. Nếu việc phát lại bắt đầu trả về các challenge, block hoặc các redirect không mong muốn, exit có thể đã được luân chuyển hoặc mục tiêu đã làm mới clearance của nó.
Có hai lựa chọn khi điều đó xảy ra:
- Lệnh gọi
/api/auto/mới cho cùng một URL. Auto sẽ khám phá một session mới đang hoạt động; hãy bỏ các ID trước đó. - Lệnh gọi
/api/proxy/mới vớiignoreProxies: ["<burned-id>"]nếu bạn muốn tiếp tục ghim theo cách thủ công.
Các session cookie từ Auto response cũng hết hạn theo lịch trình riêng của mục tiêu. Một số trang web ràng buộc clearance trong nhiều giờ, những trang khác trong vài phút. Hãy coi session này như một bộ nhớ cache, không phải là một token lâu bền.
Các Lỗi Phổ Biến
- Tái sử dụng một ID proxy trên nhiều tài khoản. Các ID proxy là định danh cho từng response. Việc truyền một ID từ khóa API này sang khóa API khác không được đảm bảo sẽ phân giải đến cùng một exit.
- Cố gắng giải mã ID. Chuỗi base36 là opaque (mờ đục). Đừng phân tích cú pháp, đừng xóa bớt ký tự, đừng viết thường nó. Hãy truyền lại nó nguyên văn.
- Ghim qua một exit bị rate limit. Nếu mục tiêu áp dụng rate limit trên mỗi IP, việc chuyển nhiều request qua một exit sẽ kích hoạt các block nhanh hơn. Đối với khối lượng công việc lớn, hãy để Auto hoặc Proxy luân chuyển qua nhiều exit và chỉ ghim khi mục tiêu thực sự yêu cầu điều đó.
- Bỏ qua
exitCountriestrong các lệnh gọi tiếp theo. Nếu bạn ghim một exit đã được giới hạn và sau đó gọi lại Proxy mà không cóexitCountries, lệnh gọi tiếp theo có thể đi qua một quốc gia khác. Hãy giữ phạm vi trên mỗi lệnh gọi cần thiết.
Tài Liệu Liên Quan
- API Endpoints: Tham chiếu đầy đủ về tham số và response
- Smart Fetch (Auto): Cách Auto xây dựng session bạn phát lại
- Handling Anti-Bot Protection: Khi nào ghim có ích và khi nào luân chuyển tốt hơn
- Common Issues:
no_eligible_proxyvà các lỗi proxy khác