프록시 설정
AnyCrawl의 URL 기반 프록시 라우팅 구성
프록시 설정
AnyCrawl은 URL 패턴에 따라 유연한 프록시 라우팅을 지원합니다. 웹사이트나 API 엔드포인트마다 서로 다른 프록시를 구성할 수 있습니다.
프록시 모드
AnyCrawl은 API 요청에서 지정할 수 있는 네 가지 프록시 모드를 지원합니다.
| 모드 | 설명 |
|---|---|
auto | 기본 프록시와 스텔스 프록시 중 자동 선택. 기본 프록시가 사용 가능하면 우선 사용하고, 사용 불가이거나 재시도/실패 시 스텔스로 업그레이드/폴백합니다. |
base | ANYCRAWL_PROXY_URL에 설정된 프록시 사용(기본값) |
stealth | ANYCRAWL_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이 항상 최우선입니다. proxy가stealth또는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_URL과 ANYCRAWL_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.com—api.example.com,www.example.com,test.example.com등과 일치api-?.example.com—api-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일 때 규칙은 아래 순서로 검사됩니다.
- URL 일치:
"url": "https://api.github.com/repos/owner/repo" - 패턴 일치:
"pattern": "https://api.github.com/*" - 도메인 일치:
"domain": "*.github.com"
먼저 일치하는 규칙이 적용됩니다.
모범 사례
- 넓은 범위의 프록시 요구(예: 특정 국가 정부 사이트 전체)에는 도메인 규칙을 사용합니다.
- 특정 경로나 프로토콜을 맞출 때는 패턴 규칙을 사용합니다.
- 특별 처리가 필요한 정확한 엔드포인트에는 URL 규칙을 사용합니다.
- 구성 파일에서 순서는 중요하지 않습니다 — 우선순위는 규칙 유형으로 결정됩니다.
- 디버그 로그로 패턴을 테스트해 의도대로 매칭되는지 확인합니다.
티어 프록시 시스템
ANYCRAWL_PROXY_URL에 여러 프록시를 사용하면 AnyCrawl은 지능형 티어 프록시 시스템을 사용합니다.
동작 방식
- 초기 상태: 모든 도메인은 첫 번째 프록시(티어 0)로 시작합니다.
- 오류 감지: 특정 도메인에서 프록시가 실패하면 해당 도메인은 다음 틀로 올라갑니다.
- 도메인별: 도메인마다 티어 수준이 독립적으로 유지됩니다.
시나리오 예
export ANYCRAWL_PROXY_URL=http://fast-proxy:8080,http://stable-proxy:8080,http://backup-proxy:8080example.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.jsonproxy-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/repos→api-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_CONFIG | URL 기반 라우팅용 JSON 파일 경로 | /path/to/proxy-config.json |
우선순위
- 최상위: 요청 옵션에 지정된 프록시 모드 또는 사용자 지정 URL
사용자 지정 URL:{ "url": "https://example.com", "engine": "playwright", "proxy": "stealth" }{ "url": "https://example.com", "engine": "cheerio", "proxy": "http://custom-proxy:8080" } - 높음:
ANYCRAWL_PROXY_CONFIG의 URL 규칙 - 낮음:
ANYCRAWL_PROXY_URL의 티어 프록시(폴백)