INNER CODE UNIT · Python

tcp_status

ermaozi/get_subscribe · check_nodes.py:57

def tcp_status(address):
    # ponytail: 只测 TCP 握手;需要验证认证和代理出口时再引入代理内核。
    host, port = address
    try:
        resolved = socket.getaddrinfo(host, port, type=socket.SOCK_STREAM)
    except OSError:
        return 'unreachable'
    public = []
    for family, socktype, proto, _, sockaddr in resolved:
        # 来源不可信,不探测宿主机内网、回环或云实例元数据地址。
        if ipaddress.ip_address(sockaddr[0]).is_global:
            public.append((family, socktype, proto, sockaddr))
    if not public:
        return 'untested'
    deadline = time.monotonic() + TIMEOUT
    for family, socktype, proto, sockaddr in public:
        remaining = deadline - time.monotonic()
        if remaining <= 0:

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…