AnyCrawl

프록시 설정

AnyCrawl의 URL 기반 프록시 라우팅 구성

프록시 설정

AnyCrawl은 URL 패턴에 따라 유연한 프록시 라우팅을 지원합니다. 웹사이트나 API 엔드포인트마다 서로 다른 프록시를 구성할 수 있습니다.

프록시 모드

AnyCrawl은 API 요청에서 지정할 수 있는 네 가지 프록시 모드를 지원합니다.

모드설명
auto기본 프록시와 스텔스 프록시 중 자동 선택. 기본 프록시가 사용 가능하면 우선 사용하고, 사용 불가이거나 재시도/실패 시 스텔스로 업그레이드/폴백합니다.
baseANYCRAWL_PROXY_URL에 설정된 프록시 사용(기본값)
stealthANYCRAWL_PROXY_STEALTH_URL에 설정된 프록시 사용(일반적으로 레지덴셜·프리미엄 프록시)
사용자 지정 URL전체 프록시 URL 문자열(예: http://user:pass@proxy:8080). 응답에서는 custom으로 반환됩니다.

사용 예

{
    "url": "https://example.com",
    "engine": "playwright",
    "proxy": "auto"
}
{
    "url": "https://example.com",
    "engine": "playwright",
    "proxy": "stealth"
}
{
    "url": "https://example.com",
    "engine": "playwright",
    "proxy": "http://custom-proxy:8080"
}

타임아웃 동작(Scrape API)

  • 요청 수준의 timeout이 항상 최우선입니다.
  • proxystealth 또는 auto이고 timeout을 지정하지 않으면 AnyCrawl은 ANYCRAWL_STEALTH_TIMEOUT_MS(기본값: 120000)를 사용합니다.
  • base 모드이거나 사용자 지정 프록시 URL이며 timeout을 명시하지 않은 경우 AnyCrawl은 60000을 사용합니다.

구성 방법

방법 1: 단순 프록시 구성(ANYCRAWL_PROXY_URL)

모든 요청에 동일한 프록시만 쓰면 되는 경우 ANYCRAWL_PROXY_URL 환경 변수를 설정합니다.

# 단일 프록시
export ANYCRAWL_PROXY_URL=http://username:password@proxy.example.com:8080

# 여러 프록시(티어 모드)
export ANYCRAWL_PROXY_URL=http://proxy1:8080,http://proxy2:8080,http://proxy3:8080

여러 프록시를 쉼표로 제공하면 AnyCrawl은 티어(계층) 프록시 전략을 사용합니다.

  • 모든 요청은 첫 번째 프록시(티어 0)로 시작합니다.
  • 특정 도메인에서 프록시가 실패하면 해당 도메인에 대해 다음 틀로 자동 전환합니다.
  • 지능형 페일오버와 프록시 사용 최적화가 가능합니다.

URL 기반 라우팅이 필요 없을 때 가장 단순한 구성입니다.

방법 2: 고급 구성 파일(ANYCRAWL_PROXY_CONFIG)

URL 기반 프록시 라우팅을 쓰려면 JSON 구성 파일(예: proxy-config.json)을 만들고 ANYCRAWL_PROXY_CONFIG 환경 변수에 경로를 지정합니다.

ANYCRAWL_PROXY_CONFIG=/path/to/proxy-config.json

참고: ANYCRAWL_PROXY_URLANYCRAWL_PROXY_CONFIG를 모두 설정하면 구성 파일 규칙이 우선하고, 규칙에 맞지 않는 URL에 대해서는 ANYCRAWL_PROXY_URL이 폴백으로 사용됩니다.

규칙 유형

AnyCrawl은 아래 우선순위로 세 가지 프록시 규칙을 지원합니다.

1. URL 규칙(최고 우선순위)

정확한 URL 일치. 특정 엔드포인트에 특정 프록시가 필요할 때 사용합니다.

{
    "url": "https://api.example.com/v1/data",
    "proxy": "http://username:password@proxy1.example.com:8080"
}

2. 패턴 규칙(중간 우선순위)

와일드카드를 포함한 전체 URL 패턴 일치. 특정 경로나 프로토콜의 URL에 적합합니다.

{
    "pattern": "https://*.github.com/api/*",
    "proxy": "http://username:password@proxy2.example.com:8080"
}

3. 도메인 규칙(가장 낮은 우선순위)

도메인만 패턴으로 일치합니다. 해당 도메인으로 가는 모든 요청을 특정 프록시로 보냅니다.

{
    "domain": "*.gov.au",
    "proxy": "http://username:password@proxy3.example.com:8080"
}

와일드카드 패턴

  • * — 임의 길이의 문자와 일치
  • ? — 정확히 한 글자와 일치
  • 패턴은 대소문자를 구분하지 않습니다.

  • *.example.comapi.example.com, www.example.com, test.example.com 등과 일치
  • api-?.example.comapi-1.example.com, api-2.example.com은 일치하지만 api-10.example.com은 아님
  • https://*.example.com/api/* — example.com의 모든 하위 도메인에서 /api/ 경로를 가진 HTTPS URL

전체 구성 예시

{
    "rules": [
        {
            "url": "https://api.example.com/v1/users",
            "proxy": "http://premium-proxy.example.com:8080"
        },
        {
            "pattern": "https://api.github.com/*",
            "proxy": "http://github-proxy.example.com:8080"
        },
        {
            "domain": "*.gov.au",
            "proxy": "http://au-proxy.example.com:8080"
        }
    ]
}

프록시 URL 형식

AnyCrawl은 다양한 프록시 URL 형식을 지원합니다.

  • HTTP: http://username:password@proxy.example.com:8080
  • HTTPS: https://username:password@proxy.example.com:8443

디버깅

다음과 같은 메시지가 보일 수 있습니다.

Using proxy from request userData: http://custom-proxy:8080
Found proxy for URL https://example.com: http://proxy.example.com:8080 By matching a rule.
Proxy matched by domain pattern: *.gov.au → http://proxy.example.com:8080
Using tiered proxy: http://default-proxy:8080

우선순위 예시

URL이 https://api.github.com/repos/owner/repo일 때 규칙은 아래 순서로 검사됩니다.

  1. URL 일치: "url": "https://api.github.com/repos/owner/repo"
  2. 패턴 일치: "pattern": "https://api.github.com/*"
  3. 도메인 일치: "domain": "*.github.com"

먼저 일치하는 규칙이 적용됩니다.

모범 사례

  1. 넓은 범위의 프록시 요구(예: 특정 국가 정부 사이트 전체)에는 도메인 규칙을 사용합니다.
  2. 특정 경로나 프로토콜을 맞출 때는 패턴 규칙을 사용합니다.
  3. 특별 처리가 필요한 정확한 엔드포인트에는 URL 규칙을 사용합니다.
  4. 구성 파일에서 순서는 중요하지 않습니다 — 우선순위는 규칙 유형으로 결정됩니다.
  5. 디버그 로그로 패턴을 테스트해 의도대로 매칭되는지 확인합니다.

티어 프록시 시스템

ANYCRAWL_PROXY_URL에 여러 프록시를 사용하면 AnyCrawl은 지능형 티어 프록시 시스템을 사용합니다.

동작 방식

  1. 초기 상태: 모든 도메인은 첫 번째 프록시(티어 0)로 시작합니다.
  2. 오류 감지: 특정 도메인에서 프록시가 실패하면 해당 도메인은 다음 틀로 올라갑니다.
  3. 도메인별: 도메인마다 티어 수준이 독립적으로 유지됩니다.

시나리오 예

export ANYCRAWL_PROXY_URL=http://fast-proxy:8080,http://stable-proxy:8080,http://backup-proxy:8080
  • example.com에 대한 최초 요청 → fast-proxy:8080(티어 0) 사용
  • example.com에서 fast-proxy 실패 → stable-proxy:8080(티어 1)으로 전환
  • 한편 github.com은 정상이면 여전히 fast-proxy:8080을 쓸 수 있음
  • 시스템은 주기적으로 example.com에 대해 fast-proxy 복구 여부를 재시도합니다.

이점

  • 자동 페일오버: 프록시 실패 시 수동 개입 없이 전환
  • 도메인 최적화: 도메인마다 사용 가능한 최선의 프록시 사용
  • 리소스 효율: 실패한 프록시를 완전히 버리지 않음
  • 자가 복구: 프록시가 복구되면 최적 프록시로 다시 돌아감

전체 예시: 두 방법 함께 사용

두 구성 방식을 함께 쓰는 예입니다.

# 일반 용도 기본 프록시
export ANYCRAWL_PROXY_URL=http://default-proxy:8080

# 특정 사이트에 대한 URL 기반 라우팅
export ANYCRAWL_PROXY_CONFIG=/path/to/proxy-config.json

proxy-config.json 예:

{
    "rules": [
        {
            "domain": "*.gov.au",
            "proxy": "http://au-residential-proxy:8080"
        },
        {
            "pattern": "https://api.*.com/*",
            "proxy": "http://api-optimized-proxy:3128"
        }
    ]
}

결과:

  • https://www.homeaffairs.gov.au/au-residential-proxy:8080(도메인 규칙)
  • https://api.github.com/reposapi-optimized-proxy:3128(패턴 규칙)
  • https://example.com/default-proxy:8080(ANYCRAWL_PROXY_URL 폴백)

환경 변수 요약

변수용도
ANYCRAWL_PROXY_URL기본 프록시(단일 또는 여러 개)http://proxy:8080 또는 http://p1:8080,http://p2:8080
ANYCRAWL_PROXY_STEALTH_URL스텔스/프리미엄(레지덴셜 등)http://residential-proxy:8080
ANYCRAWL_PROXY_STEALTH_CREDITS스텔스 프록시 사용 시 추가 차감 크레딧5
ANYCRAWL_STEALTH_TIMEOUT_MS요청에 timeout이 없을 때 proxy=stealth·proxy=auto의 기본 타임아웃120000
ANYCRAWL_PROXY_CONFIGURL 기반 라우팅용 JSON 파일 경로/path/to/proxy-config.json

우선순위

  1. 최상위: 요청 옵션에 지정된 프록시 모드 또는 사용자 지정 URL
    {
        "url": "https://example.com",
        "engine": "playwright",
        "proxy": "stealth"
    }
    사용자 지정 URL:
    {
        "url": "https://example.com",
        "engine": "cheerio",
        "proxy": "http://custom-proxy:8080"
    }
  2. 높음: ANYCRAWL_PROXY_CONFIG의 URL 규칙
  3. 낮음: ANYCRAWL_PROXY_URL의 티어 프록시(폴백)