diff --git a/_worker.js b/_worker.js index 5ff5896..55a9a12 100644 --- a/_worker.js +++ b/_worker.js @@ -1,5 +1,6 @@ import handler from "./common"; export default { - fetch: async (request, env) => handler(request, env.DNS, env.API), + fetch: async (request, env) => + handler(request, env.DNS, env.API, request.headers.get("cf-connecting-ip")), }; diff --git a/common.js b/common.js index 393d956..e166ae7 100644 --- a/common.js +++ b/common.js @@ -1,11 +1,16 @@ export default async function handler( request, dns = "https://dns.google/dns-query", - api = "https://dns.google/resolve" + api = "https://dns.google/resolve", + rawIP ) { const { method, headers, url } = request; const { search, searchParams, pathname } = new URL(url); - const ip = headers.get("x-forwarded-for"); + + const ip = + rawIP || + headers.get("x-forwarded-for").split(",")[0].trim() || + headers.get("x-real-ip"); // Anti-GFW if (