Skip to content

feat(proxy): add HTTP egress settings and stable routing policies - #381

Open
Sycun wants to merge 6 commits into
AIPentest:mainfrom
Sycun:codex/issue-357-proxy-pool
Open

Sycun wants to merge 6 commits into
AIPentest:mainfrom
Sycun:codex/issue-357-proxy-pool

Conversation

@Sycun

@Sycun Sycun commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Proxy arguments previously applied to individual HTTP tool calls only, leaving operators without a persistent way to keep session egress stable. This PR adds Settings → Proxy settings with manual arguments, a fixed proxy, or an explicitly enabled pool. Fixed mode retains the configured endpoint across invocations; pool mode supports sticky/round-robin selection and a minimum switch interval that also prevents early failover.

The policy applies only to http-framework-test. Other Kali tools, arbitrary shell commands, external MCP servers and LLM API transports retain their existing routing. No global HTTP_PROXY changes, model-client rotation, or restarts of running tools are introduced. A fixed proxy URL still requires provider-side fixed/sticky egress to guarantee a stable public IP.

Implementation:

  • Persist and validate a proxy configuration section through the existing settings API. Saves apply to subsequent HTTP invocations without calling the platform-wide apply/restart endpoint; active processes and PTY retries retain their launch snapshot.
  • Mask saved proxy URLs, lists and provider URLs in API responses. Preserve masked values on save, roll back proxy state on save failure, and pass only active-mode credentials through a tool-specific environment snapshot instead of command arguments.
  • Support HTTP/HTTPS CONNECT/SOCKS5, static or provider-supplied proxy lists (including structured entries), provider-outage fallback to static endpoints, bounded attempts, cooldowns and rate-limit waits. Replay only GET/HEAD/OPTIONS before response bodies; never fall back to a direct target connection.
  • Keep literal request paths and existing manual/single-proxy behavior. Add Chinese, English and Russian UI text plus bilingual guidance comparing Zyte sessions, HTTPX clients, Nuclei controls and Nmap proxy limitations.

Validation: 33 Python scenarios passed on both HTTPX 0.27.0 and 0.28.1; 333 frontend tests passed; go test -race ./internal/config ./internal/security ./internal/handler and go build ./... passed. Tests cover actual local proxies/TLS/SOCKS5, managed settings overriding model arguments, switch intervals, configuration persistence/masking/rollback/hot application, and routing isolation. The settings panel was visually checked with local preview fixtures. A pre-existing shell test's process-start race was corrected so the race check is reliable.

Limits: switch timing/pool health are invocation-local; use fixed mode for stable egress across calls. HTTP 200 CAPTCHA/block pages are not classified. Status matching is a policy, not proof of an IP ban. Managed policy is not a network sandbox for arbitrary shell commands. No production deployment or real provider/target testing was performed.

Refs #357. This implements the HTTP-tool scope and does not automatically close the broader issue.

@Sycun
Sycun marked this pull request as ready for review October 31, 2026 15:32
@Sycun Sycun changed the title feat(http): add opt-in proxy pool with bounded failover feat(proxy): add HTTP egress settings and stable routing policies Oct 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant