1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

в чем проблема fsockopen? (via socks proxy)

Тема в разделе "Web Coding", создана пользователем x@nder, 20 янв 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. x@nder

    x@nder Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    128
    Симпатии:
    5
    PHP:
    $fp fsockopen("tcp://85.119.217.109"1080$errno$errstr5) or die("$errstr ($errno)");

     
    $get ="GET /passport?mode=register&msg=mail&retpath=http://mail.yandex.ru HTTP/1.0\r\n";
     
    $get.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT5.1; MRA 4.4 (build 01331))\r\n";
     
    $get.="Accept-Language: ru\r\n";
     
    $get.="Host: yandex.ru\r\n\r\n";

     
    fwrite($fp$get);

     
    $bufferfgets($fp);
     while (!
    feof ($fp)) {
        
    $buffer.= fgets($fp);
     }

    echo 
    $buffer;
    с HTTP прокси все работает ок.
    но я Хочу заюзать сокс прокси.
    Но нифига не работает.
    Пробывал на локальной машине с Денвером а также на хостинге.
    Прокси пробывал разные.

    при выполении скрипта получаю только
    HTML:
     [T /pas
    или
    HTML:
     [T /inf
    Что за траблы?
     
  2. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    socks не знает что такое http, его протоколы прикладного уровня вообще не касаются. для создания соединения через сокс надо по сокс протоколу сказать о своих намерениях и уже в установленный туннель писать http запрос.

    сокс протокол крайне простой. реализовать туннель через него не просто, а очень просто. описание пятой версии
    http://rfc.net/rfc1928.html
     
  3. x@nder

    x@nder Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    128
    Симпатии:
    5
    А есть примеры реализации?
    А ещё лучше, может есть готовые классы?
     
  4. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    в поиск по форуму

    Есть - [SIZE=-1]www.phpclasses.org/ [/SIZE]
     
  5. x@nder

    x@nder Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    128
    Симпатии:
    5
    А ты сам искать то пробывал?
    Или ты просто посты себе набираеш?
     
  6. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    http://www.phpclasses.org/browse/package/1822.html
     
  7. nopase

    nopase Создатель

    Регистр.:
    6 май 2007
    Сообщения:
    49
    Симпатии:
    22
    И здесь есть простенький:
    http://www.xaker.name/forvb/showthread.php?t=6366
     
  8. Karlasan

    Karlasan Постоялец

    Регистр.:
    7 дек 2007
    Сообщения:
    75
    Симпатии:
    153
    я для 5х соксов юзаю сию функцию:

    PHP:
    function socks_connect($host$port$dh$dp//адрес скоса, порт сокса, адрес сайта, порт сайта.
    {
        
    $result=true;
        
    $f fsockopen($host$port) or $result=false;
        if(
    $result
        {
            
    $h gethostbyname($dh);
            
    preg_match("#(\d+)\.(\d+)\.(\d+)\.(\d+)#"$h$m);
            
    fwrite($f"\x05\x01\x00");
            
    $r fread($f2);
            if(!(
    ord($r[0])==and ord($r[1])==0)) $result=false;
            if(
    $result)
            {
                
    fwrite($f"\x05\x01\x00\x01" chr($m[1]).chr($m[2]).chr($m[3]).chr($m[4]).chr($dp/256).chr($dp%256));
                
    $r fread($f10);
                if(!(
    ord($r[0])==and ord($r[1])==0))
                    return 
    false;
                else
                    return 
    $f;
            }
        }
    }
    возвращает false если не удалось установить соединение.
    использовать так же как fsockopen:

    PHP:
    $fp=socks_connect('1.2.3.4',1080,'ya.ru',80);
    и далее как в примере у автора сабже
     
    Mendel нравится это.
  9. x@nder

    x@nder Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    128
    Симпатии:
    5
    Всем ответившим спасибо.
    Стало все проявлятся что к чему.

    По cуществу хочу добавить что нашел массивный класс
    HTTP client PHP class (from Manuel Lemos)
    http://www.phpclasses.org/httpclient
    Который умееет почти всё.

    Возможности и в самом деле впечатляющие.


    Самое главное он не заброшен (тобиш активно выходят новые версии)

    Рекомендую всем
     
  10. nopase

    nopase Создатель

    Регистр.:
    6 май 2007
    Сообщения:
    49
    Симпатии:
    22
    А кофе он варить умеет? :)

    Нет. На самом деле вопрос таков: кто-нить сумел этого монстра с многопоточностью подружить (нeблокирующие сокеты)? Только чур извраты с fnctl или запуском нескольких экземпляров самоё себя не предлагать.
     
Статус темы:
Закрыта.