<?php
/**
* @desc curl抓取類
* @param $url 抓取地址
* @param $request 請求類型 GET POST
* @param $data 需發送的數據
* @param $head 是否顯示頭信息 TRUE FALSE
* @param $cookies 獲取cookies 1 傳遞cookies文件 2 保存cookies文件
* @return String
* @date 2017-05-22
*/
public function curl( $url, $request = 'GET', $data = NULL, $head = FALSE, $cookies = FALSE, $header = NULL, $timeout = 30 ){
$this->cookies_file = dirname(__FILE__)."/../../theme/cookie/cookie";
$ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;//驗證是否是https請求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
if( $head === TRUE ) {
curl_setopt($ch, CURLOPT_HEADER, TRUE);//獲取消息頭
}
if(is_array($header)){ //發送頭信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
//https請求
if($ssl === TRUE) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //信任任何證書
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //不檢查證書中是否設置域名
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);//設置不自動顯示內容
//POST請求
if($request == 'POST') {
curl_setopt($ch, CURLOPT_POST, TRUE);
is_array($data) && $data = http_build_query($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
//保存cookies
if($cookies == 2) {
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookies_file );
}
//需傳遞COOKIE文件
if($cookies == 1) {
curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookies_file );
}
$return = curl_exec($ch);
if( $error = curl_error($ch) ) {
throw new \Exception($error);
}
curl_close($ch);
return $return;
}
php常用類之curl請求
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.