A terminal-style Google dork builder for bug bounty recon, OSINT, and authorized penetration testing. Enter a target domain, select from 55+ pre-built dork queries across 11 categories, and launch Google searches in bulk — with optional AI strategy help and a findings notebook.
Live demo: https://dorkforge-three.vercel.app
Repository: https://github.com/telmon95/dorkforge
- Overview
- Features
- How It Works
- Dork Library
- Tech Stack
- Project Structure
- Getting Started
- Environment Variables
- Deployment
- API Reference
- Usage Guide
- Legal & Ethical Use
- Limitations
- Contributing
DorkForge is a single-page React application that helps security researchers build and execute Google dork queries against authorized targets. It does not automate searches, scrape results, or crawl targets. Instead, it:
- Generates parameterized dork strings from your target domain
- Lets you filter, select, and queue queries
- Opens selected dorks as Google search tabs in your browser
- Optionally assists with strategy via an AI chat panel
- Lets you log and export findings manually
The UI uses a fullscreen dark terminal aesthetic — monospace fonts, green-on-black, scanline overlay — designed for long recon sessions.
- 55+ pre-built dorks across 30 categories, grouped into 11 recon domains
- Target injection — enter
example.comand all{domain}/{target}placeholders are replaced automatically - Group filters — toggle Infrastructure, Files, Recon, Secrets, Errors, Vulns, Cloud, CMS, 3rd Party, OSINT
- Search filter — narrow the dork list by keyword
- Custom dorks — add your own queries at runtime
- Bulk open — launch all selected dorks as new Google tabs with one click
- Per-dork actions — copy query to clipboard or open individually
- Right-panel builder tab shows all selected dorks before launch
- Session summary: target, queued count, findings logged, active groups
- Direct Google search links for each queued query
- Claude-powered chat panel for recon strategy
- Context-aware: knows your target and selected dorks
- Suggests prioritization, explains findings, proposes additional patterns
- Requires
ANTHROPIC_API_KEYon the backend (never exposed to the browser)
- Manual logging of discoveries with severity levels (critical → info)
- Fields: query used, notes, finding description
- Export findings to
.txt - Export full session to
.json(target, queries, URLs, findings)
- JSON export — target, timestamp, all selected queries with Google URLs, findings
- Findings export — plain-text report for bug bounty submissions
TARGET → select dorks → OPEN → Google tabs → review manually → log findings
DorkForge is a redirect-based launcher, not an automated scanner:
| Action | What happens |
|---|---|
| Click OPEN | window.open() to google.com/search?q=... |
| Click OPEN on a row | Same — single tab |
| AI tab | POST /api/chat → Anthropic API (server-side) |
| Findings tab | Local state only — no backend persistence |
| Export | Client-side file download |
There is no headless browser, no search API integration, and no result parsing. You review Google results yourself and document what you find.
All dorks are defined in src/components/DorkForge.jsx inside buildDorkLibrary(domain, target).
| Group | Categories | Example dorks |
|---|---|---|
| Infrastructure | .git Folders | inurl:"/.git" example.com -github |
| Files & Docs | Backup Files, Exposed Documents, Confidential Docs, Other Interesting Files | site:example.com ext:pdf, filetype:env |
| Config & DB | Config Files, Database Files | site:example.com ext:xml | ext:conf | ext:env |
| Secrets & Keys | Private Keys & Secrets, Sensitive File Types | intext:"api_key" "example.com", inurl:.env |
| Error Leaks | SQL Errors, PHP Errors, Generic Error Leaks | site:example.com "stack trace", "PHP Warning" |
| Recon | Surface Mapping, API Surface, Frontend/JS Intel, Dev & Staging, API Documentation, Login & Admin Pages | site:*.example.com, inurl:api, inurl:graphql, filetype:js |
| Vulnerabilities | Open Redirects, Directory Listings, Apache Struts RCE | inurl:redirect, intitle:"index of" |
| CMS | WordPress Files | inurl:wp-content, inurl:wp-includes |
| Cloud & DevOps | Cloud Buckets, Traefik Dashboard, Jenkins | site:.s3.amazonaws.com "example.com" |
| 3rd Party Intel | Code Repos, Pastebin, Trello, GitHub leaks, Stack Overflow | site:pastebin.com "example.com" |
| OSINT | LinkedIn Employees | site:linkedin.com employees example.com |
These categories were added for safe, high-signal bug bounty recon:
- Surface Mapping —
site:target,site:target -www, wildcard subdomains - API Surface —
/api,/api/v1, GraphQL, REST endpoints - Frontend / JS Intel —
.jsfiles,static/js,window.__, config leaks - Dev & Staging —
dev,test,staging,sandboxenvironments - API Documentation — Swagger, OpenAPI, docs, developer portals
- Generic Error Leaks — broad error, stack trace, exception, warning signals
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite 6 |
| Styling | Inline styles, Google Fonts (JetBrains Mono, Share Tech Mono) |
| Local API | Express 4 (dev only) |
| Production API | Vercel Serverless Functions |
| AI | Anthropic Claude (claude-sonnet-4-20250514) |
| Hosting | Vercel |
dorkforge/
├── api/
│ └── chat.js # Vercel serverless + shared chat handler
├── server/
│ └── index.js # Local Express dev server (port 3001)
├── src/
│ ├── main.jsx # React entry point
│ ├── App.jsx # Root component
│ └── components/
│ └── DorkForge.jsx # Main app (dork library, UI, state)
├── index.html # HTML shell
├── vite.config.js # Vite config + API proxy
├── vercel.json # Vercel build + SPA rewrites
├── package.json
├── .env.example
└── .gitignore
DorkForge.jsx— entire frontend: dork library, UI components, state managementapi/chat.js— proxies chat requests to Anthropic; API key stays server-sideserver/index.js— local dev only; mirrors the Vercel API routevite.config.js— proxies/api/*tolocalhost:3001during development
- Node.js 18+ (22 recommended)
- npm
git clone https://github.com/telmon95/dorkforge.git
cd dorkforge
npm installnpm run dev| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| API | http://localhost:3001 |
npm run dev:clientThe AI tab will fail without the backend running.
npm run build
npm run previewCopy the example file and add your key:
cp .env.example .env| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY |
For AI tab only | Anthropic API key for /api/chat |
PORT |
No | Local Express port (default: 3001) |
The dork builder, OPEN, findings, and export work without any environment variables. Only the AI assistant needs ANTHROPIC_API_KEY.
The project is configured for Vercel out of the box.
npx vercel
npx vercel --prodOr connect the GitHub repo in the Vercel dashboard for automatic deploys on push.
Required for AI tab in production:
- Vercel → Project → Settings → Environment Variables
- Add
ANTHROPIC_API_KEY - Redeploy
{
"buildCommand": "npm run build",
"outputDirectory": "dist",
"rewrites": [
{ "source": "/api/(.*)", "destination": "/api/$1" },
{ "source": "/(.*)", "destination": "/index.html" }
]
}- Static frontend served from
dist/ /api/chathandled by serverless function inapi/chat.js- All other routes fall through to
index.html(SPA)
Proxies messages to Anthropic Claude. Used by the AI tab.
Request:
{
"system": "You are DorkForge AI...",
"messages": [
{ "role": "user", "content": "What categories should I prioritize?" }
]
}Response (200):
{
"reply": "For a typical web app bug bounty, start with..."
}Errors:
| Status | Cause |
|---|---|
400 |
Missing messages array |
405 |
Non-POST request |
500 |
Missing ANTHROPIC_API_KEY or Anthropic API error |
{ "status": "ok", "service": "dorkforge-api" }- Enter a target domain (e.g.
example.com) in the TARGET field - Use group filters to enable relevant categories (Infrastructure, Recon, Secrets, etc.)
- Expand categories on the left and check the dorks you want
- Review your selection in the QUEUE tab on the right
- Click OPEN to launch Google searches in new tabs
- Review results manually in your browser
- Log discoveries in the FINDINGS tab (optional)
- EXPORT JSON or export findings when done
- Start with Recon and Secrets groups for most bug bounty programs
- Use the search filter to find specific patterns (e.g.
api,env,admin) - Add custom dorks for program-specific queries
- Use ALL / CLEAR to quickly select or deselect everything visible
- The AI tab can suggest prioritization if you're unsure where to start
The input at the bottom of the left panel accepts raw dork strings. Examples:
intext:"api_key" "example.com"
filetype:env site:example.com
inurl:admin site:staging.example.com
Custom dorks are session-only (not persisted across page reloads).
Only use DorkForge on targets you are authorized to test.
This includes:
- Bug bounty programs with explicit scope (HackerOne, Bugcrowd, etc.)
- Penetration tests with written authorization
- Your own infrastructure and applications
- CTF / lab environments
Do not use this tool for:
- Unauthorized scanning of third-party systems
- Harassment, doxxing, or non-security OSINT
- Mass automated querying that violates Google Terms of Service
- Testing accounts, systems, or data you do not own or have permission to access
DorkForge generates search queries and opens them in your browser. You are responsible for how those queries are used and for complying with program rules, local laws, and platform terms of service.
| Limitation | Detail |
|---|---|
| No automation | Does not run searches or parse results |
| Google dependency | Subject to CAPTCHAs, rate limits, and regional restrictions |
| No persistence | Findings and custom dorks are lost on page reload |
| AI requires API key | AI tab is optional and needs backend configuration |
| No auth | No user accounts or multi-session support |
| Client-side only | All state lives in browser memory |
- Backend persistence for findings and sessions
- Program-specific preset packs (e.g. HackerOne scope targets)
- Export to recon tool formats
- Subdomain enumeration API integrations
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-dork-pack) - Commit your changes
- Push to the branch
- Open a Pull Request
When adding dorks, place them in the appropriate group inside buildDorkLibrary() in src/components/DorkForge.jsx. Keep queries focused and avoid duplicates.
Private project. All rights reserved.
Dork library sourced from real bug bounty recon methodology and BugBountyHunter reference patterns. Generic recon pack additions follow safe, high-value OSINT practices for authorized security research.