XX-net/XX-Net · info

%d but server type:%s

Error message

%d but server type:%s

What it means

IP checker received HTTP 503/500 (normally 'out of quota' codes) but the Server header is not a Google frontend (no 'gws', 'Google Frontend', or 'GFE'). A 503 from a non-Google server means the IP is not a usable GFE; check fails.

Source

Thrown at code/default/gae_proxy/local/check_ip.py:60

from gae_proxy.local.config import config
from gae_proxy.local.host_manager import HostManager


class CheckIp(front_base.check_ip.CheckIp):
    def check_response(self, response):
        server_type = response.headers.get(b'Server', b"")
        if isinstance(server_type, list):
            server_type = server_type[0]
        self.logger.debug("status:%d", response.status)
        self.logger.debug("Server type:%s", server_type)

        if response.status not in self.config.check_ip_accept_status:
            return False

        if response.status in [503, 500]:
            # out of quota
            if b"gws" not in server_type and b"Google Frontend" not in server_type and b"GFE" not in server_type:
                xlog.warn("%d but server type:%s", response.status, server_type)
                return False
            else:
                return True

        try:
            content = response.read()
        except Exception as e:
            if sys.version_info[0] == 3 and (
                    isinstance(e, ConnectionError) or
                    isinstance(e, ConnectionResetError) or
                    isinstance(e, BrokenPipeError)
            ):
                return False

            self.logger.warn("app check except:%r", e)
            return False

        if self.config.check_ip_content not in content:

View on GitHub (pinned to cfa5bc17b6)

Solutions

  1. This is normal during scanning — bad IPs are discarded automatically
  2. Keep scanning to replenish good IPs; check the IP count on the status page
  3. Update XX-Net's check_ip rules if Google changed Server headers
  4. If most IPs fail, your network may be heavily poisoned — try another network/ISP
Defensive patterns

Strategy: fallback

Prevention

When it happens

Trigger: check_ip testing an IP that answers 503/500 with a non-GFE Server header — e.g. a random server, a poisoned/blocked IP, or a middlebox responding on port 443.

Common situations: GFW poisoning returning fake 503 responses, IP range scans hitting non-Google hosts, or CDN servers occupying the scanned range.

Related errors


AI-assisted analysis of XX-net/XX-Net@cfa5bc17b6 (2026-08-27). Data as JSON: /api/errors/8eb9da64d17f2049. Report an issue: GitHub.