Загрузка страницы через прокси

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 21 мар 2010.

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

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    739
    Симпатии:
    226
    Здравствуйте.
    Необходимо загрузить $url через прокси $proxy по порту $port.
    Как это можно сделать по средствам РНР.
     
  2. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    С помощью curl
    PHP:
    <?php
    function get($url,$proxy) { 
            
    $ch curl_init();   
            
    curl_setopt($chCURLOPT_URL,$url); 
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208'); 
            
    curl_setopt($chCURLOPT_PROXY"$proxy"); 
            
    $ss=curl_exec($ch); 
            
    curl_close($ch); 
            return 
    $ss

          
    $prox '62.159.143.172:80';
          
    $a=get('http://2ip.ru/',$prox); 
          echo 
    $a;
    ?>
     
  3. Vereschagin

    Vereschagin Писатель

    Регистр.:
    11 янв 2007
    Сообщения:
    9
    Симпатии:
    2
    Лио вот ещё класс, не использующий cUrl:
    PHP:
    <?php 
    /* 
     * 
     * No Proxy Authentification Implemented; PHP 5 
     * 
     */ 
    class RemoteFopenViaProxy 
        private 
    $result
        private 
    $proxy_name
        private 
    $proxy_port
        private 
    $request_url
        public function 
    get_proxy_name() { 
            return 
    $this->proxy_name
        } 
        public function 
    set_proxy_name($n) { 
            
    $this->proxy_name $n
        } 
        public function 
    get_proxy_port() { 
            return 
    $this->proxy_port
        } 
        public function 
    set_proxy_port($p) { 
            
    $this->proxy_port $p
        } 
        public function 
    get_request_url() { 
            return 
    $this->request_url
        } 
        public function 
    set_request_url($u) { 
            
    $this->request_url $u
        } 
        public function 
    get_result() { 
            return 
    $this->result
        } 
        public function 
    set_result($r) { 
            
    $this->result $r
        } 
        private function 
    get_url_via_proxy() { 
            
    $proxy_fp fsockopen($this->get_proxy_name(), $this->get_proxy_port()); 
            if (!
    $proxy_fp) { 
                return 
    false
            } 
            
    fputs($proxy_fp"GET " $this->get_request_url() . " HTTP/1.0\r\nHost: " $this->get_proxy_name() . "\r\n\r\n"); 
            while (!
    feof($proxy_fp)) { 
                
    $proxy_cont .= fread($proxy_fp4096); 
            } 
            
    fclose($proxy_fp); 
            
    $proxy_cont substr($proxy_contstrpos($proxy_cont"\r\n\r\n") + 4); 
            return 
    $proxy_cont
        } 
        private function 
    get_url($url) { 
            
    $fd = @ file($url); 
            if (
    $fd) { 
                return 
    $fd
            } else { 
                return 
    false
            } 
        } 
        private function 
    logger($line$file) { 
            
    $fd fopen($file ".log""a+"); 
            
    fwrite($fddate("Ymd G:i:s") . " - " $file " - " $line "\n"); 
            
    fclose($fd); 
        } 
        function 
    __construct($url$proxy_name ""$proxy_port "") { 
            
    $this->set_request_url($url); 
            
    $this->set_proxy_name($proxy_name); 
            
    $this->set_proxy_port($proxy_port); 
        } 
        public function 
    request_via_proxy() { 
            
    $this->set_result($this->get_url_via_proxy()); 
            if (!
    $this->get_result()) { 
                
    $this->logger("FAILED: get_url_via_proxy(" $this->get_proxy_name() . "," $this->get_proxy_port() . "," $this->get_request_url() . ")""RemoteFopenViaProxyClass.log"); 
            } 
        } 
        public function 
    request_without_proxy() { 
            
    $this->set_result($this->get_url($this->get_request_url())); 
            if (!
    $this->get_result()) { 
                
    $this->logger("FAILED: get_url(" $url ")""RemoteFopenViaProxyClass.log"); 
            } 
        } 

    ?>
    Пример вызова:
    PHP:
    <?php 
    // call constructor 
    $obj = new RemoteFopenViaProxy($insert_request_url$insert_proxy_name$insert_proxy_port); 
    // change settings after object generation 
    $obj->set_proxy_name($insert_proxy_name); 
    $obj->set_proxy_port($insert_proxy_port); 
    $obj->set_request_url($insert_request_url); 
    $obj->request_via_proxy(); 
    echo 
    $obj->get_result(); 
    ?>
     
Статус темы:
Закрыта.