English · 中文
Install from Chrome Web Store:
https://chromewebstore.google.com/detail/devtools-unlock/cehphgjpnlhlonahcldfbomncionnhdo
Building a Chrome extension?
Start from
chrome-extension-boilerplate-ai
— Vite 8 · MV3 · typical prod build ~100–300ms.
Docs
·
A Chrome / Firefox extension that restores normal DevTools on sites that deliberately block inspection.
It injects before page scripts run and neutralizes anti-debug logic such as disable-devtool (and similar custom detectors), so opening DevTools no longer blanks the page, force-reloads, or redirects you away.
Many sites ship front-end “anti-debug” libraries to discourage casual inspection. A common choice is disable-devtool: once DevTools opens, the page may wipe the DOM, reload, jump to a dead URL, or freeze the tab. Streaming and player sites often go further—detectors live inside cross-origin iframes, so the parent page looks fine while the player silently dies.
That is painful when you are a developer trying to understand how a page works: network calls, player pipelines, bundling, or embedding patterns. Manual workarounds (console snippets, userscripts, one-off breakpoints) break easily and do not survive a full reload before the detector wins.
This repo started from that exact friction—sites such as anikai.watch (player frames with their own detectors; notes under analysis/anikai/)—and grew into a small, per-host unlock tool:
- Patch known detection / punishment paths early (
document_start, MAIN world) - Opt-in per hostname (default off; also covers iframe hosts found on the tab)
- Keep research samples and console/Tampermonkey fallbacks outside the store package
Intended use: legitimate front-end research, learning, and debugging. It does not grant access beyond what the browser already loads for you.
| Channel | Link |
|---|---|
| Chrome Web Store | DevTools Unlock Open |
| Unpacked Chrome | pnpm build → load dist/chrome — see Local load |
| Firefox 128+ | pnpm build:firefox — see Firefox |
| Source | github.com/webLiang/devtools-unlock |
After install: open the target site → enable unlock in the toolbar popup → the page reloads → DevTools should work normally.
devtools-unlock/
├── src/pages/ ← background, popup, unlock IIFE, embedWatch
├── public/ ← _locales + icons (copied into dist)
├── manifest.js ← MV3 source (version from package.json)
├── dist/chrome/ ← Chrome unpacked package
├── dist/firefox/ ← Firefox unpacked package
├── docs/
│ ├── firefox/ ← Firefox / AMO notes
│ ├── force-debug-blocked-sites.md
│ └── chrome-web-store/
├── analysis/ ← sample bundles / notes (not in store zip)
├── alternatives/ ← console / Tampermonkey fallbacks
├── demo-site-vite/ ← local disable-devtool victim page
├── scripts/ ← pack.sh, github-release, IIFE build, AMO source zip
├── releases/ ← versioned zip + release notes
├── SOURCE.md ← AMO reviewer rebuild steps
├── STORE.md ← publishing checklist
└── PRIVACY.md ← privacy policy
pnpm installthenpnpm build(dev:pnpm dev)- Open
chrome://extensions/→ enable Developer mode - Load unpacked → select the
dist/chromefolder (not the repo root) - Open a target site, enable unlock in the popup (page reloads)
- Console should show:
[devtools-unlock] injected — DevTools should work normally
pnpm build:firefox(dev:pnpm dev:firefox)- Open
about:debugging#/runtime/this-firefox - Load Temporary Add-on… → select
dist/firefox/manifest.json - Temporary add-ons disappear when Firefox closes. Persistent install: AMO zip from
pnpm build:firefox:zip(Gecko iddevtools-unlock@webliang, Firefox 128+).
Details: docs/firefox/README.md.
- Default: all sites off
- Toggle applies to the current hostname only
- Enabling also unlocks iframe hosts found on that tab (e.g. cross-origin video players)
- Enabling or disabling reloads the current http(s) page
pnpm build:all # Chrome → dist/chrome, Firefox → dist/firefox
pnpm build:zip # Chrome → releases/devtools-unlock_v{version}.zip
pnpm build:firefox:zip # Firefox → releases/devtools-unlock_v{version}.firefox.zip
pnpm pack:firefox:sources # AMO source zip (no node_modules) → *.firefox-sources.zipStore zips contain the contents of dist/chrome or dist/firefox (manifest at zip root). AMO also needs the source archive: SOURCE.md / docs/firefox/SOURCE.md. See STORE.md. Optional CRX (local dist.pem, not committed): pnpm build:crx.
Published listing:
https://chromewebstore.google.com/detail/devtools-unlock/cehphgjpnlhlonahcldfbomncionnhdo
Bump package.json version (copied into dist/chrome/manifest.json / dist/firefox/manifest.json at build), then:
pnpm release:github:dry # pack Chrome + Firefox zips + preview notes
pnpm release:github:full # zip → commit → tag → gh release → pushCursor command: /github-release (see .cursor/commands/github-release.md).
| Path | Contents | In zip |
|---|---|---|
dist/chrome / dist/firefox |
MV3 extension (per browser) | store zip |
src/ + build configs |
Add-on source | AMO *.firefox-sources.zip (no node_modules) |
docs/ |
Technical docs | no (except firefox notes in source zip) |
analysis/ |
Raw / deobfuscated JS | no |
alternatives/ |
Console / userscript | no |
demo-site-vite/ |
Local demo site | no |
- How to force-debug a site that blocks DevTools (中文)
- Firefox add-on (中文)
- AMO source zip (中文)
- Privacy Policy (中文)
- Chrome Web Store publishing (中文)
Other open-source tools from the same author:
| Extension | Description |
|---|---|
| Pornhub Video Downloader | Multi-resolution video download for Pornhub, Xvideos, and other supported sites. |
| Header Modify | Rewrite request headers for the current site, including iframes. |