안티 봇 방어 처리
최신 웹사이트는 고급 봇 탐지 기능을 사용합니다. 이 가이드는 FourA가 안티 봇 시스템을 처리하는 방법과 성공률을 극대화하는 방법을 설명합니다.
봇 탐지 작동 방식
웹사이트는 여러 계층의 보호 기능을 사용합니다.
- IP 평판: 데이터 센터 및 알려진 proxy 주소가 차단됩니다.
- 와이어 핑거프린팅: 각 HTTP 클라이언트는 사이트에서 감지할 수 있는 고유한 핸드셰이크 서명을 가지고 있습니다.
- 브라우저 핑거프린팅: JavaScript가 headless 브라우저 지표를 확인합니다.
- 행동 분석: request 패턴, 타이밍 및 탐색 흐름
- CAPTCHA: 최후의 방어선으로 시각적 챌린지 사용
일반적인 안티 봇 제공업체로는 Cloudflare, DataDome, PerimeterX 및 Akamai Bot Manager가 있습니다.
가장 빠른 경로: Auto
아직 보호 수준을 모르는 경우 실제 페이지에만 있는 validate.data.accept 부분 문자열을 사용하여 /api/auto/을(를) 호출하십시오. Auto는 비용을 고려한 단계(저렴한 프로브, 회전된 proxy, 브라우저 렌더링, proxy를 통한 브라우저)를 거치며 규칙이 허용하는 response를 반환하는 첫 번째 단계에서 중지합니다. 동일한 호스트에 대한 반복 호출 시에는 웜 세션이 대신 재생되므로 두 번째 요청은 저렴하게 처리됩니다.
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"]}}
}'
validate.data.accept이 없으면 auto는 실제 200 응답과 상태 코드 200으로 반환된 챌린지 전면 페이지를 구별할 수 없어 챌린지를 성공으로 반환할 수 있습니다. 전체 과정은 Smart Fetch 가이드를 참조하십시오.
각 계층에서 FourA가 지원하는 방법
실제와 같은 와이어 레벨 요청
단일 endpoint(POST /api/single/)는 실제 브라우저와 일치하는 핸드셰이크 특성을 발생시킵니다. 이를 통해 전체 브라우저를 구동하는 오버헤드 없이 가장 일반적인 와이어 레벨 검사를 통과할 수 있습니다.
실제 브라우저 headers(User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding)를 주입하려면 unblocker를 활성화하십시오. unblocker은 기본적으로 켜져 있으며, 일반 클라이언트 서명만 전송하려면 false을 설정하십시오.
{
"method": "GET",
"url": "https://protected-site.com/data",
"unblocker": true
}
실제 브라우저 렌더링
브라우저 endpoint (POST /api/browser/)는 전체 Chrome 브라우저 인스턴스를 실행합니다. 탐지 방지 패치와 결합되어 대부분의 JavaScript 기반 핑거프린트 검사를 통과합니다. 브라우저의 unblocker는 자동 방어 솔버(Turnstile 통과 및 유사한 게이트)를 트리거합니다. 원본 챌린지 페이지를 돌려받지 않으려면 켜두십시오.
proxy 로테이션
proxy endpoint (POST /api/proxy/)는 가정용 및 데이터 센터 proxy를 자동으로 순환합니다. 하나의 IP가 차단되면 다음 시도에서는 다른 IP를 사용합니다. 후속 호출에서 ignoreProxies를 사용하여 이미 소진된 출구를 건너뛰십시오. maxTries (기본값 5, 최대 90)를 사용하여 작동 강도를 제어할 수 있습니다.
국가 범위 출구
엄격한 허용 목록과 대상에 표시되는 국가가 일치하는 proxy로 선택을 제한하려면 /api/proxy/에 exitCountries을 전달하십시오. 값은 두 자리 문자 코드 (["CZ", "GB"])이며 공백이 제거되고 대문자로 변환되며 중복이 제거됩니다. FourA는 요청하지 않은 국가로 대체하지 않습니다. 현재 풀에 일치하는 항목이 없는 경우, 요구 사항을 완화하지 않고 나중에 다시 시도할 수 있도록 response는 details.exitCountries에 정규화된 범위와 함께 code: "no_eligible_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": ["CZ", "GB"],
"request": {"method": "GET", "url": "https://target.example/pricing"}
}'
스코핑이 요청된 경우 응답에 exitCountry이 포함됩니다. 페이로드를 신뢰하기 전에 허용 목록(allowlist)에 속하는지 확인한 다음, 동일한 출구를 통해 JavaScript 렌더링이 발생하도록 후속 Browser 호출에서 반환된 proxy ID를 재사용하십시오.
FourA는 차단 원인을 알려줍니다
어떤 시스템이 요청을 차단했는지 추측할 필요가 없습니다. 대상이 봇 검사를 실행하면 응답에 해당 이름이 명시됩니다.
POST /api/single/및POST /api/proxy/는defense객체를 반환합니다:defense.vendor은 시스템이고,defense.solved은 검사 통과 여부를 나타내며,defense.present은 해당 응답에서 인식된 모든 항목을 나열합니다.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플래그는 본문이 페이지가 아니라 챌린지일 수 있음을 의미합니다. FourA는 해결되지 않은 챌린지를 콘텐츠로 위장하지 않으므로 파싱하기 전에 플래그를 확인하십시오.- 해결 시 클리어런스를 얻게 됩니다.
defense.cookie가 있는 경우, 동일한 User-Agent를 사용하는 동일한 exit에Cookieheader로 다시 전송하면 후속 request는 검사를 완전히 건너뜁니다.
FourA는 Cloudflare, SiteGround, DataDome, PerimeterX, Akamai, Incapsula, AWS WAF, hCaptcha, reCAPTCHA 및 eBay 자체 챌린지를 인식합니다. 인식은 해결보다 범위가 더 넓습니다. 이름은 식별할 수 있지만 해결할 수 없는 시스템은 보고되며 request 비용에 영향을 주지 않습니다. 모든 필드, 현재의 해결 대 탐지 구분, 그리고 리플레이 예제는 Anti-Bot Defenses 문서를 참조하십시오.
보호 수준별 전략
알 수 없는 보호
auto를 사용하십시오. 저렴한 방법으로 먼저 조사하고 대상이 강제하는 수준까지만 에스컬레이션하므로, 호스트당 한 번만 탐색 비용을 지불하면 됩니다.
낮은 보호 (대부분의 사이트)
unblocker과 함께 단일 endpoint를 사용하십시오. 와이어 레벨 일치로 충분합니다.
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}'
중간 수준 보호 (Cloudflare, 기본 WAF)
브라우저 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}'
높은 보호 수준 (DataDome, PerimeterX)
여러 번 재시도하여 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
}
}'
챌린지 통과 후 렌더링된 페이지가 필요한 체인 WAF 챌린지(Cloudflare "Just a moment", Vercel Security Checkpoint, Akamai Bot Manager)의 경우 MCP 레시피를 참조하십시오. "Protected page: proxy first, browser when JavaScript is needed" 레시피는 정확한 proxy 후 browser 핸드오프를 보여줍니다.
모범 사례
알 수 없는 타겟의 경우 auto로 시작합니다.
validaterule을 전달하여 ladder가 가장 저렴한 rung을 선택하도록 한 다음, response에서meta.rung를 확인하여 어떤 엔진이 작동했는지 파악하십시오. 이를 확인한 후 반복 트래픽에 대해서는 해당 엔진을 직접 호출합니다.성공한 세션을 재사용합니다. auto 호출 후 반환된
session(proxy ID + cookies + userAgent)는/api/single/또는/api/browser/를 통해 동일한 호스트의 후속 페이지에 Single 가격으로 재사용할 수 있습니다.rate limit을 준수합니다. proxy 로테이션을 사용하더라도 단일 사이트에 초당 수백 개의 request를 보내면 행동 탐지가 트리거됩니다. request 사이에 최소 1~2초의 간격을 둡니다.
unblocker를 켜두십시오. Single, Proxy, Browser request의 경우unblocker: true(기본값)는 사실적인 브라우저 header를 자동으로 주입합니다. 일반 클라이언트 서명이나 원시 챌린지 페이지가 특별히 필요한 경우에만 이 기능을 끕니다.성공률을 모니터링합니다. 대시보드 지표를 확인하여 시간 경과에 따른 성공률을 추적하십시오. 갑작스러운 성공률 하락은 대개 타겟 사이트가 보호 기능을 업데이트했음을 의미합니다.
차단된 종료 노드를 건너뜁니다.
/api/proxy/또는/api/auto/호출에서 반환된 proxy ID가 실패하기 시작하면, 다음 호출 시ignoreProxies에 이를 전달하여 FourA가 다른 종료 노드를 선택하도록 하십시오.재시도하기 전에
defense를 읽으십시오. 벤더 이름은 다른 브라우저 프로필을 시도해 볼 가치가 있는지, 전체 렌더링이 필요한지, 또는 솔버 서비스 없이는 통과할 수 없는 검사인지 알려줍니다.제시할 브라우저를 변경합니다. 일부 타겟은 특정 브라우저는 수락하고 다른 브라우저는 거부합니다. Single 및 Proxy에서
browser,os, 또는version를 설정하고, 현재 카탈로그에 대해서는GET /api/profiles를 확인하십시오. 자세한 내용은 endpoint 참조에 있습니다.
FourA가 우회할 수 없는 항목
일부 시나리오는 API 외부에서 추가 처리가 필요합니다:
- 로그인 보호 콘텐츠: FourA는 장기 로그인을 관리하지 않습니다. Browser endpoint는 요청당
cookies을 허용하므로, 세션 cookie를 직접 전달해야 합니다. - 대화형 CAPTCHA: reCAPTCHA 및 hCaptcha는 해결 서비스가 필요합니다. FourA는 두 가지 모두 인식하고
defense.present에 보고하지만, 직접 해결하지는 않습니다. Turnstile은 Browser에서 처리됩니다. - 지역 제한 콘텐츠:
/api/proxy/의exitCountries를 사용하여 허용된 국가로 선택을 고정하세요. ISP나 ASN으로 추가 제한을 두는 사이트(일부 국가 라이선스 북메이커, 특정 정부 서비스)는 여전히 일반 주거용 출구를 차단할 수 있습니다. 현재 풀에 일치하는 출구가 없으면 요청은no_eligible_proxy을 반환합니다. - 법적 제한이 있는 사이트: 데이터 수집 시 대상 사이트의 서비스 약관 및 관련 법률을 항상 준수해야 합니다.
다음 단계
- Smart Fetch (Auto):
/api/auto/심층 분석 - 올바른 Endpoint 선택: endpoint 결정 가이드
- 일반적인 문제: 403 오류 및 CAPTCHA 차단 해결
- API Endpoints:
exitCountries를 포함한 전체 매개변수 참조 - 안티 봇 방어:
defense필드, 공급업체 목록 및 클리어런스 재생 - MCP 레시피: proxy-first-then-browser 체인을 포함한 워크플로 템플릿