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.
- package/README.md +61 -3
- 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,
|
|
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 #
|
|
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