#!/usr/bin/env python3 import socket import ssl def http_via_proxy(sni, client_ip, path="/"): raw = socket.create_connection(("127.0.0.1", 8443), timeout=8) hdr = f"PROXY TCP4 {client_ip} 127.0.0.1 54321 8443\r\n".encode() raw.sendall(hdr) ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE tls = ctx.wrap_socket(raw, server_hostname=sni) req = ( f"GET {path} HTTP/1.1\r\n" f"Host: {sni}\r\n" f"Connection: close\r\n\r\n" ).encode() tls.sendall(req) data = b"" while True: chunk = tls.recv(4096) if not chunk: break data += chunk tls.close() head = data.split(b"\r\n\r\n", 1)[0].decode("latin1", "replace") status = head.split("\r\n", 1)[0] body = data.split(b"\r\n\r\n", 1)[1] if b"\r\n\r\n" in data else b"" snippet = body[:160].decode("utf-8", "replace").replace("\n", " ") print(f"{sni} ip={client_ip} -> {status} | {snippet!r}") if __name__ == "__main__": for sni in ("sparkmsg.wyrs365.com", "www.fullstorynovel.com"): http_via_proxy(sni, "114.80.80.80") # Shanghai http_via_proxy(sni, "223.5.5.5") # Hangzhou http_via_proxy(sni, "8.8.8.8") # US