anonproxy 0.2.0__tar.gz → 0.2.1__tar.gz
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.
- {anonproxy-0.2.0 → anonproxy-0.2.1}/PKG-INFO +25 -1
- {anonproxy-0.2.0 → anonproxy-0.2.1}/README.md +24 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/proxy/app.py +1 -1
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy.egg-info/PKG-INFO +25 -1
- {anonproxy-0.2.0 → anonproxy-0.2.1}/pyproject.toml +1 -1
- {anonproxy-0.2.0 → anonproxy-0.2.1}/LICENSE +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/__init__.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/__main__.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/audit.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/cli.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/config.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/__init__.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/anonymizer_slm.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/gliner2_detector.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/gliner_detector.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/llm_detector.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/openai_pii_detector.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/piiranha_detector.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/regex_detector.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/detectors/scope_detector.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/engine.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/mcp_wrapper.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/profiles.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/proxy/__init__.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/proxy/streaming.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/proxy/transform.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/restorer.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/surrogates.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/vault.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/verify.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy/wizard.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy.egg-info/SOURCES.txt +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy.egg-info/dependency_links.txt +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy.egg-info/entry_points.txt +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy.egg-info/requires.txt +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/anonproxy.egg-info/top_level.txt +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/setup.cfg +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_audit.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_audit_confidence.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_config.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_detectors.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_gemini.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_llm_detector.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_mcp_wrapper.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_packaging.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_polish.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_profiles.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_proxy.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_regex_quality.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_restorer_fuzz.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_roundtrip.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_sanitize_empty_blocks.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_scope.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_streaming.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_streaming_tooljson.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_tool_calls.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_vault.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_vault_crypto.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_vault_prune.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_verify.py +0 -0
- {anonproxy-0.2.0 → anonproxy-0.2.1}/tests/test_webapp.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anonproxy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Reversible anonymization proxy for sending pentest data to LLMs
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -304,6 +304,30 @@ echo 'Host dc01.acmecorp.local at 10.20.0.10, NTLM 8846f7eaee8fb117ad06bdd830b75
|
|
|
304
304
|
| python -m anonproxy anon --engagement acme-2026
|
|
305
305
|
```
|
|
306
306
|
|
|
307
|
+
## Using it from Burp Suite
|
|
308
|
+
|
|
309
|
+
Three ways, all sharing one vault — the same value is always the same
|
|
310
|
+
surrogate across Claude Code, the OpenAI SDK and Burp:
|
|
311
|
+
|
|
312
|
+
1. **Claude Code / MCP (most common)** — nothing to configure in Burp. Your
|
|
313
|
+
MCP tool results flow through the proxy (`ANTHROPIC_BASE_URL`), which
|
|
314
|
+
anonymizes them like any other tool output.
|
|
315
|
+
2. **Right-click → Copy anonymized** — select any request/response in Proxy
|
|
316
|
+
history, Repeater or a message editor, right-click, and the full HTTP
|
|
317
|
+
text lands on your clipboard with surrogates applied. Paste into
|
|
318
|
+
claude.ai, ChatGPT, a ticket — anywhere. Fails closed: if the engine is
|
|
319
|
+
unreachable, nothing is copied.
|
|
320
|
+
3. **Repeater pointed at an LLM endpoint** — add the header `X-Anonproxy:
|
|
321
|
+
anon` and the extension anonymizes the Cookie header and body on the way
|
|
322
|
+
out, then deanonymizes the response.
|
|
323
|
+
|
|
324
|
+
The extension follows the **engine's active engagement** automatically
|
|
325
|
+
(whatever the menubar started) — no more drifting back to `default`.
|
|
326
|
+
Override with `-Danonproxy.engagement=acme-2026` if you ever want it
|
|
327
|
+
deliberately pinned. Grab `anonproxy-burp.jar` from the
|
|
328
|
+
[Releases](../../releases) page (or build: `cd burp && gradle jar`), load it
|
|
329
|
+
via Extensions → Add → Java. Details in `burp/README.md`.
|
|
330
|
+
|
|
307
331
|
## End-to-end example (no Burp)
|
|
308
332
|
|
|
309
333
|
Send real tool output to a real LLM through the proxy and get a useful answer
|
|
@@ -270,6 +270,30 @@ echo 'Host dc01.acmecorp.local at 10.20.0.10, NTLM 8846f7eaee8fb117ad06bdd830b75
|
|
|
270
270
|
| python -m anonproxy anon --engagement acme-2026
|
|
271
271
|
```
|
|
272
272
|
|
|
273
|
+
## Using it from Burp Suite
|
|
274
|
+
|
|
275
|
+
Three ways, all sharing one vault — the same value is always the same
|
|
276
|
+
surrogate across Claude Code, the OpenAI SDK and Burp:
|
|
277
|
+
|
|
278
|
+
1. **Claude Code / MCP (most common)** — nothing to configure in Burp. Your
|
|
279
|
+
MCP tool results flow through the proxy (`ANTHROPIC_BASE_URL`), which
|
|
280
|
+
anonymizes them like any other tool output.
|
|
281
|
+
2. **Right-click → Copy anonymized** — select any request/response in Proxy
|
|
282
|
+
history, Repeater or a message editor, right-click, and the full HTTP
|
|
283
|
+
text lands on your clipboard with surrogates applied. Paste into
|
|
284
|
+
claude.ai, ChatGPT, a ticket — anywhere. Fails closed: if the engine is
|
|
285
|
+
unreachable, nothing is copied.
|
|
286
|
+
3. **Repeater pointed at an LLM endpoint** — add the header `X-Anonproxy:
|
|
287
|
+
anon` and the extension anonymizes the Cookie header and body on the way
|
|
288
|
+
out, then deanonymizes the response.
|
|
289
|
+
|
|
290
|
+
The extension follows the **engine's active engagement** automatically
|
|
291
|
+
(whatever the menubar started) — no more drifting back to `default`.
|
|
292
|
+
Override with `-Danonproxy.engagement=acme-2026` if you ever want it
|
|
293
|
+
deliberately pinned. Grab `anonproxy-burp.jar` from the
|
|
294
|
+
[Releases](../../releases) page (or build: `cd burp && gradle jar`), load it
|
|
295
|
+
via Extensions → Add → Java. Details in `burp/README.md`.
|
|
296
|
+
|
|
273
297
|
## End-to-end example (no Burp)
|
|
274
298
|
|
|
275
299
|
Send real tool output to a real LLM through the proxy and get a useful answer
|
|
@@ -87,7 +87,7 @@ def create_app(settings: Settings | None = None,
|
|
|
87
87
|
yield
|
|
88
88
|
await client.aclose()
|
|
89
89
|
|
|
90
|
-
app = FastAPI(title="Anonproxy", version="0.2.
|
|
90
|
+
app = FastAPI(title="Anonproxy", version="0.2.1", lifespan=lifespan)
|
|
91
91
|
# exposed for tests/introspection: live engagement -> Engine cache
|
|
92
92
|
app.state.engines = engines
|
|
93
93
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anonproxy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Reversible anonymization proxy for sending pentest data to LLMs
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -304,6 +304,30 @@ echo 'Host dc01.acmecorp.local at 10.20.0.10, NTLM 8846f7eaee8fb117ad06bdd830b75
|
|
|
304
304
|
| python -m anonproxy anon --engagement acme-2026
|
|
305
305
|
```
|
|
306
306
|
|
|
307
|
+
## Using it from Burp Suite
|
|
308
|
+
|
|
309
|
+
Three ways, all sharing one vault — the same value is always the same
|
|
310
|
+
surrogate across Claude Code, the OpenAI SDK and Burp:
|
|
311
|
+
|
|
312
|
+
1. **Claude Code / MCP (most common)** — nothing to configure in Burp. Your
|
|
313
|
+
MCP tool results flow through the proxy (`ANTHROPIC_BASE_URL`), which
|
|
314
|
+
anonymizes them like any other tool output.
|
|
315
|
+
2. **Right-click → Copy anonymized** — select any request/response in Proxy
|
|
316
|
+
history, Repeater or a message editor, right-click, and the full HTTP
|
|
317
|
+
text lands on your clipboard with surrogates applied. Paste into
|
|
318
|
+
claude.ai, ChatGPT, a ticket — anywhere. Fails closed: if the engine is
|
|
319
|
+
unreachable, nothing is copied.
|
|
320
|
+
3. **Repeater pointed at an LLM endpoint** — add the header `X-Anonproxy:
|
|
321
|
+
anon` and the extension anonymizes the Cookie header and body on the way
|
|
322
|
+
out, then deanonymizes the response.
|
|
323
|
+
|
|
324
|
+
The extension follows the **engine's active engagement** automatically
|
|
325
|
+
(whatever the menubar started) — no more drifting back to `default`.
|
|
326
|
+
Override with `-Danonproxy.engagement=acme-2026` if you ever want it
|
|
327
|
+
deliberately pinned. Grab `anonproxy-burp.jar` from the
|
|
328
|
+
[Releases](../../releases) page (or build: `cd burp && gradle jar`), load it
|
|
329
|
+
via Extensions → Add → Java. Details in `burp/README.md`.
|
|
330
|
+
|
|
307
331
|
## End-to-end example (no Burp)
|
|
308
332
|
|
|
309
333
|
Send real tool output to a real LLM through the proxy and get a useful answer
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|