✦ Passive · Local · Cross-browser — by JOJIN JOHN

A browser extension for authorized security testing. It inspects the JavaScript a page has already loaded — including source maps — and surfaces API endpoints, subdomains, URLs, and likely-secret material. Everything runs locally.

0+
Secret patterns
0
Severity levels
0
Browsers
0
Data sent off-device
// capabilities

What it does

Three passes — collect, analyze, triage — turn already-loaded page JavaScript into a prioritized recon report, with zero requests beyond what the page made itself.

🧠

Source-map mining

Follows //# sourceMappingURL= (URL or inline base64) and digs into .map sources — often the fastest way to find internal paths and endpoints.

🌐

Endpoint extraction

Pulls paths like /api/v2/users, absolute URLs, protocol-relative //host/... refs, and bare hostnames out of every script.

🔎

Secret detection

20+ patterns: private keys, Discord webhooks, AWS, GitHub, Slack, Stripe, OpenAI, Anthropic, GOCSPX, Telegram, SendGrid, npm, Twilio, JWTs and more.

SPA-aware

Re-scans on pushState navigation and whenever new <script> tags are injected, so results stay fresh on React, Vue, Next and Angular apps.

🚨

High-risk triage

Endpoints and subdomains matching keywords like admin, debug, internal, swagger or token are surfaced in a dedicated section.

🛡️

Read-only verification

Manual, on-demand checks against vendor identity endpoints (GitHub, Slack, Stripe, Mailgun, Discord, Telegram, OpenAI). Never automatic.

💾

Persistent findings

Results survive reloads and accumulate across pages of the same app, stored per host in chrome.storage.local.

📤

Export & copy

One-click copy for any value, plus JSON, TXT and Markdown export from the in-page panel.

🎯

Scope control

Add root domains in the options page to widen subdomain collection beyond the current page's own host.

// in action

Live scan preview

This is exactly what the in-page panel shows after scanning a typical bundle — secrets first, then high-risk and plain endpoints.

js-recon — panel
$ scan https://app.example.com
collected inline 2 · external 14 · maps 3
! triage: 2 high-risk endpoints flagged
[CRITICAL] Discord Webhook
https://discord.com/api/webhooks/1234… → LIVE
[HIGH] GitHub Token — ghp_…
! [HIGH-RISK] /admin/panel
[MEDIUM] /api/v2/users?id=1
exported js-recon-app.example.com.md (JSON · TXT · MD)
done in 1.4s · 0 bytes sent off-device
$

💡 Pro tip

Open the panel, hit the severity chips (All / Critical / High / Medium / Low / Info), and use the search box to filter hundreds of findings in seconds. Click any value to copy it.

🧩 Source maps first

If the site ships .map files, their sourcesContent often contains the pre-minified app — far richer endpoints and sometimes forgotten secrets.

🔬 Verify, don't guess

Every secret's "Verify live" button issues a single read-only call to the vendor's identity endpoint. JWTs can be decoded in place instead.

// severity rating

How findings are rated

Every secret is sorted by severity in the panel, the exports, and the popup's top-secrets list.

SeverityExamplesBadge
CriticalPrivate keys, live Discord webhooksred
HighGitHub / OpenAI / Stripe live / Slack / AWS / GOCSPXred
MediumTest keys, Telegram / SendGrid / npm / Twilio, bearer tokens, generic assignmentsamber
LowGoogle browser API keys (usually designed to be client-exposed)cyan
InfoJWTs (decode in place)cyan
// editions

Chrome vs Firefox

One codebase, two manifests. The JavaScript is identical — a tiny browser alias makes the same files work under browser.* and chrome.*.

Chrome buildFirefox build
Backgroundservice_workerscripts (event page)
Manifest extrasminimum_chrome_versionbrowser_specific_settings.gecko (121+)
Installchrome://extensions → Load unpackedabout:debugging → Load Temporary Add-On
Package…chrome-1.1.0.zip…firefox-1.1.0.xpi / .zip
Permanent installOptional — Chrome Web StoreRequires signing at addons.mozilla.org
// download

Get JS Recon Extractor

Grab the latest release, load it as an unpacked/temporary extension, and start recon.

Chrome package (zip · ~19 KB)Download ⬇
Source (chrome/ folder)Browse ↗

Install: chrome://extensions → Developer mode → Load unpacked → select the extracted folder.

Firefox add-on (xpi · ~19 KB)Download ⬇
Firefox package (zip · ~19 KB)Download ⬇
Source (firefox/ folder)Browse ↗

Install: about:debugging → Load Temporary Add-On → select the manifest or xpi. For permanent installs, sign at addons.mozilla.org.

// responsible use

Safety, scope & limitations

⚠️

Authorized testing only. JS Recon Extractor is passive — it makes no requests beyond what the page already did — but the secrets it finds are real. Only use it against applications you own or have explicit written authorization to test. Never verify or use a confirmed credential against targets outside your scope.

Expect false positives: detection is regex-based, and some keys (like Google browser API keys) are designed to be client-exposed. A confirmed secret is a critical finding — stop, notify the owner, and never exploit it beyond proof.