Форум сайта python.su
0
Написал такую штуку:
Сервер
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)
import socks
s=socks.socksocket()
s.setproxy(socks.PROXY_TYPE_SOCKS5,'localhost',8192)
s.connect(('localhost',1080))
s.send('hello world')
data=''
buf=s.recv(1024)
while len(buf):
data+=buf
buf=s.recv(1024)
s.close()
print(data)
Traceback (most recent call last):
File "C:/Users/egort_000/Desktop/Задание/Client.py", line 4, in <module>
s.connect(('localhost',1080))
File "C:\Python27\lib\site-packages\socks.py", line 364, in connect
self.__negotiatesocks5(destpair[0], destpair[1])
File "C:\Python27\lib\site-packages\socks.py", line 174, in __negotiatesocks5
chosenauth = self.__recvall(2)
File "C:\Python27\lib\site-packages\socks.py", line 135, in __recvall
if not d: raise GeneralProxyError((0, "connection closed unexpectedly"))
GeneralProxyError: (0, 'connection closed unexpectedly')
Traceback (most recent call last):
File "C:\Users\egort_000\Desktop\Задание\Client.py", line 4, in <module>
s.connect(('localhost',1080))
File "C:\Python27\lib\site-packages\socks.py", line 363, in connect
_orgsocket.connect(self, (self.__proxy[1], portnum))
File "C:\Python27\lib\socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 10061] Подключение не установлено,
Отредактировано EgorTrepov (Сен. 12, 2014 23:51:58)
Офлайн
0
Короче думаю проще задание прислать, может тогда вы меня поймете:
Написать на языке питон ПО для тестирования прокси сервера.
Возможно повторное использование кода и\или сторонних библиотек.
Тип программы:клиент-сервер
Протокол прокси: SOCKSv5
Методы авторизации:без авторизации, логин\пароль
Тип соединения:IPv4/TCP(CONNECT/BIND), FQDN/TCP(CONNECT/BIND)
Среда исполнения:Windows, Linux
Тип CVS:Mercurial
Версия Python: 2.7
Схема работы:
Клиент создает N кол-во соединений через прокси, случайным образом выбирая тип соединения. Далее происходит постоянный обмен данными между сервером и клиентом, т.е. клиент шлет данные серверу, сервер отвечает тем, что олучил от клиента и далее по этому циклу.
Требования(клиент):
Параметры командной строки:
–fqdn=examle.com -дает возможность указать какое доменное имя использовать для подключения
–proxy=127.0.0.1:1080 -IP и порт прокси сервера, по умолчанию 127.0.0.1:1080
–server=127.0.0.1:59000 -IP и порт сервера, по умолчанию 127.0.0.1:59000
–tasks=200 -дает возможность указать кол-во соединений, которое требуется открыть, 200 по умолчанию
–buf=1024 -дает возможность указать размер буфера для пересылки данных, 1024 по умолчанию
–cred=user@pass,user@pass -если указан, то задает им пользователя и пароль для авторизации(может быть несколько)
–bf=4 -если указан, то клиент должен случайным образом выбрать имя пользователя и пароль и пытаться авторизоваться на сервере. Значение параметра это кол-во соединений, которое будет использоваться для режима –bf.
Клиент должен заполнять буфер пересылки целиком, т.е. недопустимо пересылать неполный буфер.
Клиент посылает следующий буфер после получения предыдущего с сервера.
Данные должны постоянно изменяться, но могут быть любыми, random, счетчик и\или что-то другое.
При FQDN соединении клиент случайным образом генерирует строку и в последующем использует ее как домен 3го уровня для установки соединения, на основе параметра –fqdn
Каждое соединение обслуживается параллельно.
Длинна домена третьего уровня для FQDN соединений - 5 знаков, пример qwert.examle.com
Клиент должен иметь CLI интерфейс на потоках stdin\stdout, и поддерживать следующие команды:
start - запустить тест
stop - остановить тест
stat - показать статистику
exit - выйти из программы
Статистика должна содержать:
кол-во установленных соединений
объем данных переданных по каждому из соединений
кол-во ошибок(сервер отвалился, не принял новое соединение, и т.п.)
при включенном –bf кол-во удачных\неудачных попыток авторизации
доп информация на свое усмотрение
Клиент должен выводить в поток stderr ошибки соединения, авторизации и т.п.
Требования(сервер)
Параметры командной строки:
–port=59000 -адрес на котором сервер должен ожидать клиента по умолчанию 59000
–buf=1024 -дает возможность указать размер буфера для пересылки данных, по умолчанию 1024
–cred=user@pass,user@pass -если указан, то задает имя пользователя и пароль для авторизации(может быть несколько)
Сервер должен заполнять буфер пересылки целиком, т.е. недопустимо пересылать неполный буфер.
Сервер должен выводить в поток stderr ошибки соединения, авторизации, и т.п.
после запуска на потоке stdin сервер ожидает нажатия клавиши Esc, при нажатии сервер завершает работу.
В поток stdout сервер выдает информацию о новых подключениях, с указанием IP адреса клиента.
Офлайн
33
$200 - $300
Офлайн
0
А почему тот код что я скинул не работает, можете сказать?
Офлайн
33
Офлайн
33
EgorTrepov
Когда выключаю прокси выдает:
EgorTrepovПодумай над этим. Он тебе не врёт.
error: Подключение не установлено,
Отредактировано Budulianin (Сен. 13, 2014 00:22:05)
Офлайн