Загрузка данных


import socket
import time

HOST = 'tasks.duckerz.ru'
PORT = 30009

def probe(payload, description):
    """Отправляет payload и возвращает ответ сервера."""
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(10.0)
    try:
        s.connect((HOST, PORT))
        # Читаем до "Send to Bob:"
        data = b""
        while b"Send to Bob:" not in data:
            chunk = s.recv(4096)
            if not chunk:
                break
            data += chunk
        
        # Отправляем
        s.sendall(payload)
        
        # Читаем ответ 3 секунды
        s.settimeout(3.0)
        resp = b""
        try:
            while True:
                chunk = s.recv(4096)
                if not chunk:
                    resp += b"<CONNECTION_CLOSED>"
                    break
                resp += chunk
        except socket.timeout:
            resp += b"<TIMEOUT>"
        
        return resp.decode('utf-8', errors='ignore')
    except Exception as e:
        return f"EXCEPTION: {e}"
    finally:
        s.close()

# Список запросов для тестирования (по одному за раз!)
probes = [
    (b"\n", "Пустая строка"),
    (b"{}\n", "Пустой JSON"),
    (b'{"test": 1}\n', "Неизвестный ключ test"),
    (b'{"answer": 0}\n', "answer = 0"),
    (b'{"answer": 1}\n', "answer = 1"),
    (b'{"answer": "hello"}\n', "answer = строка"),
    (b'{"answer": null}\n', "answer = null"),
    (b'{"answer": [1,2,3]}\n', "answer = массив"),
    (b'{"answer": {"x": 1}}\n', "answer = объект"),
    (b'{"C": 1}\n', "C = 1"),
    (b'{"B": 1}\n', "B = 1"),
    (b'[]\n', "Массив вместо объекта"),
    (b'"hello"\n', "Просто строка"),
    (b'12345\n', "Просто число"),
    (b'garbage\n', "Мусор"),
    (b'{"answer": 1, "extra": 2}\n', "answer + лишний ключ"),
]

print("[*] Разведка сервера. Пауза 15 секунд между запросами.\n")

for payload, desc in probes:
    print(f"=== {desc} ===")
    print(f"Отправляем: {payload}")
    
    resp = probe(payload, desc)
    print(f"Ответ: {repr(resp)}")
    print()
    
    time.sleep(15)

print("[*] Разведка завершена.")