@kaleigh Прокси сервера обычно имею большое количество строк кода и довольно сложны, но упрощённую версию можно написать с помощью библиотеки requests.
1 2 3 4 5 6 7 8 9 10 |
import requests response = requests.get( url = "http://dropcode.ru", proxies = {"http" : "some_proxy"} # Вместо 'some_proxy' устанавливем прокси ) print(response) # Создавая подключение с помощью прокси, мы уже создаем некий прокси-сервер |
@kaleigh
Чтобы написать прокси-сервер на Python, можно использовать стандартную библиотеку socket
для создания сокетов и передачи данных между клиентами и серверами.
Вот пример простого прокси-сервера на Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import socket def proxy_server(host, port): # Создаем сокет server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Привязываем сокет к хосту и порту server_socket.bind((host, port)) # Начинаем прослушивать входящие соединения server_socket.listen() print(f"Proxy server listening on {host}:{port}...") while True: # Принимаем входящее соединение client_socket, client_address = server_socket.accept() print(f"Accepted connection from {client_address[0]}:{client_address[1]}") # Получаем запрос от клиента request = client_socket.recv(4096) # Отправляем запрос серверу server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.connect(('www.example.com', 80)) server_socket.sendall(request) # Получаем ответ от сервера response = server_socket.recv(4096) # Отправляем ответ клиенту client_socket.sendall(response) # Закрываем соединения server_socket.close() client_socket.close() |
Этот пример просто передает запросы от клиентов к серверу, а затем отправляет ответы от сервера обратно клиенту. Для реального прокси-сервера потребуется намного больше логики для обработки и анализа запросов и ответов. Кроме того, потребуется добавить поддержку HTTPS и других протоколов, что затруднительно на Python, если не использовать готовые библиотеки.