[ perl ] perl+socks, трабл тут возник

Discussion in 'PHP' started by Whirt, 4 Apr 2009.

  1. Whirt

    Whirt Elder - Старейшина

    Joined:
    24 Jun 2008
    Messages:
    23
    Likes Received:
    86
    Reputations:
    5
    В общем, долгое время пользовался классическим кодом для включения поддержки сокс, который приведен ниже.
    Однако, тут стал натыкаться на некоторые соксы, которые присылают неправильный ответ в самом конце, и в них бесполезно что-либо писать и считывать данные, ответ будет пустым.

    пример таких соксов:

    Code:
    91.76.59.174:8363
    95.72.95.179:8906
    95.78.249.233:8608
    
    Code:
    #!/usr/local/bin/perl
    use IO::Socket::Socks;
    
    
    my $proxy = new IO::Socket::Socks(ProxyAddr=>"91.76.59.174",
                                    ProxyPort=>8363,
                                    ConnectAddr=>"perl.org",
                                    ConnectPort=>80,
                                    AuthType=> 'none',
                                    Timeout => '20',
                                    SocksDebug => '1' );
    
    if (!defined($proxy))
    {
        die($SOCKS_ERROR);
        exit(1);
    }
    
    print $proxy "GET / HTTP/1.1\r\n".
                 "Host: perl.org\r\n".
                 "Connection: close\r\n\r\n";
    
    my $databuf='';
    
    $databuf .= $_ while <$proxy>;
    
    close $proxy;
    
    print $databuf;
    
    Дебаг подключения привожу ниже:
    [​IMG]

    Самый нижний столбик, поле Vers. Сокс вписывает туда некорректное значение..
    по идее должен писать туда 0x05, но пишет почему-то 0x00.

    Кто нибудь сталкивался с такой проблемой? С таким соксом просто дальше работать невозможно, хотя через браузер все норм..
     
  2. Vid0k

    Vid0k Elder - Старейшина

    Joined:
    24 Dec 2007
    Messages:
    393
    Likes Received:
    125
    Reputations:
    13
    вопрос не в тему как получить такой дебаг запросов?
     
  3. Whirt

    Whirt Elder - Старейшина

    Joined:
    24 Jun 2008
    Messages:
    23
    Likes Received:
    86
    Reputations:
    5
    Там дебаг включен
     
  4. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    я как то пытался сделать потдержку соксов без модулей на сокетах чисто, и так у меня не чего и не вышло, потому что соксы возвращают что за хотят нифига не попротоколу). Как и в этом случае, версия 0 скорее всего значит, что сокс может рабоатать как по 4ой версии так и по 5ой.
     
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Даже если туда 0х05 затолкать все равно работать не будет
     
    _________________________
  6. Whirt

    Whirt Elder - Старейшина

    Joined:
    24 Jun 2008
    Messages:
    23
    Likes Received:
    86
    Reputations:
    5
    Причина в самом IO::Socket::Socks,
    +отснифал еще.
    [​IMG]

    он шлет неполные пакеты ,на куски разрывает

    , изза этого и глюки с некоторыми socks-серверами.


    вообще, модуль уродский если честно, держит только 5 сокс.
    нашел ему альтернативу, держит socks 4/5:

    http://cpan.uwinnipeg.ca/dist/SOCKS
    , сейчас буду тестить
     
  7. Vid0k

    Vid0k Elder - Старейшина

    Joined:
    24 Dec 2007
    Messages:
    393
    Likes Received:
    125
    Reputations:
    13
    чем можно в никсах пакеты снифать?
     
  8. Whirt

    Whirt Elder - Старейшина

    Joined:
    24 Jun 2008
    Messages:
    23
    Likes Received:
    86
    Reputations:
    5
    Wireshark, например. Снифалось им как раз под никсами.
     
    1 person likes this.
  9. Whirt

    Whirt Elder - Старейшина

    Joined:
    24 Jun 2008
    Messages:
    23
    Likes Received:
    86
    Reputations:
    5
    http://cpan.uwinnipeg.ca/dist/SOCKS этот модуль тоже уродско работает с соксами, такое же дробление данных наблюдается, многие socks-сервера откидывают такие запросы,
    так что выход - пишем код ручками.