@zax2032

Как создать «перепрокси»?

Я хочу сделать скрипт, к которому будет обращатся прокси клиент, как к обычному прокси, а он всю информацию будет передавать на настоящий прокси и потом всё в обратном порядке. Питон знаю плохо. Пока, что переделал пример сокет сервера и оно работает только с http запросами. Когда клиент отправляет CONNECT метод для https соединния, сервер возвращает 200 ОК, потом клиент делает ещё один запрос в этом же сеансе и вот с него ответ уже не приходит. Помогите, в чём проблема?
import socket
import threading

class LocalProxy(object):
	def __init__(self, host, port):
		self.host = host
		self.port = port
		self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
		self.sock.bind((self.host, self.port))

	def listen(self):
		self.sock.listen(10)
		while True:
			client, address = self.sock.accept()
			client.settimeout(60)
			threading.Thread(target = self.listenToClient,args = (client,address)).start()

	def listenToClient(self, client, address):
		#Client session oppened
		print('Client connected')
		
		#Open server session
		server = socket.socket()
		server.connect(('proxy ip', 8123))
		
		#Client listen
		while True:
			#Attempt to receive client data
			data = client.recv(8192)
			if data:
				server.send(data)
				while True:
					resp = server.recv(8192)
					if not resp or len(resp) == 0:
						break
					print(resp)
					client.send(resp)
			else:
				server.close()
				client.close()
				break;

if __name__ == "__main__":
	LocalProxy('127.0.0.1',2001).listen()
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы