您的位置:首页 > 编程语言 > PHP开发

php使用fsockopen方法代理读取远程网页

2007-08-10 15:26 681 查看
转帖:http://www.techmango.com/blog/article.asp?id=172

<?php   
  class   http{   
    var   $proxy_host="";   
    var   $proxy_port="0";   
    var   $http_fp="";   
      
    function   http_fopen($host,$path,$port="80"){   
                if(empty($this->proxy_host)){   
                        $conn_host=$host;   
        $conn_port=$port;   
        }   
        else{   
                        $conn_host=$this->proxy_host;   
        $conn_port=$this->proxy_port;   
        }   
        //   
        $path=$this->slashUrl($path);;   
        //   
        $abs_url="http://$host:$port$path";   
        $query="GET   $abs_url   HTTP/1.0/r/n".   
              "HOST:$host:$port/r/n".   
              "User-agent:PHP/class   http   0.1/r/n".   
              "/r/n";   
        $fp=fsockopen($conn_host,$conn_port);   
        if(!$fp){   
                      return   false;   
        }   
        fputs($fp,$query);   
        while(trim(fgets($fp,"1024")!="")){   
      $this->http_fp=$fp;   
                      return   $fp;   
                }   
    }   
  //得到查询内容   
    function   http_fget(){   
        if($this->http_fp!=""){   
              $content=fread($this->http_fp,"
a177
9999999");   
      $content=$this->trimHeader($content);   
      return   $content;   
        }   
    }   
    //对路径的处理,如果前面没有/,就加一个   
    function   slashUrl($url){   
          if(!ereg("^/",$url)){   
                return   "/".$url;   
  }   
  else{   
                return   $url;   
  }   
    }   
    //对获得内容进行处理,去掉头部信息   
    function   trimHeader($content){   
          $array=split("/n/r",$content,"2");   
  return   trim($array["1"]);   
    }   
  }   
    
  $http=new   http;   
  //代理服务器设置   
  $http->proxy_host="10.14.81.81";   
  $http->proxy_port="6666";   
    
  //www.baidu.com是主机地址,第二个参数是具体的目标   
  $fp=$http->http_fopen("www.baidu.com","/baidu?word=%C0%EE%B0%D7&cl=3");   
  if(!$fp){   
          echo"sorry,con't   connect";   
  exit;   
  }   
  //得到返回的结果   
  echo   $http->http_fget($fp);   
    
  ?> 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php fp path url query 服务器