Защитени сайтове
Съвременните уебсайтове използват усъвършенствано засичане на ботове. Това ръководство обяснява как FourA ви осигурява достъп до страници в сайтове, които проверяват кой прави заявката, и как да повишите процента си на успех.
Как работи засичането на ботове
Уебсайтовете използват няколко слоя защита:
- IP репутация: Центровете за данни и известните proxy адреси биват блокирани
- Fingerprinting на мрежово ниво: Всеки HTTP клиент има уникален подпис на handshake, който сайтовете могат да засекат
- Browser fingerprinting: JavaScript проверява за индикатори за headless браузър
- Поведенчески анализ: Модели на заявките, времеви интервали и навигационен поток
- Страници за верификация: визуална задача, която посетителят трябва да изпълни
Отговорът посочва системата, извършила проверката; Site checks ги изброява.
Най-бързият път: Auto
Ако все още не знаете нивото на защита, извикайте /api/auto/ с подниз за validate.data.accept, който се съдържа само в реалната страница. Auto преминава през съобразена с разходите стълбица (ротирано proxy, след това браузър през proxy; при forceProxy: false първо се изпълняват евтина директна проверка и директно браузърно рендиране) и спира на първото стъпало, което върне отговор, приет от вашите правила. При повторни извиквания към същия хост вместо това се преизползва топла сесия, така че вторият опит е евтин.
curl -X POST https://eu.api.foura.ai/api/auto/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://protected-site.com/product/42",
"validate": {"data": {"accept": ["Add to cart"]}}
}'
Auto разпознава стандартните challenge страници и продължава изпълнението, когато срещне такава. Вашият низ validate.data.accept улавя останалите: непозната страница за проверка, екран за вход или страница без необходимото ви съдържание. Вижте ръководството за Smart Fetch за пълните инструкции.
Как FourA помага на всяко ниво
Реалистични заявки на мрежово ниво
Единичният endpoint (POST /api/single/) генерира handshake характеристики, съвпадащи с тези на реален браузър. Сайтовете му отговарят както на браузър, без разхода на ресурси за стартиране на такъв.
Активирайте unblocker, за да добавите и реалистични browser headers (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding). unblocker е включен по подразбиране; задайте false само за да изпратите обикновен клиентски подпис.
{
"method": "GET",
"url": "https://protected-site.com/data",
"unblocker": true
}
Рендериране с реален браузър
Браузърният endpoint (POST /api/browser/) стартира пълен инстанс на браузъра Chrome. Той изпълнява JavaScript кода на страницата точно както браузърът на реален посетител. unblocker в Browser преминава проверките, които страницата изисква преди зареждане (Turnstile и сходни защити); оставете го включено, освен ако не искате да получите самата страница с предизвикателство.
Ротация на проксита
Прокси endpoint-ът (POST /api/proxy/) автоматично ротира жилищни (residential) и дата център проксита. Ако даден IP адрес бъде блокиран, следващият опит използва различен. Използвайте ignoreProxies при последващо извикване, за да пропуснете изходни точки (exits), които вече са изразходвани; използвайте maxTries (по подразбиране 5, макс. 90), за да контролирате броя на опитите.
Изходни точки с обхват по държава
Подайте exitCountries в /api/proxy/, за да ограничите избора до проксита, чиято видима за целта държава съвпада със стриктен списък с разрешени (allowlist). Стойностите са двубуквени кодове (["CZ", "GB"]), изчистени от интервали, с главни букви и дедупликирани. FourA никога не преминава автоматично към незаявена държава; ако текущият пул няма съвпадение, отговорът връща code: "no_eligible_proxy" с нормализирания обхват в details.exitCountries, така че да можете да опитате отново по-късно, без да смекчавате изискването. Ограничаването по държава е включено от план Startup нагоре. При план без тази функция, извикване, изпращащо exitCountries, се отхвърля с 403 и X-FourA-Limit: plan_limit_feature.
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": ["CZ", "GB"],
"request": {"method": "GET", "url": "https://target.example/pricing"}
}'
Върнатият response включва exitCountry, когато е поискан scoping. Проверете дали принадлежи към вашия allowlist, преди да се доверите на payload-а, след което използвайте повторно върнатия proxy ID при всяко последващо Browser извикване, така че рендирането на JavaScript да се извърши през същия exit.
FourA ви информира какво ви е блокирало
Не е необходимо да гадаете коя система е блокирала даден request. Когато дадена целева страница изпълни bot check, върнатият response посочва името й.
POST /api/single/иPOST /api/proxy/връщат обектdefense:defense.vendorе системата,defense.solvedпоказва дали проверката е премината, аdefense.presentизброява всичко разпознато за този response.POST /api/browser/връщаdefenseSolvedплюсdefenses.presentиdefenses.cleared.
{
"status": 200,
"data": "<!doctype html>...",
"defense": {
"vendor": "sgcaptcha",
"solved": true,
"present": ["sgcaptcha"],
"cookie": "_I_=<clearance>"
}
}
От това следват две правила:
solved: falseозначава, че тялото може да е challenge, а не самата страница. FourA никога не представя challenge страница като съдържание, така че проверявайте флага преди парсване.- Успешното решаване ви дава clearance. Когато
defense.cookieе наличен, изпратете го обратно катоCookieheader през същия изход със същия User-Agent и последващите заявки ще пропуснат проверката напълно.
FourA разпознава често срещаните системи за проверка, включително first-party проверките на eBay, Reddit, Amazon и Google Search. Разпознаването обхваща повече от изчистването: система, която можем да идентифицираме, но не и да изчистим, се отчита и никога не увеличава цената на заявката. Когато върнатата страница е страница за проверка на тази система, дори при HTTP 200, заявката не се таксува и X-FourA-Check-Page header посочва името ѝ. Вижте Проверки на сайтове за всяко поле, текущото разделение между изчистване и засичане, както и пример за повторно изпълнение.
Стратегия според нивото на защита
Неизвестна защита
Използвайте auto. Той първо тества с ниска цена и ескалира само доколкото целта го налага, така че плащате за откриването еднократно за хост.
Ниска защита (повечето сайтове)
Използвайте единичния endpoint с unblocker. Съвпадението на ниво протокол е достатъчно.
curl -X POST https://eu.api.foura.ai/api/single/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"method": "GET", "url": "https://news-site.com/article", "unblocker": true}'
Средна сложност: challenge страница или базова защитна стена
Използвайте endpoint-а за браузър, за да преминете през JavaScript проверките:
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://protected-site.com/data", "timeout_ms": 15000}'
Високо: проверки на поведението и пръстовия отпечатък
Използвайте proxy endpoint с множество опити за повторение:
curl -X POST https://eu.api.foura.ai/api/proxy/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"maxTries": 10,
"request": {
"method": "GET",
"url": "https://heavily-protected.com/prices",
"unblocker": true
}
}'
За страници с последователни проверки ("Just a moment", контролен панел за сигурност), при които се нуждаете от рендерираната страница след преминаване на проверката, вижте MCP Recipes. Рецептата "Protected page: proxy first, browser when JavaScript is needed" показва точния преход от proxy към browser.
Best Practices
Започнете с auto за непознати цели. Подайте правило
validate, оставете стълбицата да избере най-евтиното ниво и след това прочететеmeta.rungв отговора, за да видите кой engine е сработил. След като разберете, извиквайте директно този engine за повторен трафик.Преизползвайте успешната сесия. След извикване на auto, върнатият
session(proxy ID + cookies + userAgent) може да се използва повторно през/api/single/или/api/browser/за следващи страници на същия хост на цената на съответния endpoint: 2 кредита за Single сunblocker, 5 за Browser (10 за интерактивна страница).Спазвайте rate limits. Дори при ротация на proxy сървъри, изпращането на стотици заявки в секунда към един сайт ще задейства поведенческа защита. Разпределяйте вашите requests с интервал от поне 1 до 2 секунди.
Оставете
unblockerвключен. При Single и Proxy,unblocker: true(по подразбиране) изпраща реалистичен браузърен сигнатура и headers. При Browser включва модула за решаване на проверки. Изключвайте го само когато изрично изисквате обикновена клиентска сигнатура или сурова страница с проверка.Следете процента на успеваемост. Проверявайте метриките в Dashboard, за да следите успеваемостта си във времето. Внезапен спад обикновено означава, че целевият сайт е обновил защитата си.
Пропускайте компрометирани изходи. Ако извикване към
/api/proxy/или/api/auto/е върнало proxy ID, което впоследствие започне да се проваля, подайте го вignoreProxiesпри следващото извикване, за да може FourA да избере различен изход.Прочетете
defenseпреди повторен опит. Името на вендора показва дали си струва да опитате друг браузърен профил, дали ви е необходим пълен render или проверката изисква специализирана услуга за решаване.Променете използвания браузър. Някои цели приемат един браузър и отхвърлят друг. Задайте
browser,osилиversionпри Single и Proxy, и проверетеGET /api/profilesза актуалния каталог. Подробности има в endpoint reference.
Limits
Някои сценарии изискват допълнителна обработка извън API:
- Съдържание със защита чрез вход: FourA не управлява дълготрайни сесии вместо вас. Browser endpoint-ът приема
cookiesза всяка заявка; подавайте своите сесийни cookies сами. - Интерактивни задачи за верификация: FourA разпознава визуалните такива и ги докладва в
defense.present, но не ги попълва. Turnstile се обработва от Browser. - Съдържание, ограничено до определени държави: използвайте
exitCountriesв/api/proxy/, за да ограничите избора до разрешени държави. Сайтове, които допълнително ограничават по ISP или ASN (някои букмейкъри с локален лиценз, определени правителствени услуги), все още могат да блокират стандартни residential изходи; заявката връщаno_eligible_proxy, когато текущият пул няма съвпадащ изход. - Сайтове с правни ограничения: Винаги се уверявайте, че събирането на данни отговаря на условията за ползване на целевия сайт и приложимото законодателство.
Следващи стъпки
- Smart Fetch (Auto): Детайлен преглед на
/api/auto/ - Избор на правилния endpoint: Ръководство за избор на endpoints
- Чести проблеми: Отстраняване на грешки 403 и страници за верификация
- API Endpoints: Пълна документация на параметрите, включително
exitCountries - Проверки на сайтове: Полето
defense, списъкът със системи и clearance replay - MCP рецепти: Шаблони за работни процеси, включително веригата proxy-first-then-browser