Преизползване на прокси между заявки
Научете как да запазите същия изходен proxy за последващи заявки, така че изобразяването на JavaScript, извикванията на API и заявките със странициране да излизат от един и същ IP адрес.
Защо да използвате повторно proxy
Когато първоначално достигнете цел, FourA избира работещо proxy за вас. Всеки отговор включва използвания proxy ID. Подайте този ID обратно при последващи заявки и:
- Последващите страници преминават през същия изход, така че бисквитките за сесия (session cookies) и ограниченията на скоростта (rate limits) остават последователни за целта.
- Заявка с обхват за държава остава във вашия allowlist без нов избор.
- Евтиният
POST /api/single/endpoint се възпроизвежда през proxy, за чието откриване вече сте платили, на цената на Single вместо на Proxy.
Proxy ID е непрозрачен base36 низ (нещо като A1B2C3). Никога не е суров IP адрес.
Къде се намира ID в отговор
| Endpoint | Поле | Кога присъства |
|---|---|---|
POST /api/auto/ |
session.proxy |
Когато returnSession е true (по подразбиране) |
POST /api/single/ |
proxy (най-високо ниво) |
Само когато заявката съдържа поле proxy |
POST /api/proxy/ |
proxy (най-високо ниво) |
Винаги, при успех |
POST /api/browser/ |
proxy (най-високо ниво) |
Само когато заявката съдържа поле proxy |
За да вземете нов изход, без да го фиксирате, започнете с Auto или Proxy. И двете откриват работещ изход и връщат неговия ID за вас.
Модел 1: Auto открива, Single възпроизвежда
Най-добро, когато имате цел, която все още не познавате. Auto преминава през стъпките веднъж, след което Single използва повторно печелившата сесия за всяка последваща страница.
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"])
Извикването Auto струва толкова, колкото изразходва неговата стълбица. Всяко последващо извикване Single струва 2 кредита (Single с unblocker, по подразбиране).
Шаблон 2: Proxy открива, Browser рендира през същия изход
Използвайте това, когато целта трябва да вижда конкретна държава на изход и крайното съдържание изисква 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
}'
Не извиквайте /api/proxy/ отново, за да опресните избора. Ново извикване може да избере различен изход и да обезсмисли фиксирането. Ако фиксираният изход спре да работи, изпълнете ново извикване на /api/proxy/, за да изберете нов, след което продължете с него.
Шаблон 3: Пропускане на блокиран изход
Ако изход, който преди е работил, започне да връща блокирания или CAPTCHA, кажете на FourA да го избягва при следващия избор.
{
"maxTries": 5,
"ignoreProxies": ["A1B2C3"],
"request": { "method": "GET", "url": "https://example.com/data" }
}
ignoreProxies приема списък с proxy идентификатори от предишни response-и. Това работи за /api/proxy/ и /api/auto/. Списъкът се спазва при всеки вътрешен повторен опит, така че едно извикване с ignoreProxies никога не избира изгорелите изходи.
Колко дълго остава активна фиксираната сесия
Самият изход живее, докато базовият proxy е здрав, обикновено от минути до часове. Ако повторното изпълнение започне да връща предизвикателства, блокирания или неочаквани пренасочвания, изходът вероятно е бил ротиран или целта е опреснила своя clearance.
Има две опции, когато това се случи:
- Ново извикване на
/api/auto/за същия URL. Auto ще открие нова работеща сесия; отхвърлете предишните идентификатори. - Ново извикване на
/api/proxy/сignoreProxies: ["<burned-id>"], ако искате да продължите да фиксирате ръчно.
Сесийните cookies от Auto response също изтичат по график на целта. Някои сайтове обвързват достъпа за часове, а други за минути. Третирайте сесията като кеш, а не като дълготраен token.
Чести грешки
- Повторно използване на proxy ID в различни акаунти. Proxy идентификаторите са специфични за даден response. Подаването на ID от един API ключ към друг не гарантира, че ще се разреши до същия изход.
- Опит за декодиране на ID. Низът в base36 е непрозрачен. Не го парсвайте, не премахвайте символи, не го правете с малки букви. Върнете го точно както е получено.
- Фиксиране през изход с rate limit. Ако целта прилага rate limit на IP адрес, насочването на много request-и през един изход ще предизвика блокирания по-бързо. За натоварвания с голям обем оставете Auto или Proxy да ротират през много изходи и фиксирайте само там, където целта наистина го изисква.
- Игнориране на
exitCountriesпри последващи действия. Ако фиксирате изход с обхват и след това извикате Proxy отново безexitCountries, последващото действие може да мине през различна държава. Запазете обхвата при всяко извикване, което се нуждае от него.
Свързани
- API Endpoints: Пълна справка за параметри и response-и
- Smart Fetch (Auto): Как Auto изгражда сесията, която възпроизвеждате
- Handling Anti-Bot Protection: Кога фиксирането помага и кога ротацията е по-добра
- Common Issues:
no_eligible_proxyи други proxy грешки