как выполнить file_get_contents через прокси

Discussion in 'PHP' started by Sharky, 21 Sep 2007.

  1. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    как выполнить file_get_contents через http прокси
     
  2. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Никак. Посмотри тут:

    /threadnav40896-48-10.html

    Я публиковал функцию курла для HTTP-запросов. Она может через проксики работать.
     
  3. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    а через сокеты можно?
     
  4. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    токо хотел написать через сокет...
     
  5. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    ну а пример можно =) ?
     
  6. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    юзал...раз такой умный дай ссылку где показано
     
  7. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Sharky, насколько я знаю, соединение с хостом через сокеты делается очень просто... В функции fsockopen вместо хоста коннекта ты указываешь урлу проксика, в запросе GET URI делаешь абсолютным (что-то типа GET http://somehost.ru/somefile.bin HTTP/1.0). И не забудь в хидерах запроса передать заголовок Host с корректным значением домена, с которого запрашивается файл.

    Ну можно ещё так:
    Code:
    $url = "http://ya.ru";   // Урла запрашиваемого ресурса
    $proxy = sprintf("tcp://%s/", "123.123.123.123");   // Наш прокси
    $opts = array('http' => array('proxy' => $proxy, 'request_fulluri' => true));
    $connection = stream_context_create($opts);
    $content = file_get_contents($url, null, $connection);
    
    print($content);
    но не рекомендуется...
     
  8. Darkweider

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

    Joined:
    8 Feb 2007
    Messages:
    142
    Likes Received:
    13
    Reputations:
    0
    А еще вот что придумал, конешно дибилизм, но все же идея такова....
    На одном серваке(1) с которого ведется получение пишеться обращение к скрипту лежащему на другом серваке(2) через file_get_contents("http://server2.ru/script2.php") в котором тоже используется file_get_contents('"содержимое которое хотим получить")... Таким же макаром можно цепочку делать, если серверов много куда залить можно файлы... Сорри за оффтоп...
    А на счет прокси думаю надо использовать пример,описываемый groundhog' ом , юзаем сокеты.
     
    #8 Darkweider, 22 Sep 2007
    Last edited: 22 Sep 2007
  9. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    Warning: file_get_contents() expects at most 2 parameters, 3 given in C:\AppServ\www\stream1.php on line 6
     
  10. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Чтобы работать с контекстом, нужен Php >= 5.0.0. Я поэтому и написал, что не рекомендуется. С ней один гемор.