python сокеты - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD64368.4221
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 03.02.2015, 02:46   #1
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 305
Бабло: $114210
По умолчанию python сокеты

Нужно получить от сокса ответ на коннект. Делаю так:
Код:
import socket


sock = socket.socket()
socks5 = socks_ip:port
socks5 = socks5.split(':')
socksip = str(socks5[0])
socksport = int(socks5[1])
sock.connect((socksip, socksport))
sock.send('hello, world!')
data = sock.recv(1024)
print "data-", data
sock.close()
И болт. data пуста.
igelius вне форума  
Старый 03.02.2015, 12:34   #2
Дартаньян
Ебланнед
 
Регистрация: 22.01.2013
Сообщений: 109
Бабло: $20569
Отправить сообщение для Дартаньян с помощью ICQ Отправить сообщение для Дартаньян с помощью Skype™
По умолчанию

Юзай эти врапперы
https://pypi.python.org/pypi/SocksiPy
https://code.google.com/p/socksipy-branch/
Дартаньян вне форума  
Старый 05.02.2015, 22:09   #3
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 305
Бабло: $114210
ТС -->
автор темы ТС По умолчанию

Да я смотрел. Нужно bnd.addr из ответа выцепить. С socksipy-branch такой трюк не прокатил.
igelius вне форума  
Старый 05.02.2015, 22:38   #4
xanxy
Senior Member
 
Регистрация: 18.08.2010
Сообщений: 360
Бабло: $66120
По умолчанию

Ты конектишься именно к сокс5? Зависит от того как сокс написан. Но полне вероятно что сервер видя то что идет запрос не по протоколу socks5 просто дропает коннект.

Описывай протокол..
xanxy вне форума  
Старый 06.02.2015, 00:07   #5
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 305
Бабло: $114210
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от xanxy Посмотреть сообщение
Ты конектишься именно к сокс5? Зависит от того как сокс написан. Но полне вероятно что сервер видя то что идет запрос не по протоколу socks5 просто дропает коннект.

Описывай протокол..
Может есть где глянуть рабочий пример?
igelius вне форума  
Старый 06.02.2015, 07:10   #6
xanxy
Senior Member
 
Регистрация: 18.08.2010
Сообщений: 360
Бабло: $66120
По умолчанию

На вики нормальное описание протокола есть. Если перл "читать" сможешь, то могу свой код скинуть.. А так гугли
xanxy вне форума  
Старый 06.02.2015, 20:29   #7
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 305
Бабло: $114210
ТС -->
автор темы ТС По умолчанию

Скинь пожалуйста, может мне легче будет разобраться. Гугл уже задрочил этой темой.
igelius вне форума  
Старый 06.02.2015, 21:18   #8
Дартаньян
Ебланнед
 
Регистрация: 22.01.2013
Сообщений: 109
Бабло: $20569
Отправить сообщение для Дартаньян с помощью ICQ Отправить сообщение для Дартаньян с помощью Skype™
По умолчанию

тебе для чеков прокси? типа порт открыло?
Дартаньян вне форума  
Старый 07.02.2015, 14:47   #9
xanxy
Senior Member
 
Регистрация: 18.08.2010
Сообщений: 360
Бабло: $66120
По умолчанию

Цитата:
Сообщение от igelius Посмотреть сообщение
Скинь пожалуйста, может мне легче будет разобраться. Гугл уже задрочил этой темой.

Вот накидал псевдокод.
Но все же, смотри вики. Там нормально описан протокол.
https://ru.wikipedia.org/wiki/SOCKS#....D0.BB_SOCKS_5

PHP код:
function connect {
    
writepack('c*'0x05length @auth_methods, @auth_methods) );
    @
buf unpack('C2'read(2));
    die 
'Bad socks version' if $buf[0] != 5;

    if (
$buf[1] == 0) {
        
authorized();
    } 
elsif {
        
write(join '' =>
            
pack('CC'1length $proxy_username),
            
$proxy_username,
            
pack('C'length $proxy_password),
            
$proxy_password,
        );
        @
buf unpack('C2'read(2));
        die 
'auth: failed read data' if $buf[00] != 1;
        die 
'auth: declined' if $buf[1] != 0;
        
authorized();
    } else {
        die 
'need another auth';
    }
}

function 
authorized {
    
writepack('C8n'0x050x010x000x01split('.'$ip), $port) );
    @
buf unpack('C*'read(0x0A));
    die 
''Bad socks5 version'' if $buf[0] != 5;
    if (
$buf[1] == 0) {
        
# success
        
return 1;
    } else {
        die 
'connection failed: error code: '.$buf[1];
    }

xanxy вне форума  
Старый 09.02.2015, 00:24   #10
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 305
Бабло: $114210
ТС -->
автор темы ТС По умолчанию

Ага, спасиб.
Цитата:
Сообщение от Дартаньян Посмотреть сообщение
тебе для чеков прокси? типа порт открыло?
Нет.
igelius вне форума