Удаленный хост разрывает соединениеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Удаленный хост разрывает соединение

Сообщение Anonymous »

Хочу сделать свой прокси-сервер на VDS, настроить прокси на своем компьютере и на самом удаленном сервере написать скрипт для обработки и пересылки запросов.
На этапе переадресации запросов на сайт ( например google.com или youtube.com ), возникают ошибки, если вы запустите программу на локальном компьютере (127.0.0.0:65432) , вы получите ошибку [WinError 10054] , но если вы запустите его на VDS, вы получите ошибку [Errno 104] Connection Reset by Peer . Однако в обоих случаях от конечных ресурсов приходит ответ с ошибкой 400.
Прокси:
Изображение

VPS:
Изображение

Локально:
Изображение

Вот мой код, я менял его много раз (потому что я только начинаю и Я делаю много ошибок, но с этой я не справлюсь)
import socket
import sys
import threading

HOST = "127.0.0.1" # Standard loopback interface address (localhost)
PORT = 65432 # Port to listen on (non-privileged ports are > 1023)
BUFFER_SIZE = 10000

def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(10)
print(f"Подняли сервер на порту: {PORT}")

while True:
try:
conn, addr = s.accept()
d = threading.Thread(target=conn_string, args=(conn, addr))
d.setDaemon(True)
d.start()
except Exception as e:
print(e)
sys.exit(1)
s.close()

def conn_string(conn, addr):
try:
data = conn.recv(BUFFER_SIZE)
#print(f"Connection: {conn}")
server = data.decode("utf-8")
first_line = server.split('\n')[0]
url = first_line.split(" ")[1]
http_pos = url.find("://")
if http_pos==-1:
temp=url
else:
temp = url[(http_pos+3):]
port_pos = temp.find(":")
webserver_pos = temp.find("/")
if webserver_pos == -1:
webserver_pos = len(temp)

webserver =""
port = -1
if (port_pos == -1 or webserver_pos < port_pos):
port = 80
webserver = temp[:webserver_pos]
else:
port = int((temp[(port_pos+1):])[:webserver_pos-port_pos-1])
webserver = temp[:port_pos]
decode_data = decode(data)
#print(f"Address: {addr}")
#print(f"Data: {data}")
#print(f"Webserver: {webserver}")
proxy_server(webserver, port, conn, addr, decode_data)
except Exception as e:
print(e)
conn.close()
sys.exit(2)

def decode(data):
return bytes(data)

def get_vpn():
return ("127.0.0.1", 12345)

def proxy_server(url, host_port, conn, addr, decode_data):
print(url, host_port)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.settimeout(60.0)
client.connect((url, int(host_port)))
client.send(decode_data)
while True:
response = client.recv(BUFFER_SIZE)
print(response.decode('utf-8'))
if len(response.decode('utf-8')) > 0:
conn.send(response)
dar = float(len(response))
dar = float(dar/1024)
dar = f"{dar} KB"
print(f"[*] Requests Done: {addr[0]} => {dar}

Подробнее здесь: https://stackoverflow.com/questions/793 ... connection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»