Преизползване на прокси между заявки

Научете как да запазите същия изходящ proxy адрес при последващи requests, така че JavaScript рендирания, API извиквания и пагинирани извличания да идват от същото IP.

Защо да преизползвате proxy

Когато правите първоначален request към целта, FourA избира работещ proxy вместо вас. Всеки response съдържа ID на използвания proxy. Подайте това ID обратно в следващите requests и:

  • Последващите страници преминават през същия изход, така че session cookies и rate limits остават съгласувани спрямо целта.
  • Извличане с обхват по държава остава в рамките на вашия allowlist без нов избор.
  • Евтиният POST /api/single/ endpoint изпълнява повторно през proxy, за чието откриване вече сте платили, на цената на Single вместо Proxy.

Това proxy ID е непрозрачен base36 низ (нещо като A1B2C3). Никога не е чист IP адрес.

Къде се намира ID в response

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 извикването струва толкова, колкото изразходва неговата стълбица (ladder). Всяко последващо 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/ отново, за да опресните избора. Ново извикване може да избере различен exit и да обезсмисли pinning-а. Ако фиксираният exit спре да работи, изпълнете ново /api/proxy/ извикване, за да изберете нов, и след това продължете с него.

Pattern 3: Пропускане на компрометиран exit

Ако exit, който преди е работил, започне да връща откази или страници за верификация, укажете на FourA да го избягва при следващия избор.

{
  "maxTries": 5,
  "ignoreProxies": ["A1B2C3"],
  "request": { "method": "GET", "url": "https://example.com/data" }
}

ignoreProxies приема списък с proxy ID от предишни отговори. Работи при /api/proxy/ и /api/auto/. Списъкът се зачита при всеки вътрешен retry, така че единично извикване с ignoreProxies никога не избира компрометираните изходи.

Колко дълго остава активна фиксираната сесия

Самият изход съществува, докато съответното proxy е изправно, обикновено от минути до часове. Ако даден replay започне да връща проверки, блокирания или неочаквани пренасочвания, изходът вероятно е бил сменен или целевият сайт е анулирал оторизацията.

Две опции, когато това се случи:

  1. Ново /api/auto/ извикване за същия URL. Auto ще открие нова работеща сесия; премахнете предишните ID.
  2. Ново /api/proxy/ извикване с ignoreProxies: ["<burned-id>"], ако искате да продължите ръчното фиксиране.

Бисквитките за сесия от отговор на Auto също изтичат според графика на целевия сайт. Някои сайтове запазват валидността за часове; други за минути. Третирайте сесията като кеш, а не като постоянен token.

Когато дадено ID не може да се фиксира

Стойност в proxy може да върне три грешки 400 със следното значение:

Грешка Какво се е случило Какво да направите
Invalid proxy format Стойността не е ID, издадено от FourA. Суров proxy адрес попада тук. Изпратете точно непрозрачния низ от отговора.
Proxy not found ID е декодирано успешно, но вече не сочи към активен изход. Вземете нов изход от ново Auto или Proxy извикване.
Managed exit: this proxy id cannot be pinned to a request ID е за премиум изход, а премиум трафикът от вашия план за периода е изчерпан или планът ви не включва премиум изходи. Изпълнете извикването чрез POST /api/proxy/ и вземете избрания от него изход, или добавете премиум трафик и го фиксирайте отново.

Третата грешка се връща от ID, предоставено при успешно извикване, така че може да възникне без да сте допуснали грешка. Третирайте я като изтекла сесия: използвайте ново извикване за откриване вместо повторен опит със същото ID.

Чести грешки

  • Повторно използване на proxy ID между акаунти. Не споделяйте ID между акаунти: ID, което един акаунт може да фиксира, може да бъде отхвърлено за друг, например premium exit при план без premium трафик.
  • Опит за декодиране на ID. Низът base36 е непрозрачен. Не го парсвайте, не премахвайте символи и не го преобразувайте в малки букви. Предавайте го обратно дословно.
  • Фиксиране през exit с rate limit. Ако целевият сайт налага rate limit по IP, насочването на много заявки през един exit ще задейства блокирания по-бързо. При натоварвания с голям обем оставете Auto или Proxy да ротират през множество exits и фиксирайте само когато целевият сайт наистина го изисква.
  • Неволно фиксиране на premium exit. ID от извикване, обслужено от premium exit (exitClass: "premium" при Proxy), фиксира този premium exit. Всяко повторно извикване през него се отчита към вашия premium трафик, а отговорът съдържа X-FourA-Exit-Class: premium.
  • Изпращане на exitCountries при план без гео-таргетиране. Обхватът по държави е включен от план Startup нагоре. При план без него извикване, което изпраща exitCountries, се отхвърля с 403 и X-FourA-Limit: plan_limit_feature.
  • Игнориране на exitCountries при последващото извикване. Ако фиксирате scoped exit и след това извикате Proxy отново без exitCountries, последващата заявка може да мине през друга държава. Запазвайте параметъра за обхват при всяко извикване, което се нуждае от него.

Свързани

Обновено: 27 септември 2026 г.