{% extends "base.html" %} {% block title %}Proxy · Crawl Control Center{% endblock %} {% block content %}

Proxy / Egress

{% if msg %}{% endif %} {% if err %}{% endif %} {% if not mgmt_ready %} {% endif %}

Egress health (per source × proxy)

loading…

Cold-table snapshot (near-realtime); hot state lives in proxy-redis.

Providers

{% for pr in providers %} {% else %} {% endfor %}
ProviderActiveRetired
{{ pr.name }}{{ pr.active }}{{ pr.retired }}
No provider-owned proxy rows.

Import static endpoints

Addresses

{% for p in proxies %} {% else %} {% endfor %}
IDProviderEndpointAuthStatus
{{ p.id }} {{ p.provider }} {{ p.scheme }}://{{ p.ip }}:{{ p.port }} {{ p.auth_masked }} {{ p.status }} {% if mgmt_ready %}
{% endif %}
No proxy rows.

Per-source rate limits

{% for r in rate_limits %} {% else %} {% endfor %}
SourceMax QPSConc.
{{ r.source }}{% if not r.throttled %} (off){% endif %}
No rate limits configured (default 1 QPS applies).

Force circuit reset

Forces OPEN → HALF_OPEN bypassing cooldown; a real ban re-opens automatically.

Ban rules (read-only)

{% for r in ban_rules %} {% else %} {% endfor %}
SourceTypePatternClassEnabled
{{ r.source }}{{ r.rule_type }} {{ r.pattern }} {{ r.classification }} {{ '✓' if r.enabled else '✗' }}
No ban rules registered.
{% endblock %}