A Chrome DevTools extension for intercepting, modifying, and reverse engineering HTTP requests.
For authorized testing and development only. Do not use this tool on systems or APIs you do not own or have explicit permission to test.
| Feature | Description |
|---|---|
| Request Interceptor | Capture all XHR + Fetch requests in real time via chrome.debugger |
| Request / Response Editor | Modify headers, body, URL params before they are sent or received |
| Rules Engine | Persistent rules: mock responses, inject/remove headers, status overrides |
| Rate Limit Bypass | Strip X-RateLimit-* headers, rotate User-Agent, add request delays |
| Replay | Resend any captured request with edits applied |
| Export | Copy as curl, fetch(), or Python requests snippet |
| API Reverse Engineering | Auto-extract Bearer tokens, API keys, URL params |
| WebSocket Monitor | Log sent/received frames with timestamps, JSON pretty-print |
Real-time request log with method, status, size, and timing
Response body inspector with JSON syntax highlighting
Rules engine — mock responses, header injection, status override
Replay a request with edits, export as cURL / fetch / Python
No build step required — load directly as an unpacked extension.
-
Clone the repo:
git clone https://github.com/Adilnasceng/requestlab.git
-
Open Chrome and go to:
chrome://extensions -
Enable Developer mode (top-right toggle).
-
Click Load unpacked and select the
requestlab/folder. -
The extension is now installed.
- Open any website you want to inspect.
- Press
F12to open Chrome DevTools. - Click the RequestLab tab in the DevTools panel.
All HTTP requests made by the page are logged automatically once the panel is open. Click any row to inspect headers, body, and response.
GET 200 /api/user/profile JSON 1.2KB 43ms
POST 201 /api/comments JSON 0.4KB 120ms
GET 429 /api/feed JSON — 12ms ← rate limited
- Click ⚙ Rules in the toolbar.
- Click + Add Rule.
- Set:
- Type:
Mock Response - URL Pattern: e.g.
api/user - Response Body: your custom JSON
- Type:
- Click Save Rule.
All matching requests will now return your mock response without hitting the server.
- Click a request in the log.
- Open the Replay tab on the right.
- Edit the method, URL, headers, or body.
- Click ▶ Send Request.
Open the Export tab on any selected request and choose:
cURL— ready to paste in terminalfetch()— JavaScript snippetPython—requestslibrary snippet
Click ⚡ RL Bypass and enable:
- Strip
X-RateLimit-*andRetry-Afterheaders from outgoing requests - Rotate User-Agent string on each request
- Add a configurable delay (ms) between requests
All 429 responses are logged separately with the Retry-After value displayed.
requestlab/
├── manifest.json # MV3 manifest
├── background/
│ └── service_worker.js # Debugger lifecycle, interception, rules engine
├── devtools/
│ ├── devtools.html # DevTools entry page
│ ├── devtools.js # Panel registration
│ ├── panel.html # Main UI
│ ├── panel.js # UI logic, virtual scroll, export
│ └── panel.css # Dark theme styles
├── popup/
│ ├── popup.html # Toolbar popup
│ ├── popup.js # Quick stats
│ └── popup.css
├── lib/
│ └── codemirror/ # Bundled CodeMirror 5.65.16 (offline)
└── icons/
└── icon.svg
| Permission | Reason |
|---|---|
debugger |
Attach to tabs to intercept requests via Chrome DevTools Protocol |
webRequest |
Monitor network activity |
declarativeNetRequest |
Apply persistent header injection / block rules |
storage |
Save rules and settings |
tabs |
Identify the inspected tab |
host_permissions: <all_urls> |
Intercept requests on any site |
Note: Chrome will display a yellow banner — "DevTools is being debugged by another tool" — when the extension is active. This is expected behavior for any extension using the
chrome.debuggerAPI and cannot be suppressed.
- Manifest V3 — service worker based, no persistent background page
- Vanilla JavaScript — no frameworks
- Chrome DevTools Protocol —
Fetchdomain for interception,Networkdomain for WebSocket monitoring - declarativeNetRequest — for persistent header rules
- CodeMirror 5 — bundled locally for JSON editing