riciplay-miniproxy 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +61 -3
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -74,6 +74,26 @@ miniproxy stop
74
74
 
75
75
  State (pid, port, default capture DB) lives under `~/.miniproxy/`.
76
76
 
77
+ ### Quieting browser noise
78
+
79
+ ```bash
80
+ miniproxy noise list # rules and their state
81
+ miniproxy noise enable # opt into the bundled telemetry/ad list
82
+ miniproxy noise add '*.telemetry.example.com'
83
+ miniproxy noise disable youtube.com # just this one
84
+ miniproxy noise rm youtube.com
85
+
86
+ miniproxy noise scan # dry run: what would go, by host
87
+ miniproxy noise clean # refuses without --yes
88
+ miniproxy noise clean --yes --keep-host target.example
89
+ ```
90
+
91
+ Enabled rules make matching hosts skip the capture **entirely** — the traffic
92
+ is still proxied, it just never reaches the DB. `clean` writes a timestamped
93
+ `.noise-backup-<date>.db` snapshot first (via SQLite's backup API) and reports
94
+ its path, so a misjudged rule is always recoverable. Works with no dashboard
95
+ and no proxy running. Full model: [docs/web-ui.md](docs/web-ui.md#noise--the-browser-noise-problem).
96
+
77
97
  ## The TUI
78
98
 
79
99
  `miniproxy tui` opens a two-pane terminal dashboard over the same SQLite capture DB the dashboard uses (it does not need the dashboard — or even the proxy — running):
@@ -122,9 +142,45 @@ Tools that ignore proxy env vars can usually be pointed explicitly (`curl -x`, `
122
142
  - **Intruder** — `§param§` placeholders + wordlist fuzzing, results by status code
123
143
  - **Connect** — PAC URL, CA download, QR code, and step-by-step settings for connecting any browser/device (including remotely)
124
144
 
145
+ ### Built for scanning, and for a phone
146
+
147
+ - **Host + Path columns** — the URL is split so you read endpoints, not the same host 200 times.
148
+ - **Resizable / collapsible panes** — drag the divider, click it to hide the detail pane. Remembered across refreshes.
149
+ - **Highlight + notes** — an 8-colour Burp-style palette per row (tap the **⋮** button — a real touch target, no right-click needed) and free-text notes. Stored with the capture, so they survive restarts.
150
+ - **Pretty / Raw / Hex** — every body, both request and response. JSON re-indented, bytes escaped, or a full hex dump with offsets and an ASCII gutter.
151
+ - **Host focus + Hide static** — one tap to narrow to your target, or drop images/fonts/css/js.
152
+ - **Noise control** — see below.
153
+
125
154
  Captures persist across refreshes and restarts until you click
126
155
  **Clear all captures…**.
127
156
 
157
+ ## Browser noise (the thing that ruins a capture)
158
+
159
+ A browser session drags in telemetry pings, ad beacons, new-tab thumbnails
160
+ and fonts. On a real Web Security Academy run: **119 captured rows, 12 on
161
+ target**. MiniProxy fights this in three layers, so you can go back to
162
+ reading the requests.
163
+
164
+ 1. **Capture time** — enable noise rules and matching hosts never reach the DB
165
+ at all (traffic is still proxied). A bundled list of known telemetry/ad
166
+ hosts ships *disabled*, so nothing is dropped until you opt in.
167
+ 2. **Query time** — the Host dropdown, the **Hide static** chip, and the
168
+ **Highlighted** chip narrow what's already captured, with a summary showing
169
+ `N shown / M fetched` and naming the noisiest hosts.
170
+ 3. **Cleanup time** — `noise scan` previews exactly what would be deleted
171
+ (broken down by host) and `noise clean` applies it. Both the CLI and the
172
+ dashboard's **Noise…** button **refuse to delete without confirmation**,
173
+ write a timestamped `.noise-backup-<date>.db` first, and can protect hosts
174
+ you name.
175
+
176
+ ```bash
177
+ miniproxy noise list # rules and their state
178
+ miniproxy noise enable # opt into the bundled telemetry/ad list
179
+ miniproxy noise add '*.telemetry.example.com'
180
+ miniproxy noise scan # dry run — never deletes
181
+ miniproxy noise clean # refuses without --yes
182
+ ```
183
+
128
184
  ## Connecting a browser (yours, a phone, or anywhere)
129
185
 
130
186
  You don't need a browser in your terminal — you need the browser to send its
@@ -165,8 +221,8 @@ src/miniproxy/
165
221
  ├── server.py # start/stop/status process manager
166
222
  ├── tui.py # Textual terminal UI (live feed, repeater, filters)
167
223
  └── __main__.py # the `miniproxy` entry point (start/stop/status/
168
- # dashboard/tui/send/log — log, send, and the TUI
169
- # work without any dashboard running)
224
+ # dashboard/tui/send/log/noise — log, noise, send,
225
+ # and the TUI work without any dashboard running)
170
226
  ```
171
227
 
172
228
  ## Development
@@ -174,7 +230,9 @@ src/miniproxy/
174
230
  ```bash
175
231
  git clone https://github.com/Zaidux/miniproxy && cd miniproxy
176
232
  pip install -e ".[dev]"
177
- pytest # 100+ tests: db, devices, API, exports, intruder, process mgr, TUI, connect
233
+ pytest # 300+ tests: db, devices, API, exports, intruder,
234
+ # process mgr, TUI, connect, noise, JS/Python parity,
235
+ # dashboard XSS
178
236
  ```
179
237
 
180
238
  CI runs the suite on Linux/macOS (Python 3.10/3.12) for every push and PR,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "riciplay-miniproxy",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "A lightweight HTTP/S interception proxy for security research — always-on capture, timing, scope guard, Repeater + Intruder dashboard",
5
5
  "main": "index.js",
6
6
  "bin": {