Не получается подключиться к серверу майнкрафт через свой прокси
Я хочу подключаться к майнкрафт серверу, используя самописный прокси, чтобы потом читать и изменять пакеты. Вот код:
import socket
import threading
class Proxy:
BUFFER_SIZE = 8192
def __init__(self, source, dest):
self.__source = source
self.__dest = dest
self.__server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.__server.bind(self.__source)
self.__server.listen(1)
def __serverThread(client, connection):
while True:
data = connection.recv(Proxy.BUFFER_SIZE)
if not data:
break
print("client ---> server:", data)
client.sendall(data+b"\n\n")
def __clientThread(client, connection):
while True:
data = client.recv(Proxy.BUFFER_SIZE)
if not data:
break
print("server ---> client:", data)
connection.sendall(data)
def run(self):
connection, addr = self.__server.accept()
print("Minecraft client connected to proxy:", addr)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(self.__dest)
print("Proxy connected to minecraft server:", self.__dest)
threading.Thread(target=Proxy.__serverThread, args=(client, connection)).start()
threading.Thread(target=Proxy.__clientThread, args=(client, connection)).start()
mcproxy.Proxy(("127.0.0.1", 25565), (здесь пишу доменное имя сервера, 25565)).run()
Когда я подключаюсь к серверу, работающему в локальной сети, все отлично работает. Но проблема возникает тогда, когда я пытаюсь подключиться к серверу в интернете. Я использую опцию подключения по адресу в самом клиенте игры и в поле для ввода ввожу localhost:25565, но в ответ я получаю бесконечное подключение. В консоли выводится:
Minecraft client connected to proxy: ('127.0.0.1', 56915)
Proxy connected to minecraft server: (здесь доменное имя сервера, 25565)
client ---> server: b'\x10\x00\xf9\x05\tlocalhostc\xdd\x02\x1f\x00\x0cleanenjoyer1\x01"Hj\x18=\x05@\xdf\xaa\xf4\r"\xb87%\xb7'
Через некоторое время в майнкрафт пишет, что превышено время ожидания.
Я так же пробовал менять в первом пакете localhost на доменное имя сервера, но это все равно не помогает
Как мне это исправить?
Upd: Я попробовал подключиться к серверу aternos, через свой прокси, и все прекрасно работает. Но когда я пытался подключиться к другим серверам, как только мой прокси отправлял первые два пакета, сервер к которому я пытался подключиться сразу же закрывал свой сокет(метод recv начинал возвращать b"")