Skip to Content

Cloudflare Workers

Edge에서 트래픽을 가로채는 것이 ProxyTracer를 사용하는 가장 효율적인 방법입니다. Cloudflare Worker에 이 미들웨어를 구현하면 악의적인 요청이 원본 서버의 리소스를 소비하기 전에 CDN 수준에서 삭제됩니다.

구현

이 조각은 Cloudflare의 기본 헤더를 사용하여 실제 클라이언트 IP를 추출하고, ProxyTracer API를 쿼리하고, 프록시가 감지되면 엄격한 '403 Forbidden'을 반환합니다.

export default { async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> { // 1. 실제 IP 추출 (Cloudflare에서 기본 제공) const ip = request.headers.get("cf-connecting-ip"); // IP를 찾을 수 없는 경우 통과 (예: 로컬 개발) if (!ip) { return fetch(request); } try { // 2. ProxyTracer API 쿼리 const ptResponse = await fetch(`https://api.proxytracer.com/v1/check/${ip}`, { method: "GET", headers: { "Authorization": `Bearer ${env.PROXYTRACER_API_KEY}` } }); if (ptResponse.ok) { const data = await ptResponse.json(); // 3. 프록시/VPN이 감지되면 연결 차단 if (data.proxy === true) { return new Response( JSON.stringify({ error: "Access Denied: VPN or Proxy detected." }), { status: 403, headers: { "Content-Type": "application/json" } } ); } } } catch (error) { // Fail open: API에 연결할 수 없는 경우 가동 시간 보장을 위해 트래픽 허용 console.error("ProxyTracer API Error:", error); } // 4. 정상 트래픽은 원본 서버로 전달 return fetch(request); } };

보안 참고 사항: 항상 'PROXYTRACER_API_KEY'를 Cloudflare Worker 대시보드에 암호화된 비밀로 저장하세요. 절대 일반 텍스트로 저장하지 마세요.

최종 수정일: