php实现文本和图片代理,支持post,cookie

function socketopen($host, $query){
    
    $fp = fsockopen( $host, 80);
    
    if(!$fp)
        return false;
    
    $d = $c = '';
    if(!empty($_POST)){
        $way='POST';
        $c = http_build_query($_POST);
        $l = strlen($c) ;
        
        $d .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $d .= "Content-Length: $l\r\n";
        
    }else
        $way='GET';
    
    $q = "$way $query HTTP/1.1\r\n";
    $q .= "Host: ". $host ."\r\n";
    $q .= "User-Agent: ". $_SERVER['HTTP_USER_AGENT'] ."\r\n";
    $q .= "Accept: ". $_SERVER['HTTP_ACCEPT'] ."\r\n";
    $q .= "Accept-Language: ". $_SERVER['HTTP_ACCEPT_LANGUAGE'] ."\r\n";
    $q .= "Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7\r\n";
    $q .= "Connection: close\r\n";
    if(!empty($_SERVER['HTTP_COOKIE']))
        $q .= "Cookie: ". $_SERVER['HTTP_COOKIE'] ."\r\n";
    $q .= $d;
    $q .= "\r\n";
    $q .= $c;

    fputs($fp, $q);
    $results = '';
    while(!feof($fp)){
        $line = fread($fp,1024);
        $results .= $line;
    }
    fclose($fp);

    preg_match('/^HTTP(.*?)\r\n\r\n/s',$results,$ck);
    $header = $ck[0];
    checkcookie($header);
    $results = str_replace($header,'', $results);
    
    if(strstr($header,'Content-Type: image/')){
        preg_match('/Content-Type: (.*?)\r\n/',$header,$type);
        header($type[0]);
        echo $results;
        exit;
    }
    return $results;
}

function checkcookie($str){
    preg_match_all('/Set-Cookie: (.*?); /',$str,$c);
    if(!empty($c[1])){
        foreach($c[1] as $cc){
            $v = explode('=',$cc);
            $name = $v[0];
            unset($v[0]);
            setcookie($name,implode('=',$v));
        }
    }
    return true;
}

转载于:https://www.cnblogs.com/chenshuanj/p/3275883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值