XX-net/XX-Net · warning

app check content:%s

Error message

app check content:%s

What it means

The check request succeeded and content was read, but the expected marker (config.check_ip_content) is not present in the response body — the IP responded but not with a genuine GFE app-check reply. IP is rejected.

Source

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

                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:
            self.logger.warn("app check content:%s", content)
            return False

        return True


class CheckAllIp(object):

    def __init__(self):
        ca_certs = os.path.join(current_path, "cacert.pem")
        openssl_context = SSLContext(
            logger, ca_certs=ca_certs,
            cipher_suites=[b'ALL', b"!RC4-SHA", b"!ECDHE-RSA-RC4-SHA", b"!ECDHE-RSA-AES128-GCM-SHA256",
                           b"!AES128-GCM-SHA256", b"!ECDHE-RSA-AES128-SHA", b"!AES128-SHA"]
        )
        host_manager = HostManager()
        connect_creator = ConnectCreator(logger, config, openssl_context, host_manager,
                                         debug=True)
        self.check_ip = CheckIp(logger, config, connect_creator)

View on GitHub (pinned to cfa5bc17b6)

Solutions

  1. Update XX-Net so check_ip_url/check_ip_content match current GFE behavior
  2. If all IPs fail content check, suspect response injection — test from another network
  3. Manually curl the check URL from a good IP to see what content is returned
  4. Refill the IP list with fresh scanned ranges
Defensive patterns

Strategy: validation

Prevention

When it happens

Trigger: check_ip hitting an endpoint whose 200-response body lacks the expected content string — spoofed responses, hijacked DNS/IP, or Google changing the check URL's response.

Common situations: Firewall/ISP injecting fake 200 pages, GFE behavior change requiring a new check URL/content, or proxy interference.

Related errors


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