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 대시보드에 암호화된 비밀로 저장하세요. 절대 일반 텍스트로 저장하지 마세요.
최종 수정일: