{"id":50979794,"url":"https://github.com/TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker","last_synced_at":"2026-07-07T11:00:35.380Z","repository":{"id":359844246,"uuid":"1159183780","full_name":"TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker","owner":"TheGreatAzizi","description":"IP Security Analyzer: A pro-grade Cloudflare Worker for forensic intelligence. Detects VPNs, Proxies \u0026 Hosting IPs via heuristic ASN auditing. Includes Security Scoring, WebRTC Leak Test, ISP classification, and Geo-location. Built with a modern Bento UI and live terminal logs. Powerful, open-source and real-time network forensic tool.","archived":false,"fork":false,"pushed_at":"2026-05-23T17:57:57.000Z","size":47,"stargazers_count":67,"open_issues_count":0,"forks_count":14,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-25T15:39:20.759Z","etag":null,"topics":["internet","ip","security","security-tools","vpn"],"latest_commit_sha":null,"homepage":"https://myip.theazizi.ir/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheGreatAzizi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-16T12:24:21.000Z","updated_at":"2026-05-24T14:02:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker","commit_stats":null,"previous_names":["thegreatazizi/ip-security-analyzer-cloudflare-worker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheGreatAzizi%2FIP-Security-Analyzer-Cloudflare-Worker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheGreatAzizi%2FIP-Security-Analyzer-Cloudflare-Worker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheGreatAzizi%2FIP-Security-Analyzer-Cloudflare-Worker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheGreatAzizi%2FIP-Security-Analyzer-Cloudflare-Worker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheGreatAzizi","download_url":"https://codeload.github.com/TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheGreatAzizi%2FIP-Security-Analyzer-Cloudflare-Worker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35225029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-07T02:00:07.222Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["internet","ip","security","security-tools","vpn"],"created_at":"2026-06-19T13:00:27.354Z","updated_at":"2026-07-07T11:00:35.370Z","avatar_url":"https://github.com/TheGreatAzizi.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# 🛡️ IP Security Analyzer\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-Cloudflare%20Workers-f38020?style=for-the-badge\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/IPinfo-Lite-2563eb?style=for-the-badge\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/AbuseIPDB-Reputation-ef4444?style=for-the-badge\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-22c55e?style=for-the-badge\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eA lightweight Cloudflare Worker dashboard for IP intelligence, reputation analysis, and browser-side WebRTC exposure testing.\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#فارسی\"\u003e\u003cb\u003e نسخه فارسی پایین همین فایل قرار دارد\u003c/b\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://myip.theazizi.ir\"\u003e\u003cb\u003e🚀 Live Demo\u003c/b\u003e\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker\"\u003e\u003cb\u003eGitHub Repository\u003c/b\u003e\u003c/a\u003e\n  ·\n  \u003ca href=\"https://x.com/the_azzi\"\u003e\u003cb\u003eX / Twitter\u003c/b\u003e\u003c/a\u003e\n  ·\n  \u003ca href=\"https://t.me/luluch_code\"\u003e\u003cb\u003eTelegram\u003c/b\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Overview\n\n**IP Security Analyzer** is a single-file Cloudflare Worker that analyzes the public network identity of a visitor. It combines Cloudflare request metadata, IPinfo Lite ASN enrichment, AbuseIPDB reputation data, request-header consistency checks, and a browser-side WebRTC leak test.\n\nThe project is designed to be transparent: it separates **network classification** from **risk scoring**. For example, a datacenter, CDN, cloud, or transit IP is shown as infrastructure, but it is **not penalized by default** unless stronger risk indicators exist, such as abuse reports, Tor status, suspicious automation headers, VPN/proxy naming signals, or WebRTC public IP mismatch.\n\nThis makes the project useful for:\n\n- Personal IP/security dashboards\n- VPN/proxy visibility testing\n- Network identity inspection\n- Abuse/reputation checks\n- Browser WebRTC exposure testing\n- Edge-based IP intelligence demos\n- Lightweight forensic-style network analysis\n\n---\n\n## Key Features\n\n### 🌐 Public IP and Network Identity\n\nThe Worker detects the public IP address visible to Cloudflare and displays:\n\n- IP address\n- IP version, IPv4 or IPv6\n- ASN\n- ISP / organization\n- Country, region, city\n- Cloudflare edge colo\n- HTTP protocol\n- TLS version\n- Cloudflare Ray ID\n\n### 🧠 ASN and Network Classification\n\nThe project classifies the visible network into categories such as:\n\n- Hosting / Datacenter\n- Mobile / Cellular\n- Corporate / Business\n- Education / Campus\n- Likely Residential\n- VPN / Proxy / Privacy name match\n- Unknown\n\nThis classification is contextual. A hosting/datacenter classification alone does not reduce the security score.\n\n### 🧩 IPinfo Lite Enrichment\n\nIPinfo Lite is used to enrich the IP address with:\n\n- ASN\n- AS name\n- AS domain\n- Country\n- Continent\n\nIPinfo Lite does not provide direct `is_vpn`, `is_proxy`, `is_tor`, or `is_hosting` fields. Because of that, this project does not claim definitive VPN detection from IPinfo Lite alone. It uses Lite data as attribution and context.\n\n### 🧯 AbuseIPDB Reputation Layer\n\nAbuseIPDB adds reputation and abuse context, including:\n\n- Abuse confidence score\n- Total abuse reports\n- Number of distinct reporting users\n- Tor status\n- Usage type\n- ISP\n- Domain\n- Hostnames\n- Last reported time\n\nThe score is affected by abuse history and Tor status. A usage type like `Data Center/Web Hosting/Transit` is displayed as network context only and does not reduce the score by itself.\n\n### 🕵️ Request Consistency Checks\n\nThe Worker checks request headers and Cloudflare signals for suspicious or inconsistent patterns:\n\n- Missing User-Agent\n- Automation clients such as `curl`, `wget`, `python`, `requests`, Selenium, Playwright, Puppeteer\n- Browser-like User-Agent without modern browser headers\n- Missing `Accept-Language`\n- Non-TLS 1.3 connection\n- Optional Cloudflare Bot Management score, if available\n\n### 🔌 WebRTC Exposure Test\n\nThe dashboard includes a browser-side WebRTC test. It creates a temporary `RTCPeerConnection`, gathers ICE candidates, and sends them to the Worker through `/report`.\n\nThe WebRTC test can detect:\n\n- Public IP candidates exposed by the browser\n- Public IP mismatch between WebRTC and HTTP\n- Private/local candidate exposure\n- mDNS-masked local candidates\n- Cases where WebRTC is blocked or protected\n\nIf WebRTC exposes a public IP that differs from the HTTP IP seen by Cloudflare, the dashboard marks it as a possible browser-side exposure or VPN/proxy bypass signal.\n\n### 📊 Transparent Risk Score\n\nThe score starts at `100`.\n\nThe score decreases only for stronger signals such as:\n\n| Signal | Effect |\n|---|---:|\n| Tor flag from AbuseIPDB | High penalty |\n| High AbuseIPDB confidence score | High penalty |\n| Abuse reports | Low to high penalty depending on report count |\n| VPN/proxy/privacy keyword match | Penalty |\n| Suspicious automation User-Agent | Penalty |\n| Low Cloudflare Bot Management score | Penalty |\n| WebRTC public IP mismatch | Penalty |\n| WebRTC local/private exposure | Small penalty |\n\nThe score does **not** decrease simply because the IP belongs to hosting, datacenter, cloud, CDN, or transit infrastructure.\n\n---\n\n## Scoring Philosophy\n\nThis project intentionally avoids treating infrastructure as automatically malicious.\n\nA clean datacenter IP with:\n\n- Abuse score `0`\n- No abuse reports\n- Not Tor\n- No WebRTC mismatch\n- No suspicious headers\n\nshould remain low risk.\n\nA residential-looking IP can still become risky if it has:\n\n- Abuse history\n- Tor status\n- Automation indicators\n- VPN/proxy naming patterns\n- WebRTC mismatch\n- Suspicious request consistency signals\n\nThe goal is not to guess hidden private data. The goal is to evaluate observable evidence.\n\n---\n\n## Endpoints\n\n| Endpoint | Method | Description |\n|---|---:|---|\n| `/` | `GET` | HTML dashboard |\n| `/json` | `GET` | Full server-side analysis as JSON |\n| `/api` | `GET` | Alias for `/json` |\n| `/report` | `POST` | Receives browser WebRTC candidate report and returns combined risk |\n| `/health` | `GET` | Basic status and version endpoint |\n\n---\n\n## Example JSON Structure\n\n```json\n{\n  \"status\": \"success\",\n  \"ip\": {\n    \"address\": \"203.0.113.42\",\n    \"version\": \"IPv4\"\n  },\n  \"network\": {\n    \"asn\": 15169,\n    \"isp\": \"Google LLC\",\n    \"localClassification\": {\n      \"type\": \"Hosting / Datacenter\",\n      \"flags\": {\n        \"hostingName\": true,\n        \"vpnProxyName\": false,\n        \"abuseDatacenterUsage\": true\n      }\n    }\n  },\n  \"externalIntel\": {\n    \"ipinfoLite\": {\n      \"enabled\": true,\n      \"ok\": true\n    },\n    \"abuseipdb\": {\n      \"enabled\": true,\n      \"ok\": true\n    }\n  },\n  \"risk\": {\n    \"score\": 100,\n    \"verdict\": \"Low Risk\",\n    \"tags\": [\"Hosting/Datacenter\"],\n    \"findings\": []\n  }\n}\n```\n\n---\n\n## Deployment\n\n### Option 1: Cloudflare Dashboard\n\n1. Open Cloudflare Dashboard.\n2. Go to **Workers \u0026 Pages**.\n3. Create a new Worker.\n4. Open **Edit Code**.\n5. Paste the full Worker code.\n6. Click **Save and Deploy**.\n\n### Option 2: Wrangler CLI\n\n```bash\nnpx wrangler init ip-security-analyzer\ncd ip-security-analyzer\n```\n\nPaste the Worker code into:\n\n```text\nsrc/index.js\n```\n\nDeploy:\n\n```bash\nnpx wrangler deploy\n```\n\n---\n\n## Configuration\n\nThe Worker can run without external keys, but external intelligence is recommended.\n\n### IPinfo Lite\n\nCreate a free IPinfo token and add it as:\n\n```text\nIPINFO_TOKEN\n```\n\n### AbuseIPDB\n\nCreate an AbuseIPDB API key and add it as:\n\n```text\nABUSEIPDB_KEY\n```\n\n### Cloudflare Dashboard Secrets\n\nIn Cloudflare Dashboard:\n\n```text\nWorker → Settings → Variables and Secrets → Add\n```\n\nAdd:\n\n```text\nIPINFO_TOKEN = your_ipinfo_token\nABUSEIPDB_KEY = your_abuseipdb_key\n```\n\n### Manual Fallback\n\nIf secrets are not available, fill these values at the top of the Worker file:\n\n```javascript\nconst MANUAL_IPINFO_TOKEN = \"\";\nconst MANUAL_ABUSEIPDB_KEY = \"\";\n```\n\nUsing Cloudflare secrets is safer for production.\n\n---\n\n## Custom Domain\n\nYou can attach a custom domain from the Cloudflare dashboard:\n\n```text\nWorkers \u0026 Pages → Your Worker → Settings → Triggers → Add Custom Domain\n```\n\nExample:\n\n```text\nmyip.example.com\n```\n\n---\n\n## Technical Methodology\n\n### 1. Server-Side IP Detection\n\nThe Worker reads the IP address visible to Cloudflare using headers such as:\n\n- `CF-Connecting-IP`\n- `True-Client-IP`\n- `X-Real-IP`\n- `X-Forwarded-For`\n\nThe primary source is Cloudflare's connecting IP header. This identifies the public IP that reached the Worker.\n\n### 2. Cloudflare Metadata\n\nCloudflare Workers expose metadata through `request.cf`, including ASN, organization, country, city, region, colo, timezone, TLS version, and protocol data.\n\nThis data provides the base network identity.\n\n### 3. External Enrichment\n\nThe Worker queries external APIs:\n\n- **IPinfo Lite** for ASN and country enrichment\n- **AbuseIPDB** for reputation, report count, Tor flag, usage type, and related abuse context\n\nThese sources are combined with Cloudflare metadata for better attribution.\n\n### 4. Heuristic Classification\n\nThe Worker uses conservative keyword matching to classify network names and domains. For example:\n\n- `cloud`, `hosting`, `datacenter`, `transit` → infrastructure context\n- `vpn`, `proxy`, `tor`, `privacy`, `tunnel` → higher-risk naming context\n- `mobile`, `lte`, `5g`, carrier names → mobile context\n- known consumer ISPs → residential-like context\n\nInfrastructure context does not automatically lower the score.\n\n### 5. Risk Model\n\nRisk is calculated from evidence, not assumptions. The Worker applies penalties for:\n\n- Tor\n- Abuse score\n- Abuse reports\n- VPN/proxy/privacy naming\n- Automation signatures\n- Header inconsistency\n- Low bot score\n- WebRTC mismatch\n\nInformational findings are still shown, but have `points: 0`.\n\n### 6. WebRTC Candidate Analysis\n\nThe browser creates a temporary `RTCPeerConnection` and collects ICE candidates.\n\nThe Worker compares:\n\n- HTTP IP seen by Cloudflare\n- Public IPs exposed by WebRTC\n- Local/private candidates\n- mDNS candidates\n\nA different public WebRTC IP can indicate a browser-side leak or proxy/VPN bypass.\n\n### 7. Known Limitations\n\nThis project cannot reliably reveal the original ISP IP behind a correctly configured VPN or proxy.\n\nIt also cannot perform real DNS leak detection by itself, because a normal Worker cannot observe the visitor's DNS resolver. Real DNS leak testing requires unique subdomains and authoritative DNS query logs.\n\n---\n\n## Security Notes\n\n- Do not expose private API keys in public repositories.\n- Prefer Cloudflare secrets over manual constants.\n- Do not interpret hosting/datacenter as malicious by itself.\n- Use findings and score together, not score alone.\n- WebRTC results depend on browser settings and privacy protections.\n- DNS leak detection requires a separate authoritative DNS logging system.\n\n---\n\n## Use Cases\n\n- Checking whether a VPN or proxy exposes browser-side WebRTC candidates\n- Inspecting ASN and network ownership\n- Viewing public IP reputation\n- Building a simple edge-based IP intelligence dashboard\n- Demonstrating Cloudflare Worker request metadata\n- Comparing HTTP-visible IP with WebRTC-visible IP\n- Learning how infrastructure classification differs from abuse scoring\n\n---\n\n## Project Links\n\n- Live Demo: [myip.theazizi.ir](https://myip.theazizi.ir)\n- GitHub: [TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker](https://github.com/TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker)\n- X / Twitter: [@the_azzi](https://x.com/the_azzi)\n- Telegram: [luluch_code](https://t.me/luluch_code)\n\n---\n\n## License\n\nMIT License — free to use, modify, and deploy.\n\n---\n\n## فارسی\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eتحلیل‌گر امنیت IP\u003c/b\u003e\u003cbr\u003e\n  داشبوردی سبک بر پایه Cloudflare Worker برای تحلیل هویت شبکه، اعتبار IP، بررسی WebRTC و نمایش شفاف سیگنال‌های امنیتی.\n\u003c/p\u003e\n\n---\n\n## معرفی\n\n**IP Security Analyzer** یک پروژه تک‌فایلی برای Cloudflare Worker است که IP عمومی و مسیر شبکه‌ای قابل مشاهده توسط سایت را تحلیل می‌کند.\n\nاین پروژه تلاش نمی‌کند اطلاعات مخفی یا غیرقابل مشاهده را حدس بزند. در عوض، داده‌های قابل مشاهده را بررسی و با هم ترکیب می‌کند:\n\n- متادیتای Cloudflare\n- اطلاعات ASN و کشور از IPinfo Lite\n- اعتبار و سابقه سوءاستفاده از AbuseIPDB\n- بررسی سازگاری هدرهای درخواست\n- تست WebRTC در مرورگر\n\nهدف پروژه این است که نشان دهد یک اتصال از نظر شواهد قابل مشاهده چقدر قابل اعتماد یا مشکوک است.\n\n---\n\n## ویژگی‌ها\n\n### تشخیص IP و هویت شبکه\n\nپروژه اطلاعات زیر را نمایش می‌دهد:\n\n- IP عمومی\n- IPv4 یا IPv6\n- ASN\n- نام ISP یا سازمان شبکه\n- کشور، شهر و منطقه\n- Cloudflare colo\n- نسخه TLS\n- پروتکل HTTP\n- Ray ID\n\n### دسته‌بندی شبکه\n\nاتصال می‌تواند در دسته‌هایی مثل موارد زیر قرار بگیرد:\n\n- دیتاسنتر / هاستینگ\n- موبایل / سلولار\n- سازمانی / شرکتی\n- آموزشی\n- شبیه Residential\n- VPN / Proxy / Privacy name match\n- ناشناخته\n\nنکته مهم: **صرفاً دیتاسنتر یا هاستینگ بودن باعث کم شدن نمره نمی‌شود.**\n\n---\n\n## IPinfo Lite\n\nIPinfo Lite اطلاعات پایه‌ای مثل موارد زیر را اضافه می‌کند:\n\n- ASN\n- نام AS\n- دامنه AS\n- کشور\n- قاره\n\nنسخه Lite فیلدهای مستقیم مثل `is_vpn`، `is_proxy`، `is_tor` یا `is_hosting` ندارد. بنابراین پروژه از IPinfo Lite فقط برای زمینه‌سازی و شناسایی بهتر شبکه استفاده می‌کند، نه برای ادعای قطعی VPN بودن.\n\n---\n\n## AbuseIPDB\n\nAbuseIPDB اطلاعات اعتبار و سوءاستفاده IP را فراهم می‌کند:\n\n- Abuse confidence score\n- تعداد گزارش‌ها\n- تعداد کاربران گزارش‌دهنده\n- وضعیت Tor\n- نوع استفاده شبکه\n- ISP\n- دامنه\n- Hostnameها\n- آخرین زمان گزارش\n\nنمره ریسک فقط وقتی کم می‌شود که شواهد قوی‌تری وجود داشته باشد، مثل گزارش سوءاستفاده، امتیاز Abuse بالا یا Tor بودن.\n\nاگر AbuseIPDB فقط بگوید IP از نوع `Data Center/Web Hosting/Transit` است، این مورد فقط به عنوان اطلاعات شبکه نمایش داده می‌شود و به تنهایی نمره کم نمی‌کند.\n\n---\n\n## مدل امتیازدهی\n\nامتیاز از ۱۰۰ شروع می‌شود.\n\nامتیاز فقط برای موارد معنادار کم می‌شود:\n\n| سیگنال | اثر |\n|---|---:|\n| Tor بودن IP | جریمه زیاد |\n| Abuse score بالا | جریمه زیاد |\n| گزارش‌های AbuseIPDB | جریمه بسته به تعداد گزارش |\n| کلمات مرتبط با VPN / Proxy / Privacy | جریمه |\n| User-Agent مشکوک یا خودکار | جریمه |\n| Bot score پایین در Cloudflare | جریمه |\n| WebRTC public IP mismatch | جریمه |\n| افشای IP محلی در WebRTC | جریمه کم |\n\nموارد زیر به تنهایی جریمه ندارند:\n\n- دیتاسنتر\n- هاستینگ\n- CDN\n- Cloud\n- Transit\n- Mobile carrier\n\n---\n\n## WebRTC Leak Test\n\nتست WebRTC در مرورگر اجرا می‌شود. مرورگر یک اتصال موقت `RTCPeerConnection` می‌سازد و ICE candidateها را جمع‌آوری می‌کند.\n\nسپس Worker بررسی می‌کند:\n\n- IP دیده‌شده توسط HTTP / Cloudflare چیست\n- WebRTC چه IPهایی را نشان داده است\n- آیا IP عمومی متفاوتی لو رفته است\n- آیا IP خصوصی یا local دیده شده است\n- آیا مرورگر از mDNS masking استفاده کرده است\n\nاگر WebRTC یک IP عمومی متفاوت از IP دیده‌شده توسط Cloudflare نشان دهد، پروژه آن را به عنوان احتمال leak یا bypass تشخیص می‌دهد.\n\n---\n\n## محدودیت‌ها\n\nاین پروژه نمی‌تواند به طور قطعی IP اصلی پشت یک VPN یا Proxy درست پیکربندی‌شده را پیدا کند.\n\nهمچنین یک Cloudflare Worker معمولی نمی‌تواند DNS resolver کاربر را ببیند. برای DNS leak واقعی باید دامنه‌های تصادفی و لاگ authoritative DNS داشته باشید.\n\n---\n\n## Endpointها\n\n| مسیر | متد | توضیح |\n|---|---:|---|\n| `/` | `GET` | داشبورد HTML |\n| `/json` | `GET` | خروجی کامل JSON |\n| `/api` | `GET` | معادل `/json` |\n| `/report` | `POST` | دریافت گزارش WebRTC از مرورگر |\n| `/health` | `GET` | وضعیت پایه سرویس |\n\n---\n\n## نصب و راه‌اندازی\n\n### از طریق Cloudflare Dashboard\n\n1. وارد Cloudflare Dashboard شوید.\n2. به بخش **Workers \u0026 Pages** بروید.\n3. یک Worker جدید بسازید.\n4. وارد **Edit Code** شوید.\n5. کد Worker را جایگذاری کنید.\n6. روی **Save and Deploy** کلیک کنید.\n\n### از طریق Wrangler\n\n```bash\nnpx wrangler init ip-security-analyzer\ncd ip-security-analyzer\n```\n\nکد را در فایل زیر قرار دهید:\n\n```text\nsrc/index.js\n```\n\nسپس Deploy کنید:\n\n```bash\nnpx wrangler deploy\n```\n\n---\n\n## تنظیم کلیدها\n\nبرای نتیجه بهتر، این دو کلید را در Cloudflare Worker Secrets قرار دهید:\n\n```text\nIPINFO_TOKEN\nABUSEIPDB_KEY\n```\n\nاگر به Secrets دسترسی ندارید، می‌توانید مقدارها را در ابتدای فایل Worker وارد کنید:\n\n```javascript\nconst MANUAL_IPINFO_TOKEN = \"\";\nconst MANUAL_ABUSEIPDB_KEY = \"\";\n```\n\nبرای محیط عمومی، استفاده از Secret امن‌تر است.\n\n---\n\n## کاربردها\n\n- بررسی WebRTC leak هنگام استفاده از VPN\n- مشاهده مالکیت ASN و شبکه\n- بررسی reputation و گزارش‌های AbuseIPDB\n- ساخت داشبورد IP intelligence روی Cloudflare Worker\n- مقایسه IP قابل مشاهده از HTTP با IP قابل مشاهده از WebRTC\n- آموزش تفاوت classification و risk scoring\n\n---\n\n## لینک‌ها\n\n- دمو: [myip.theazizi.ir](https://myip.theazizi.ir)\n- گیت‌هاب: [TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker](https://github.com/TheGreatAzizi/IP-Security-Analyzer-Cloudflare-Worker)\n- ایکس / توییتر: [@the_azzi](https://x.com/the_azzi)\n- تلگرام: [luluch_code](https://t.me/luluch_code)\n\n---\n\n## لایسنس\n\nMIT License — استفاده، تغییر و انتشار آزاد است.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheGreatAzizi%2FIP-Security-Analyzer-Cloudflare-Worker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTheGreatAzizi%2FIP-Security-Analyzer-Cloudflare-Worker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheGreatAzizi%2FIP-Security-Analyzer-Cloudflare-Worker/lists"}