Хочу сделать свой прокси-сервер на VDS, настроить прокси на своем компьютере и на самом удаленном сервере написать скрипт для обработки и пересылки запросов.
На этапе переадресации запросов на сайт ( например google.com или youtube.com ), возникают ошибки, если вы запустите программу на локальном компьютере (127.0.0.0:65432) , вы получите ошибку [WinError 10054] , но если вы запустите его на VDS, вы получите ошибку [Errno 104] Connection Reset by Peer . Однако в обоих случаях от конечных ресурсов приходит ответ с ошибкой 400.
proxy
vps
[local](https://i.sstatic.net/JBODyk2C.png)
Вот мой код, я его много раз менял (потому что я только начинаю и делаю много ошибок, но с этим не могу справиться )
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
Удаленный хост разрывает соединение ⇐ Python
Программы на Python
1736338420
Anonymous
Хочу сделать свой прокси-сервер на VDS, настроить прокси на своем компьютере и на самом удаленном сервере написать скрипт для обработки и пересылки запросов.
На этапе переадресации запросов на сайт ( например google.com или youtube.com ), возникают ошибки, если вы запустите программу на локальном компьютере (127.0.0.0:65432) , вы получите ошибку [WinError 10054] , но если вы запустите его на VDS, вы получите ошибку [Errno 104] Connection Reset by Peer . Однако в обоих случаях от конечных ресурсов приходит ответ с ошибкой 400.
proxy
vps
[local](https://i.sstatic.net/JBODyk2C.png)
Вот мой код, я его много раз менял (потому что я только начинаю и делаю много ошибок, но с этим не могу справиться )
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}
Подробнее здесь: [url]https://stackoverflow.com/questions/79339100/the-remote-host-breaks-the-connection[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия