1. 程式人生 > 實用技巧 >php模擬請求curl和fsockopen形式

php模擬請求curl和fsockopen形式

curl模擬請求

//封裝curl模擬請求
    public function curlRequest($url,$method="GET",$postData='',$header=[]){
        //初始化
        $ch=curl_init();
        //設定選項
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//檔案流輸出,不是直接輸出
        curl_setopt($ch, CURLOPT_HEADER, 0);//
啟用時,標頭檔案資訊作為資料流輸出 //curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip壓縮 //提交資料支援字串和陣列 if(is_array($postData)){ $postData=http_build_query($postData); } $strlen=strlen($postData); //curl已經模擬了頭部資訊,如不是特需要求,可以不需要的 /*$header=array("Content-Type:application/x-www-form-urlencoded","Content-Length:".$strlen,"User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36","Referer:http://www.test.com/stream.php");
*/ $header_default=array("Content-Type:application/x-www-form-urlencoded","Content-Length:".$strlen,"User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"); curl_setopt($ch, CURLOPT_HTTPHEADER, $header_default);//模擬頭部資訊 //add header
if(!empty($header)) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } //curl_setopt($ch, CURLOPT_REFERER, $referer);//模擬來路 //add ssl support if(substr($url, 0, 5) == 'https') { //當請求https開頭的時候,需要走php介面檔案就需要走443埠,故false進行遮蔽。是否檢測伺服器的證書是否由正規瀏覽器認證過的授權CA頒發的 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //SSL 報錯時使用 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //SSL 報錯時使用 } //add post data support if(!empty($postData) && mb_strtoupper($method)=='POST') { //設定post請求 curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); } //add 302 support curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //設定cookie $cookie_jar = dirname(__FILE__)."/pic.cookie"; curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);// 存放Cookie資訊的檔名稱 curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_jar); // 讀取上面所儲存的Cookie資訊 curl_setopt($ch,CURLOPT_COOKIE,'age=12');//單獨設定cookie,如何不用上面的兩個方法 //3.執行 $output=curl_exec($ch); //4.釋放 curl_close($ch); //var_dump($output); return $output; }

fsockopen模擬請求