用fopen肯定不行的,curl应该可以。

解决方案 »

  1.   

    fsockopen可以
    <?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,"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);?>