{% extends "base.html" %} {% from "_macros.html" import th %} {% block title %}{{ t('代理') }} · {{ t('爬虫控制台') }}{% endblock %} {% block content %}

{{ t('代理与出口') }}

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

{{ t('出口健康(每 数据源 × 代理)') }}

{{ t('加载中') }}…

{{ t('冷表快照(近实时)') }};{{ t('热状态在') }} proxy-redis.

{{ t('提供商') }}

{{ th(t('提供商')) }}{{ th(t('活跃')) }}{{ th(t('退役')) }} {% for pr in providers %} {% else %} {% endfor %}
{{ pr.name }}{{ pr.active }}{{ pr.retired }}
{{ t('没有提供商所有的代理行') }}

{{ t('导入静态端点') }}

{{ t('地址') }}

{{ th('ID') }}{{ th(t('提供商')) }}{{ th(t('端点')) }}{{ th(t('凭证')) }}{{ th(t('状态')) }} {% for p in proxies %} {% else %} {% endfor %}
{{ p.id }} {{ p.provider }} {{ p.scheme }}://{{ p.ip }}:{{ p.port }} {{ p.auth_masked }} {{ p.status }} {% if mgmt_ready %}
{% endif %}
{{ t('没有代理行') }}

{{ t('每源限速') }}

{{ th(t('数据源')) }}{{ th(t('最大 QPS')) }}{{ th(t('并发')) }} {% for r in rate_limits %} {#- form lives inside a td; inputs/buttons join it via the form attribute (a wrapping {% else %} {% endfor %}
s would be invalid HTML) -#} {% set rlform = 'rl-' ~ loop.index %}
{{ r.source }}{% if not r.throttled %} ({{ t('关') }}){% endif %}
{{ t('未配置限速(默认 1 QPS)') }}

{{ t('强制熔断重置') }}

{{ t('强制 OPEN → HALF_OPEN,绕过冷却') }};{{ t('真实封禁会自动重新打开') }}。

{{ t('封禁规则(只读)') }}

{{ th(t('数据源')) }}{{ th(t('类型')) }}{{ th(t('模式串')) }}{{ th(t('分类')) }}{{ th(t('启用')) }} {% for r in ban_rules %} {% else %} {% endfor %}
{{ r.source }}{{ r.rule_type }} {{ r.pattern }} {{ r.classification }} {{ '✓' if r.enabled else '✗' }}
{{ t('没有注册封禁规则') }}
{% endblock %}