Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 12, 2014 14:35:05

EgorTrepov
Зарегистрирован: 2014-09-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными через прокси

Народ, выручайте. Нужно сделать клиент и сервер на python 2.7, которые будут связываться через прокси сервер. Принцип: клиент послал серверу Hello World, сервер отзеркалил, клиент поймал, вывел в консоль. И тд и тп. И все это через прокси

Офлайн

#2 Сен. 12, 2014 14:49:00

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Обмен данными через прокси

EgorTrepov
Нужно сделать клиент и сервер на python 2.7

Полно примеров работы с socket. Например в документации.
Более подробно и на русском у Лутца.

Что непонятно?



Отредактировано Budulianin (Сен. 12, 2014 14:52:35)

Офлайн

#3 Сен. 12, 2014 14:58:05

EgorTrepov
Зарегистрирован: 2014-09-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными через прокси

Можно пример? Разбираться время поджимает.

Офлайн

#4 Сен. 12, 2014 14:59:49

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Обмен данными через прокси

EgorTrepov
Можно пример?
Пример



Офлайн

#5 Сен. 12, 2014 15:05:57

EgorTrepov
Зарегистрирован: 2014-09-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными через прокси

Это напрямую. А тоже самое, но через прокси? Да, да, я тупой( Просто время поджимает

Офлайн

#6 Сен. 12, 2014 15:10:46

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Обмен данными через прокси

EgorTrepov
А тоже самое, но через прокси?
“Сервер” слушает порт на каком-то хосте.
“Прокси-сервер” знает его хост и порт.
“Клиент” знает хост и порт “прокси-сервера”.

Request:
Клиент -> Прокси -> Сервер

Response:
Клиент <- Прокси <- Сервер

Пример



Отредактировано Budulianin (Сен. 12, 2014 15:12:51)

Офлайн

#7 Сен. 12, 2014 15:17:26

EgorTrepov
Зарегистрирован: 2014-09-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными через прокси

Голова моя деревянная… Вы можете мне в коде этом натыкать носом, где там сервер, где прокси, где клиент?

Офлайн

#8 Сен. 12, 2014 22:23:41

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Обмен данными через прокси

Сделаем прокси с basic authentication на nginx.

Берём nginx, в стандартный конфиг добавляем:
(нужно посетить доку nginx)

server {
    listen 8254;
    location / {
        auth_basic           "closed site";
        auth_basic_user_file /home/vagrant/htpasswd;
        proxy_pass http://precise64:3812;
    }
}

В файлике htpasswd:
zubizu:Km4hLNggQPzAE

Запустили nginx.

Пишем сервер, его мы спрячем за nginx.

import socket
HOST = socket.gethostname()
PORT = 3812
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((HOST, PORT))
server.listen(1)
while True:
    conn, addr = server.accept()
    data = conn.recv(1024)
    if not data: break
    conn.sendall('HTTP/1.1 200 OK\n\nHello!')
    print(data)
    conn.close()

Запускаем сервер.

Пишем клиент.

import socket
HOST = socket.gethostname()
PORT = 8254
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))
client.sendall('GET / HTTP/1.1\nHost: precise64\nAuthorization:Basic enViaXp1OnB5dGhvbg==\n\n')
data = client.recv(1024)
client.close()
print 'Received', repr(data)

Уберём один символ из заголовка Authorization(eViaXp1OnB5dGhvbg==, хэш неверный => нас не пустят)
Запустим клиент и увидим:

Received 'HTTP/1.1 401 Unauthorized\r\nServer: nginx/1.4.5\r\nDate: Fri, 12 Sep 2014 19:30:44 GMT\r\nContent-Type: text/html\r\nContent-Length: 194\r\nConnection: keep-alive\r\nWWW-Authenticate: Basic realm="closed site"\r\n\r\n<html>\r\n<head><title>401 Authorization Required</title></head>\r\n<body bgcolor="white">\r\n<center><h1>401 Authorization Required</h1></center>\r\n<hr><center>nginx/1.4.5</center>\r\n</body>\r\n</html>\r\n'

Вернём символ на место.
Запустим клиент.

nginx нас пропустил и сервер отдал ответ:
Received 'HTTP/1.1 200 OK\r\nServer: nginx/1.4.5\r\nDate: Fri, 12 Sep 2014 19:32:45 GMT\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\n\r\n6\r\nHello!\r\n0\r\n\r\n'



Отредактировано Budulianin (Сен. 12, 2014 22:33:03)

Офлайн

#9 Сен. 12, 2014 22:53:15

EgorTrepov
Зарегистрирован: 2014-09-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными через прокси

nginx это, я так понимаю, собственно прокси сервер? а с другим данный код будет работать?

Офлайн

#10 Сен. 12, 2014 22:55:22

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Обмен данными через прокси

EgorTrepov
nginx это, я так понимаю, собственно прокси сервер?
Ну я же написал
Budulianin
Сделаем прокси с basic authentication на nginx.

Прочитай, что такое nginx.

EgorTrepov
с другим данный код будет работать?
С каким другим?

Прочитай вообще, что такое прокси-сервера.



Отредактировано Budulianin (Сен. 12, 2014 23:01:07)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version