
OSINT खुफिया जानकारी किसी भी IP, डोमेन, या ASN पर
यदि यह प्रोजेक्ट आपके काम में मदद करता है, तो निरंतर रखरखाव और नई सुविधाओं का समर्थन करें।
ETH दान वॉलेट
0x11282eE5726B3370c8B480e321b3B2aA13686582
QR कोड स्कैन करें या उपरोक्त वॉलेट पता कॉपी करें।
15 स्रोतों पर एकीकृत होस्ट इंटेलिजेंस — तत्काल सुरक्षा स्थिति, बुनियादी ढांचे का विवरण और खतरे के सहसंबंधों के लिए किसी भी IP, डोमेन या ASN को क्वेरी करें। पूरी तरह से Cloudflare मुफ्त टियर पर चलता है।
लाइव है: swiy.co/seekyou``` $ curl "https://seekyou.seekyou.workers.dev/api/lookup?q=1.1.1.1"
{ "query": { "raw": "1.1.1.1", "type": "ip", "normalised": "1.1.1.1" }, "core": { "internetdb": { "status": "ok", "data": { "ports": [80,443], "vulns": [] } }, "geo": { "status": "cached", "data": { "country": "US", "org": "AS13335 Cloudflare" } }, "bgp": { "status": "ok", "data": { "name": "CLOUDFLARENET", "rir": "ARIN" } }, ... }, "meta": { "durationMs": 312, "cacheHits": 4, "sourcesQueried": 15, "sourcesFailed": 0 } }
## स्क्रीनशॉट्स
<div align="center">
### लैंडिंग पृष्ठ
<img src="https://assets.kitploit.com/production/public/readmes/7467/e00ec4ba8b3e5460ae1e03360cf6540e58d92acc5522c8693445512b591fed29.png" alt="SeekYou परिणाम पृष्ठ" width="800" />
### परिणाम पृष्ठ
<img src="https://assets.kitploit.com/production/public/readmes/7467/09b165feca9927ad4cd50c3ebd28c72e09a0355d72b9ca14d795bf1d04448c92.png" alt="SeekYou लैंडिंग पृष्ठ" width="800" />
### डेमो
<a href="https://www.youtube.com/watch?v=b86tAUUqd34">
<img src="https://assets.kitploit.com/production/public/readmes/7467/8762e8b464816b9a69d929514441f8c7ee9f9ee9719f95b9c5e33ac1672575f8.jpg" alt="SeekYou डेमो" width="800" />
</a>
</div>
---
## विषय सूची
- [SeekYou](#seekyou)
- [स्क्रीनशॉट्स](#screenshots)
- [लैंडिंग पृष्ठ](#landing-page)
- [परिणाम पृष्ठ](#results-page)
- [डेमो](#demo)
- [विषय सूची](#table-of-contents)
- [SeekYou क्या करता है](#what-seekyou-does)
- [उपयोग के मामले](#use-cases)
- [कानूनी उपयोग नीति](#lawful-use-policy)
- [संबंधित उपकरण](#related-tools)
- [आर्किटेक्चर अवलोकन](#architecture-overview)
- [निष्पादन मॉडल](#execution-model)
- [डेटा स्रोत](#data-sources)
- [परियोजना संरचना](#project-structure)
- [प्रमुख डिजाइन निर्णय](#key-design-decisions)
- [एज-प्रथम, Node.js नहीं](#edge-first-no-nodejs)
- [स्तरित समानांतर निष्पादन](#layered-parallel-execution)
- [सुंदर गिरावट](#graceful-degradation)
- [विभाजित D1 + KV भंडारण](#split-d1--kv-storage)
- [मुफ्त-स्तर अनुकूलन](#free-tier-optimization)
- [फायर-एंड-फॉरगेट D1 राइट्स](#fire-and-forget-d1-writes)
- [कैशिंग रणनीति](#caching-strategy)
- [दर सीमा](#rate-limiting)
- [सर्किट ब्रेकर](#circuit-breakers)
- [कुंजी रोटेशन — GrayHatWarfare](#key-rotation--grayhatwarfare)
- [D1 दृढ़ता](#d1-persistence)
- [स्कीमा (`schema.sql`)](#schema-schemasql)
- [स्कीमा लागू करें](#apply-schema)
- [सहायक फ़ंक्शन](#helper-functions)
- [क्रोन वर्कर](#cron-worker)
- [टाइप किया गया अंतर (`lib/diff.ts`)](#typed-diff-libdiffts)
- [वेबहुक पेलोड](#webhook-payload)
- [डेवलपमेंट सेटअप](#development-setup)
- [पूर्वापेक्षाएँ](#prerequisites)
- [स्थानीय विकास](#local-development)
- [Cloudflare संसाधन बनाएं (पहली बार)](#create-cloudflare-resources-first-time)
- [परिनियोजन](#deployment)
- [निर्माण और परिनियोजन](#build-and-deploy)
- [Wrangler कॉन्फ़िगरेशन (`wrangler.toml`)](#wrangler-configuration-wranglertoml)
- [गुप्त और पर्यावरण चर](#secrets-and-environment-variables)
- [आवश्यक गुप्त](#required-secrets)
- [`.env.example` (केवल स्थानीय विकास)](#envexample-local-dev-only)
- [लाइसेंस](#license)
- [लेखक](#author)
- [स्वीकृतियाँ](#acknowledgments)
---
## SeekYou क्या करता है
SeekYou एक **होस्ट खुफिया उपकरण** है — एक IP पता, डोमेन नाम, या ASN डालें और एक एकीकृत रिपोर्ट प्राप्त करें जो कवर करती है:
| श्रेणी | आपको क्या मिलता है |
|---|---|
| नेटवर्क | खुले पोर्ट, CPE, BGP उपसर्ग, अपस्ट्रीम, पीयर, RIR |
| पहचान | RDAP पंजीकरण, संपर्क, रजिस्ट्रार, नेमसर्वर |
| भूगोल | देश, शहर, ISP, प्रॉक्सी / होस्टिंग / मोबाइल फ्लैग |
| प्रमाणपत्र | crt.sh इतिहास, SAN, जारीकर्ता श्रृंखला |
| DNS | पैसिव DNS रिकॉर्ड, Robtex रिवर्स/फ़ॉरवर्ड DNS |
| खतरे | URLhaus, ThreatFox, MalwareBazaar, Feodo, SSLBL |
| CVE | NVD + CIRCL संवर्धन प्रत्येक CVE ID InternetDB रिपोर्ट के लिए |
| टोही | GrayHatWarfare उजागर बकेट्स, Wayback CDX स्नैपशॉट्स |
प्रत्येक स्रोत समानांतर में क्वेरी किया जाता है। असफल स्रोत 'अनुपलब्ध' बैज तक कम हो जाता है — यह पृष्ठ को कभी नहीं तोड़ता।
---
## उपयोग के मामले
**सुरक्षा संचालन** — लॉग से संदिग्ध IP का शीघ्र प्रोफाइल बनाना, IOC को सहसंबंधित करना, उजागर सेवाओं और CVE की पहचान करना, दुर्भावनापूर्ण डोमेन का पता लगाना।
**नेटवर्क संचालन** — BGP रूटिंग, RDAP/WHOIS आवंटन डेटा, ऐतिहासिक DNS रिकॉर्ड, SSL सर्ट परिवर्तनों का निरीक्षण करना।
**पेनिट्रेशन टेस्टिंग** — पोर्ट/सेवाएं/CPE की गणना करना, उजागर बकेट्स, संग्रहीत पृष्ठ, उपडोमेन, और ASN संबंधों की खोज करना।
**खतरा खुफिया** — एक ही क्वेरी में पांच खतरा फ़ीड के खिलाफ C2 बुनियादी ढांचे की जांच करना।
**अनुपालन और जोखिम** — विक्रेता बुनियादी ढांचे का प्रोफाइल बनाना, उजागर क्लाउड स्टोरेज का पता लगाना, शैडो IT की पहचान करना।
---
## कानूनी उपयोग नीति
SeekYou **कानूनी सुरक्षा अनुसंधान, नेटवर्क संचालन, और खतरा खुफिया** के लिए डिज़ाइन किया गया है। इस उपकरण का उपयोग करके, आप निम्नलिखित से सहमत होते हैं:
**अनुमत उपयोग:**
- उन नेटवर्कों पर सुरक्षा संचालन और घटना प्रतिक्रिया जिनके आप मालिक हैं या जिनकी निगरानी के लिए अधिकृत हैं
- खतरा खुफिया अनुसंधान और IOC सहसंबंध
- आपके संगठन के भीतर नेटवर्क समस्या निवारण और बुनियादी ढांचा ऑडिटिंग
- लक्ष्य संगठन से स्पष्ट लिखित प्राधिकरण के साथ पेनिट्रेशन टेस्टिंग
- साइबर सुरक्षा में शैक्षिक अनुसंधान और शिक्षा
- उचित प्राधिकरण के साथ अनुपालन ऑडिट और विक्रेता जोखिम मूल्यांकन
**निषिद्ध उपयोग:**
- उन प्रणालियों के खिलाफ अनधिकृत पहुंच, टोही, या हमले जिनके आप मालिक नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति नहीं है
- व्यक्तियों या संगठनों के खिलाफ उत्पीड़न, पीछा करना, या गोपनीयता उल्लंघन
- धोखाधड़ी, पहचान चोरी, या साइबर अपराध सहित अवैध गतिविधियों को सुविधाजनक बनाना
- बिना प्राधिकरण के सुरक्षा नियंत्रण या पहुंच प्रतिबंधों को दरकिनार करना
- लागू कानूनों का उल्लंघन करना जिनमें CFAA (US), Computer Misuse Act (UK), GDPR (EU), या आपके क्षेत्राधिकार में समकक्ष कानून शामिल हैं
**आपकी जिम्मेदारियां:**
- सुनिश्चित करें कि जिस बुनियादी ढांचे के आप मालिक नहीं हैं, उसे क्वेरी करने से पहले आपके पास उचित प्राधिकरण है
- दर सीमाओं का सम्मान करें और सेवा या अपस्ट्रीम डेटा स्रोतों का दुरुपयोग न करें
- अपने क्षेत्राधिकार में सभी लागू कानूनों और विनियमों का पालन करें
- डेटा का जिम्मेदारी से उपयोग करें और समन्वित प्रकटीकरण के बिना निष्कर्षों को हथियार न बनाएं
- समझें कि किसी होस्ट को क्वेरी करने से उस तक पहुंचने या उसका शोषण करने की अनुमति नहीं मिलती है
**अस्वीकरण:**
इस उपकरण के दुरुपयोग के लिए लेखक और योगदानकर्ता कोई देयता नहीं लेते हैं। उपयोगकर्ता पूरी तरह से यह सुनिश्चित करने के लिए जिम्मेदार हैं कि उनकी गतिविधियां लागू कानूनों का अनुपालन करती हैं। सार्वजनिक स्रोतों से एकत्रित डेटा अधूरा, पुराना या गलत हो सकता है — कार्रवाई करने से पहले हमेशा आधिकारिक चैनलों के माध्यम से निष्कर्षों को सत्यापित करें।
यदि आप SeekYou के माध्यम से कोई कमजोरी खोजते हैं, तो जिम्मेदार प्रकटीकरण प्रथाओं का पालन करें और सार्वजनिक प्रकटीकरण से पहले प्रभावित पक्ष को सूचित करें।
---
## संबंधित उपकरण
SeekYou गोपनीयता-केंद्रित सुरक्षा टूलकिट का हिस्सा है। पूर्ण सूट का अन्वेषण करें:
| उपकरण | विवरण | लाइव URL |
|---|---|---|
| **TimeSeal** | क्रिप्टोग्राफिक टाइमस्टैम्पिंग सेवा — सामग्री प्रकट किए बिना किसी विशिष्ट समय पर दस्तावेज़ अस्तित्व साबित करें | [timeseal.online](https://timeseal.online) |
| **SanctumVault** | ज़ीरो-नॉलेज एन्क्रिप्टेड वॉल्ट — संवेदनशील डेटा भंडारण के लिए क्लाइंट-साइड एन्क्रिप्शन | [sanctumvault.online](https://sanctumvault.online) |
| **GhostChat** | क्षणिक एन्क्रिप्टेड मैसेजिंग — कोई सर्वर लॉग नहीं के साथ स्व-विनाशकारी वार्तालाप | [ghost-chat.pages.dev](https://ghost-chat.pages.dev) |
| **XMRProof** | Monero भुगतान सत्यापन — XMR लेन-देन के क्रिप्टोग्राफिक प्रमाण उत्पन्न करें | [xmrproof.pages.dev](https://xmrproof.pages.dev) |
| **GhostReceipt** | अनाम रसीद निर्माण — पहचान प्रकट किए बिना सत्यापन योग्य लेन-देन रिकॉर्ड बनाएं | [ghostreceipt.pages.dev](https://ghostreceipt.pages.dev) |
| **SeekYou** | होस्ट खुफिया एकत्रीकरण — IP, डोमेन, और ASN के लिए 15 स्रोतों में एकीकृत OSINT | [seekyou.seekyou.workers.dev](https://seekyou.seekyou.workers.dev) |
| **HoneypotScan** | हनीपॉट डिटेक्शन सेवा — सुरक्षा अनुसंधान में डिकॉय सिस्टम की पहचान करें और गलत सकारात्मक से बचें | [honeypotscan.pages.dev](https://honeypotscan.pages.dev) |
सभी उपकरण गोपनीयता-प्रथम डिजाइन सिद्धांतों के साथ Cloudflare के एज नेटवर्क पर चलते हैं।
---
## आर्किटेक्चर अवलोकन```
Browser / curl
│
▼
┌─────────────────────────────────────┐
│ Cloudflare Pages │
│ Next.js App Router (SSR) │
│ │
│ app/page.tsx search form │
│ app/host/[query]/page.tsx │
│ └─ streams /api/stream?q=… │
│ app/api/recent/route.ts │
│ └─ recent searches for homepage │
│ app/targets/page.tsx │
│ └─ monitoring dashboard │
│ app/api/targets/route.ts │
│ └─ saved targets CRUD │
│ returns riskScore + lastDiff │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ app/api/lookup/route.ts │
│ (Workers runtime via opennextjs) │
│ • input validation │
│ • per-IP rate limiting (KV) │
│ • ctx.waitUntil(recordSearch()) │
└──────────────┬──────────────────────┘
│ runLookup()
▼
┌─────────────────────────────────────┐
│ worker/lookup.ts — orchestrator │
│ 4-layer Promise.allSettled │
└──┬──────────────────────────────────┘
│
├─► Layer 1+2 (parallel, 12 sources):
│ InternetDB · IPinfo · RIPE stat · RDAP · crt.sh · HackerTarget · Robtex
│ URLhaus · ThreatFox · MalwareBazaar · Feodo · SSLBL
├─► Layer 3 (after L1): NVD CVE enrichment (only if vulns found, batched 10-at-a-time)
└─► Layer 4 (parallel): GrayHatWarfare · Wayback (domain queries only)
│
▼
┌──────────────────────┐ ┌──────────────────────┐
│ D1 │ │ KV │
│ source response cache│ │ rate limiting │
│ (TTL per source) │ │ circuit breakers │
│ searches │ │ concurrency counters │
│ saved_targets │ │ │
└──────────────────────┘ └──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ seekyou-cron (Worker) │
│ wrangler.cron.toml │
│ • hourly blocklist refresh │
│ • hourly saved-target re-query │
│ + typed diff (lib/diff.ts) │
│ + webhook on hasChanges │
└─────────────────────────────────────┘
लेयर 1 और 2 एक साथ कार्य करते हैं (एक Promise.allSettled में 12 स्रोत)। लेयर 3 लेयर 1 के स्थिर होने के बाद शुरू होता है — InternetDB से CVE IDs NVD संवर्धन को चलाते हैं, API पर भीड़ से बचने के लिए एक बार में 10 बैच किए जाते हैं। लेयर 4 लेयर 3 के समानांतर कार्य करता है लेकिन केवल डोमेन क्वेरी के लिए; IP/ASN इसे पूरी तरह से छोड़ देते हैं। कुल दीवार-घड़ी समय ≈ max(लेयर 1+2) + max(लेयर 3+4)।
किसी भी क्वेरी को ?refresh=1 के साथ ज़बरदस्ती ताज़ा करें ताकि D1 कैश को बायपास कर हर अपस्ट्रीम से लाइव डेटा खींच सकें।
Feodo और SSLBL को बल्क ब्लॉकलिस्ट के रूप में लाया जाता है और क्रॉन वर्कर द्वारा हर घंटे ताज़ा किया जाता है — कोई प्रति-क्वेरी अपस्ट्रीम कॉल नहीं।
SeekYou/ ├── app/ │ ├── page.tsx # Homepage — search form + recent searches │ ├── layout.tsx # Root layout │ ├── globals.css │ ├── about/ # About page │ ├── faq/ # FAQ page │ ├── targets/ │ │ └── page.tsx # /targets — monitoring dashboard (risk + diffs) │ ├── host/[query]/ │ │ └── page.tsx # SSR host report page (streams via /api/stream) │ ├── api/ │ │ ├── lookup/route.ts # GET /api/lookup?q=&refresh=1 │ │ ├── stream/route.ts # GET /api/stream?q= (SSE streaming) │ │ ├── recent/route.ts # GET /api/recent?limit=5 │ │ ├── batch/route.ts # POST /api/batch (multi-query) │ │ ├── targets/route.ts # GET /api/targets (+ riskScore, lastDiff) · POST │ │ ├── targets/[id]/route.ts # DELETE /api/targets/:id │ │ └── admin/reset-breaker/ # POST — manual circuit-breaker reset │ └── components/ │ ├── AnimatedTagline.tsx │ ├── Card.tsx │ ├── CopyButton.tsx │ ├── CveDrawer.tsx │ ├── DecryptedText.tsx │ ├── ExportButton.tsx # JSON export (client, zero backend) │ ├── Footer.tsx │ ├── RecentSearches.tsx # Recent queries from D1 (client) │ ├── RiskBadge.tsx # Risk score pill with breakdown tooltip │ ├── SaveButton.tsx # Save/unsave target │ ├── ScrollProgress.tsx │ ├── ShareButton.tsx │ ├── VulnsStream.tsx # Streaming CVE results │ └── ui/ # Shared UI primitives ├── worker/ │ ├── lookup.ts # 4-layer orchestrator │ ├── cron.ts # Hourly blocklist refresh + target sweep w/ typed diff │ ├── index.ts │ └── sources/ │ ├── internetdb.ts │ ├── ipapi.ts │ ├── bgpview.ts │ ├── rdap.ts │ ├── crtsh.ts │ ├── passivedns.ts │ ├── robtex.ts │ ├── abusech.ts # URLhaus + ThreatFox + MalwareBazaar │ ├── nvd.ts # NVD + CIRCL CVE enrichment │ ├── osv.ts # OSV.dev re-export (via nvd.ts) │ ├── grayhatwarfare.ts │ └── wayback.ts ├── lib/ │ ├── types.ts # All TypeScript interfaces │ ├── cache.ts # D1 cache wrapper (cacheGet/cachePut, bypass on forceRefresh) │ ├── config.ts # All magic numbers: TTLs, timeouts, limits │ ├── diff.ts # TargetDiff — typed change detection between snapshots │ ├── errors.ts # Unified error format + ErrorCode enum │ ├── hooks.ts # Shared React hooks │ ├── keyring.ts # GHW 18-key rotation │ ├── logger.ts # Structured logging │ ├── merge.ts # Result merging │ ├── normalize.ts # Threat indicator normalization │ ├── ratelimit.ts # KV-based per-IP rate limiter + circuit breakers │ ├── results.ts # SourceResult helpers │ ├── risk.ts # computeRiskScore — scored 0–100 with breakdown │ ├── searches.ts # D1 helpers: recordSearch, getRecentSearches │ ├── targets.ts # D1 helpers: saveTarget, listTargets, removeTarget │ ├── textAnimation.ts # Text animation utility │ ├── useHostStream.ts # SSE streaming hook for host results │ ├── validate.ts # Query parsing (IPv4/v6/domain/ASN) │ └── utils.ts ├── test/ │ ├── cache.test.ts │ ├── diff.test.ts # Tests for diffHostResults + summariseDiff │ ├── keyring.test.ts │ ├── logger.test.ts │ ├── merge.test.ts │ ├── normalize.test.ts │ ├── results.test.ts │ ├── risk.test.ts │ ├── validate.test.ts │ └── sources/ ├── docs/ │ ├── ROADMAP.md │ ├── Spec.md │ └── LICENSE.md ├── public/ │ └── publiceth.svg # Donation QR code ├── schema.sql # D1 schema (apply with wrangler d1 execute) ├── wrangler.toml # Pages build config (KV + D1 bindings) ├── wrangler.cron.toml # Cron worker config (separate deploy) ├── next.config.ts ├── open-next.config.ts └── vitest.config.ts
---
## प्रमुख डिज़ाइन निर्णय
### एज-फर्स्ट, कोई Node.js नहीं
Workers runtime via `@opennextjs/cloudflare` — no `runtime = 'edge'` export needed. Pure Web APIs throughout. Cold starts under 50 ms globally.
### स्तरित समानांतर निष्पादन
परत 1 और 2 एक साथ सक्रिय होते हैं (12 स्रोत)। परत 3 (CVE संवर्धन) केवल तब चलती है जब InternetDB को कमजोरियाँ मिलती हैं, एक बार में 10 बैच में। परत 4 (GHW + Wayback) परत 3 के समानांतर चलती है, लेकिन IP/ASN क्वेरी के लिए पूरी तरह छोड़ दी जाती है। कुल समय ≈ प्रत्येक तरंग में सबसे धीमे स्रोत के बराबर, सभी स्रोतों के योग के बराबर नहीं।
### सुंदर अवनति
प्रत्येक स्रोत को सर्किट ब्रेकर + try/catch में लपेटा गया है। विफल स्रोत `{ status: 'error' }` बैज बन जाता है। पृष्ठ हमेशा रेंडर होता है।
### D1 + KV भंडारण का विभाजन
स्रोत प्रतिक्रिया कैश **D1** में रहते हैं (KV में नहीं) — मान एक बार लिखे जाते हैं, कभी-कभी पढ़े जाते हैं, और इतने बड़े होते हैं कि KV की लेखन-कोटा लागत तेजी से बढ़ती है। **KV** विशेष रूप से हॉट-पथ काउंटरों के लिए आरक्षित है: दर सीमा, सर्किट ब्रेकर, और प्रगति पर समवर्ती ट्रैकिंग। प्रत्येक स्रोत का अपना TTL है (CVE के लिए 30 दिन, BGP/RDAP के लिए 24 घंटे, मुख्य geo/ports के लिए 1 घंटा, abuse.ch के लिए 30 मिनट)। `?refresh=1` प्रत्येक फ़ेचर के माध्यम से `forceRefresh: true` थ्रेड करता है ताकि मांग पर D1 कैश को बायपास किया जा सके।
### मुफ्त-स्तर अनुकूलन
GrayHatWarfare में 18-कुंजी रोटेशन है (1,800 अनुरोध/दिन)। NVD अनुरोध बैचिंग का उपयोग करता है (अधिकतम 10 समवर्ती)। Feodo/SSLBL को क्रॉन वर्कर द्वारा बल्क सूचियों के रूप में लाया जाता है और KV में कैश किया जाता है — प्रति-क्वेरी अपस्ट्रीम लागत शून्य।
### फायर-एंड-फॉरगेट D1 राइट्स
`recordSearch()` को `ctx.waitUntil()` के अंदर कॉल किया जाता है — यह API प्रतिक्रिया में कोई विलंब नहीं जोड़ता। D1 राइट्स प्रतिक्रिया फ्लश होने के बाद होते हैं।
---
## कैशिंग रणनीति
स्रोत प्रतिक्रियाओं को **D1** में मैन्युअल TTL के साथ कैश किया जाता है, जिसे `expires_at` कॉलम के माध्यम से लागू किया जाता है। KV का उपयोग प्रतिक्रिया कैशिंग के लिए नहीं किया जाता है — यह दर सीमा, सर्किट ब्रेकर, और प्रगति पर समवर्ती काउंटरों के लिए आरक्षित है जहां कम-विलंबता परमाणु वृद्धि मायने रखती है।```typescript
// lib/cache.ts
export async function cacheGet<T>(
db: D1Database,
key: string,
bypass?: boolean, // true when ?refresh=1
): Promise<T | null>
export async function cachePut<T>(
db: D1Database,
key: string,
value: T,
ttl: number, // seconds
): Promise<void>
Cache keys follow the pattern source:normalised_query — e.g. internetdb:1.1.1.1, crtsh:example.com.
TTLs by source (from lib/cache.ts):
Errors are never cached — a failed fetch always retries on the next request. Expired rows are returned as a miss and lazily overwritten; no background cleanup is needed.
KV-based sliding window: 100 requests per IP per hour. Implemented in lib/ratelimit.ts, enforced in app/api/lookup/route.ts before any lookup runs.
Rate-limit headers are returned on every response:``` X-RateLimit-Limit: 100 X-RateLimit-Remaining: 87 X-RateLimit-Reset: 1716912000
समाप्त होने पर, API `429` स्थिति कोड `Retry-After` के साथ लौटाता है।
---
## सर्किट ब्रेकर
प्रत्येक स्रोत का एक सर्किट ब्रेकर होता है जो KV में ट्रैक किया जाता है। यदि कोई स्रोत 5 मिनट की खिड़की में (न्यूनतम 4 अनुरोध) **50% विफलता दर** से अधिक हो जाता है, तो ब्रेकर खुल जाता है और स्रोत को **15 मिनट** के लिए छोड़ दिया जाता है (`{ status: 'skipped' }` लौटाता है), फिर स्वतः ठीक हो जाता है।
प्रत्येक ब्रेकर की वर्तमान स्थिति प्रत्येक API प्रतिक्रिया पर `meta.circuitBreakers` में शामिल होती है।
उत्पादन में मैन्युअल रूप से ब्रेकर रीसेट करने के लिए:```bash
curl -X POST https://seekyou.seekyou.workers.dev/api/admin/reset-breaker \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"source": "nvd"}'
GrayHatWarfare प्रति API कुंजी 100 अनुरोध/दिन की अनुमति देता है। SeekYou अधिकतम 18 कुंजियों को घुमाता है, जिससे प्रभावी रूप से 1,800 अनुरोध/दिन होते हैं:```typescript // lib/keyring.ts — round-robin across keys with remaining quota const key = await keyRing.next(env, 'GRAYHATWARFARE_API_KEY')
कुंजियों के नाम `GRAYHATWARFARE_API_KEY_1` से `GRAYHATWARFARE_API_KEY_18` तक हैं और Wrangler secrets के रूप में संग्रहीत हैं।
---
## D1 स्थायित्व
### स्कीमा (`schema.sql`)```sql
CREATE TABLE IF NOT EXISTS searches (
id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(8)))),
query TEXT NOT NULL,
query_type TEXT NOT NULL CHECK (query_type IN ('ip','domain','asn')),
result_json TEXT NOT NULL,
duration_ms INTEGER,
created_at INTEGER NOT NULL DEFAULT (unixepoch())
);
CREATE INDEX IF NOT EXISTS idx_searches_query
ON searches (query, created_at DESC);
CREATE TABLE IF NOT EXISTS saved_targets (
id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(8)))),
query TEXT NOT NULL UNIQUE,
label TEXT,
notes TEXT,
result_json TEXT, -- snapshot of last cron lookup
checked_at INTEGER, -- unix seconds — when cron last re-queried
created_at INTEGER NOT NULL DEFAULT (unixepoch())
);
CREATE INDEX IF NOT EXISTS idx_saved_targets_created
ON saved_targets (created_at DESC);
wrangler d1 execute seekyou --file=schema.sql
### सहायक फलन
**`lib/searches.ts`** — खोज इतिहास:```typescript
// Write a search row (fire-and-forget safe)
await recordSearch(db, query, queryType, resultJson, durationMs)
// Read last N distinct queries for the homepage (default 5)
const recent = await getRecentSearches(db, 5)
// → [{ query: '1.1.1.1', query_type: 'ip', created_at: 1716912000 }, ...]
lib/targets.ts — सहेजे गए लक्ष्य:```typescript
// Upsert a target (idempotent on query)
const id = await saveTarget(db, query, label, notes)
// List all saved targets const targets = await listTargets(db)
// Remove by id await removeTarget(db, id)
// Fetch one (used by cron before re-querying) const target = await getTarget(db, id)
// Write latest snapshot after cron re-query await updateTargetSnapshot(db, id, resultJson)
---
## क्रोन वर्कर
एक स्टैंडअलोन वर्कर (`worker/cron.ts`) को `wrangler.cron.toml` के माध्यम से अलग से तैनात किया जाता है। यह **प्रति घंटा ट्रिगर** पर चलता है और दो कार्य करता है:
1. **ब्लॉकलिस्ट रिफ्रेश** — जाँचता है कि Feodo/SSLBL बल्क सूचियाँ पुरानी हैं या नहीं और आवश्यकता होने पर उन्हें पुनः डाउनलोड करता है।
2. **सहेजे गए लक्ष्यों की सफाई** — प्रत्येक सहेजे गए लक्ष्य को फिर से क्वेरी करता है, एक टाइप किया हुआ `TargetDiff` तैयार करता है, ताजा स्नैपशॉट को D1 में संग्रहीत करता है, और जब परिवर्तन पाए जाते हैं तो एक वेबहुक पेलोड POST करता है।
### टाइप किया गया अंतर (`lib/diff.ts`)
प्रत्येक पुनः क्वेरी के बाद, `diffHostResults(prev, next)` एक संरचित `TargetDiff` उत्पन्न करता है जो निम्नलिखित को कवर करता है:
| संकेत | यह क्या पहचानता है |
|---|---|
| `ports` | खुले / बंद पोर्ट (प्रति पोर्ट दिशा) |
| `cves` | CVE प्रकट / हल, CVSS गंभीरता और स्कोर के साथ |
| `threats` | URLhaus, Feodo, SSLBL, ThreatFox फ़ीड परिवर्तन |
| `geo` | देश, ASN, या प्राथमिक होस्टनाम परिवर्तन |
| `certExpiry` | 30 दिनों के भीतर समाप्त होने वाले या नए समाप्त हुए प्रमाणपत्र (प्रति प्रमाणपत्र एक बार सक्रिय होता है) |
| `risk` | जोखिम स्कोर डेल्टा — केवल `hasChanges` में दिखाई देता है जब Δ ≥ 5 अंक |
`summariseDiff(diff, query)` संरचना को लॉग और वेबहुक रिले के लिए मानव-पठनीय स्ट्रिंग में परिवर्तित करता है।
### वेबहुक पेलोड
जब `diff.hasChanges` सत्य है और `WEBHOOK_URL` सेट है, तो क्रोन POST करता है:```json
{
"sentAt": 1716912000,
"events": [
{
"targetId": "abc123",
"query": "1.2.3.4",
"checkedAt": 1716912000,
"summary": "1.2.3.4:\n port 3389 opened\n CVE-2021-44228 appeared [CRITICAL 10]",
"diff": {
"diffedAt": 1716912000,
"hasChanges": true,
"ports": [{ "port": 3389, "direction": "opened" }],
"cves": [{ "id": "CVE-2021-44228", "direction": "appeared", "severity": "CRITICAL", "score": 10 }],
"threats": [],
"geo": [],
"certExpiry": [],
"risk": { "prev": 20, "next": 55, "delta": 35 }
}
}
]
}
diff फ़ील्ड पूरी तरह से संरचित है — उपभोक्ता विशिष्ट परिवर्तन प्रकारों पर शाखा लगा सकते हैं बिना स्ट्रिंग लाइनों को पार्स किए। summary फ़ील्ड Slack/Discord रिले के लिए पूर्व-स्वरूपित है।
क्रॉन वर्कर को तैनात करें:```bash wrangler deploy --config wrangler.cron.toml
क्रॉन वर्कर के लिए रहस्य अलग से सेट किए जाते हैं:```bash
wrangler secret put NVD_KEY --config wrangler.cron.toml
wrangler secret put ABUSECH_KEY --config wrangler.cron.toml
wrangler secret put WEBHOOK_URL --config wrangler.cron.toml # optional — fires on any hasChanges
npm i -g wrangler)git clone https://github.com/Teycir/SeekYou cd SeekYou npm install
cp .env.example .env
npm run dev
The app is available at `http://localhost:3000`. In local dev, KV and D1 use Wrangler's local SQLite-backed emulation — no Cloudflare account access needed for basic testing.
### एक बार Cloudflare संसाधन बनाएं (पहली बार)```bash
# Create KV namespace — copy the ID into wrangler.toml
wrangler kv namespace create KV
# Create D1 database — copy the ID into wrangler.toml
wrangler d1 create seekyou
# Apply schema
wrangler d1 execute seekyou --file=schema.sql
bash scripts/deploy.sh
स्क्रिप्ट `opennextjs-cloudflare build` चलाती है, Pages आउटपुट डायरेक्टरी तैयार करती है, और `wrangler pages deploy .open-next` कॉल करती है। `npm run deploy` या सीधे `wrangler deploy` का **न** उपयोग करें — वे Workers (गैर-Pages) रनटाइम को लक्षित करते हैं और विफल होंगे।
क्रोन वर्कर को अलग से तैनात करने के लिए:```bash
wrangler deploy --config wrangler.cron.toml
wrangler.toml)```tomlname = "seekyou" pages_build_output_dir = ".open-next" compatibility_date = "2025-05-01" compatibility_flags = ["nodejs_compat"]
[[kv_namespaces]] binding = "KV" id = ""
[[d1_databases]] binding = "DB" database_name = "seekyou" database_id = ""
---
## गुप्त जानकारी और पर्यावरण चर
सभी गुप्त जानकारी Wrangler रहस्य के रूप में संग्रहीत की जाती है — कभी भी स्रोत कोड या `.env` में नहीं।
### आवश्यक गुप्त जानकारी```bash
wrangler secret put NVD_KEY # NVD API key (optional — higher rate limits)
wrangler secret put ABUSECH_KEY # abuse.ch API key (URLhaus/ThreatFox/MalwareBazaar)
wrangler secret put ADMIN_TOKEN # Bearer token for /api/admin/* endpoints
# GrayHatWarfare — repeat for each key you have (1–18)
wrangler secret put GRAYHATWARFARE_API_KEY_1
wrangler secret put GRAYHATWARFARE_API_KEY_2
# ... up to GRAYHATWARFARE_API_KEY_18
.env.example (केवल स्थानीय विकास के लिए)```bashNVD_KEY=your_nvd_key_here ABUSECH_KEY=your_abusech_key_here ADMIN_TOKEN=change_me GRAYHATWARFARE_API_KEY_1=your_ghw_key_here
> **सुरक्षा नोट:** `.env` को कभी कमिट न करें। यह `.gitignore` में है। यदि रहस्य कभी कमिट हो गए थे, तो सभी कुंजियाँ बदलें और BFG (`bfg --delete-files .env`) से git इतिहास साफ़ करें।
---
## लाइसेंस
**बिजनेस सोर्स लाइसेंस 1.1 (BSL)**
Copyright © 2026 Teycir Ben Soltane <[email protected]>
अनुमत: व्यक्तिगत उपयोग, अनुसंधान, शिक्षा, गैर-वाणिज्यिक परियोजनाएँ, आंतरिक व्यावसायिक उपकरण।
प्रतिबंधित: वाणिज्यिक SaaS सेवाएँ, सेवा के रूप में पुनर्विक्रय, प्रतिस्पर्धी उत्पाद।
रिलीज़ तिथि से 4 वर्षों के बाद, यह सॉफ़्टवेयर Apache 2.0 में परिवर्तित हो जाता है।
पूर्ण शर्तों के लिए [docs/LICENSE.md](https://github.com/teycir/seekyou/blob/master/docs/LICENSE.md) देखें।
---
## लेखक
**Teycir Ben Soltane**
ईमेल: [email protected]
GitHub: [@Teycir](https://github.com/Teycir)
---
## आभार
- [InternetDB](https://internetdb.shodan.io) (Shodan)
- [IPinfo](https://ipinfo.io)
- [RIPE stat](https://stat.ripe.net)
- [RDAP](https://rdap.org)
- [crt.sh](https://crt.sh)
- [HackerTarget](https://hackertarget.com)
- [Robtex](https://www.robtex.com)
- [abuse.ch](https://abuse.ch) — URLhaus, ThreatFox, MalwareBazaar, Feodo, SSLBL
- [NVD](https://nvd.nist.gov) (NIST)
- [CIRCL](https://www.circl.lu/services/cve-search/)
- [OSV.dev](https://osv.dev)
- [GrayHatWarfare](https://grayhatwarfare.com)
- [Internet Archive](https://web.archive.org) (Wayback Machine)
---
## 🌐 संबंधित परियोजनाएँ
अधिक गोपनीयता-प्रथम और सुरक्षा उपकरणों का अन्वेषण करें:
### गोपनीयता और एन्क्रिप्शन
- **[Timeseal](https://github.com/Teycir/Timeseal)** - Dead Man's Switch के साथ समय-बंद एन्क्रिप्शन वॉल्ट। AES-256 स्प्लिट-की क्रिप्टो, क्षणिक सील।
- **[Sanctum](https://github.com/Teycir/Sanctum)** - क्रिप्टोग्राफिक प्रशंसनीय अस्वीकार्यता के साथ शून्य-विश्वास एन्क्रिप्टेड वॉल्ट। XChaCha20-Poly1305, Argon2id।
- **[GhostChat](https://github.com/Teycir/GhostChat)** - WebRTC के माध्यम से वास्तविक P2P एन्क्रिप्टेड चैट। कोई सर्वर नहीं, कोई भंडारण नहीं, आत्म-विनाशकारी संदेश।
- **[xmrproof](https://github.com/Teycir/xmrproof)** - Monero भुगतान सत्यापन, 100% क्लाइंट-साइड।
- **[GhostReceipt](https://github.com/Teycir/GhostReceipt)** - शून्य-ज्ञान प्रमाणों के साथ गुमनाम रसीद निर्माण।
### सुरक्षा उपकरण
- **[BurpAPISecuritySuite](https://github.com/Teycir/BurpAPISecuritySuite)** - API सुरक्षा परीक्षण के लिए Burp Suite एक्सटेंशन। 15 आक्रमण प्रकार, 108+ पेलोड, BOLA/IDOR का पता लगाना।
- **[Mcpwn](https://github.com/Teycir/Mcpwn)** - Model Context Protocol सर्वरों के लिए स्वचालित सुरक्षा स्कैनर। RCE, पथ ट्रैवर्सल, प्रॉम्प्ट इंजेक्शन का पता लगाता है।
- **[DiffCatcher](https://github.com/Teycir/DiffCatcher)** - Git रिपॉजिटरी खोज, डिफ़ कैप्चर, कोड तत्व निष्कर्षण।
- **[HoneypotScan](https://github.com/Teycir/HoneypotScan)** - सुरक्षा अनुसंधान के लिए हनीपॉट पहचान सेवा।
- **[CheckAPI](https://github.com/Teycir/CheckAPI)** - कई प्रदाताओं के लिए LLM API कुंजी सत्यापक। गोपनीयता-प्रथम, क्लाइंट-साइड सत्यापन।
### MCP सुरक्षा सर्वर
- **[burp-mcp-server](https://github.com/Teycir/burp-mcp-server)** - Burp Suite Professional के लिए MCP सर्वर। AI सहायकों के माध्यम से भेद्यता स्कैनिंग।
- **[nuclei-mcp](https://github.com/Teycir/nuclei-mcp)** - Nuclei के लिए MCP सर्वर। बहु-लक्ष्य स्कैनिंग, गंभीरता फ़िल्टरिंग।
- **[nmap-mcp](https://github.com/Teycir/nmap-mcp)** - Nmap के लिए MCP सर्वर। गुप्त टोही, भेद्यता/NSE स्कैनिंग।
- **[frida-mcp](https://github.com/Teycir/frida-mcp)** - Frida के लिए MCP सर्वर। डायनामिक इंस्ट्रुमेंटेशन, SSL पिनिंग बाईपास।
---
## 💼 प्रदान की जाने वाली सेवाएँ
- 🔒 **गोपनीयता-प्रथम विकास** - P2P अनुप्रयोग, एन्क्रिप्टेड संचार, शून्य-ज्ञान प्रणाली
- 🚀 **वेब अनुप्रयोग विकास** - Next.js, React, TypeScript के साथ फुल-स्टैक विकास
- 🔧 **एज कंप्यूटिंग समाधान** - Cloudflare Workers, Pages, D1, KV, Durable Objects
- 🛡️ **सुरक्षा उपकरण विकास** - Burp एक्सटेंशन, प्रवेश परीक्षण उपकरण, ऑटोमेशन फ्रेमवर्क
- 🤖 **AI एकीकरण** - LLM-संचालित अनुप्रयोग, बुद्धिमान ऑटोमेशन, कस्टम AI समाधान
- 🔍 **OSINT और खतरा खुफिया** - कस्टम टोही उपकरण, खतरा फ़ीड एकत्रीकरण, IOC सहसंबंध
**संपर्क करें**: [teycirbensoltane.tn](https://teycirbensoltane.tn) | फ्रीलांस परियोजनाओं और परामर्श के लिए उपलब्ध
---
<div align="center">
**💚 के साथ बनाया गया [Teycir Ben Soltane](https://teycirbensoltane.tn) द्वारा**
</div>
| परत | स्रोत | क्या प्रदान करता है | प्रमाणीकरण आवश्यक |
|---|
| 1 | InternetDB | खुले पोर्ट, CPE, CVE IDs | नहीं |
| 1 | IPinfo | भू-स्थान, ISP, ASN, anycast फ़्लैग | नहीं |
| 1 | RIPE stat | BGP प्रीफ़िक्स, ASN धारक, RIR | नहीं |
| 1 | RDAP | पंजीकरण, संपर्क, नेमसर्वर, CIDR | नहीं |
| 2 | crt.sh | प्रमाणपत्र इतिहास, SAN, जारीकर्ता श्रृंखला | नहीं |
| 2 | HackerTarget | निष्क्रिय DNS — रिवर्स IP और होस्ट खोज | नहीं |
| 2 | Robtex | रिवर्स/फ़ॉरवर्ड DNS, AS जानकारी | नहीं |
| 2 | URLhaus | मैलवेयर वितरण URL | ABUSECH_KEY |
| 2 | ThreatFox | IOC डेटाबेस | ABUSECH_KEY |
| 2 | MalwareBazaar | मैलवेयर सैंपल मेटाडेटा | ABUSECH_KEY |
| 2 | Feodo Tracker | बॉटनेट C2 IPs | नहीं (बल्क डाउनलोड) |
| 2 | SSLBL | दुर्भावनापूर्ण SSL प्रमाणपत्र | नहीं (बल्क डाउनलोड) |
| 3 | NVD + CIRCL | CVE विवरण, CVSS v2/v3 स्कोर | NVD_KEY (वैकल्पिक) |
| 4 | GrayHatWarfare | उजागर S3/Azure/GCS बकेट | GRAYHATWARFARE_API_KEY_1..18 |
| 4 | Wayback | ऐतिहासिक CDX स्नैपशॉट | नहीं |
| Source(s) | TTL |
|---|
| CVE (NVD/CIRCL) | 30 days |
| Wayback | 7 days |
| BGP, RDAP, Robtex | 24 hours |
| crt.sh, HackerTarget passive DNS | 12 hours |
| GrayHatWarfare | 6 hours |
| InternetDB, IPinfo | 1 hour |
| Feodo, SSLBL (bulk) | 1 hour |
| URLhaus, ThreatFox, MalwareBazaar | 30 minutes |