curl類,可用於模擬get,post和curl下載

<?php
class Curl {

	/*
	 * get 方式獲取訪問指定地址
	 * @param  string url 要訪問的地址
	 * @param  string cookie cookie的存放地址,沒有則不發送cookie
	 * @return string curl_exec()獲取的信息
	 * @author andy
	 **/
	public function get( $url, $cookie='' )
	{
		// 初始化一個cURL會話
		$curl = curl_init($url);
		// 不顯示header信息
		curl_setopt($curl, CURLOPT_HEADER, 0);
		// 將 curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出。
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		// 使用自動跳轉
		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
		if(!empty($cookie)) {
			// 包含cookie數據的文件名,cookie文件的格式可以是Netscape格式,或者只是純HTTP頭部信息存入文件。
			curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
		}
		// 自動設置Referer
		curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
		// 執行一個curl會話
		$tmp = curl_exec($curl);
		// 關閉curl會話
		curl_close($curl);
		return $tmp;
	}

	/*
	 * post 方式模擬請求指定地址
	 * @param  string url	請求的指定地址
	 * @param  array  params 請求所帶的
	 * #patam  string cookie cookie存放地址
	 * @return string curl_exec()獲取的信息
	 * @author andy
	 **/
	public function post( $url, $params, $cookie )
	{
		$curl = curl_init($url);
		curl_setopt($curl, CURLOPT_HEADER, 0);
		// 對認證證書來源的檢查,0表示阻止對證書的合法性的檢查。
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		// 從證書中檢查SSL加密算法是否存在
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
		//模擬用戶使用的瀏覽器,在HTTP請求中包含一個”user-agent”頭的字符串。
		curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
		//發送一個常規的POST請求,類型爲:application/x-www-form-urlencoded,就像表單提交的一樣。
		curl_setopt($curl, CURLOPT_POST, 1);
		// 將 curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出。
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		// 使用自動跳轉
		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
		// 自動設置Referer
		curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
		// Cookie地址
		curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
		// 全部數據使用HTTP協議中的"POST"操作來發送。要發送文件,
		// 在文件名前面加上@前綴並使用完整路徑。這個參數可以通過urlencoded後的字符串
		// 類似'para1=val1¶2=val2&...'或使用一個以字段名爲鍵值,字段數據爲值的數組
		// 如果value是一個數組,Content-Type頭將會被設置成multipart/form-data。
		curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
		$result = curl_exec($curl);
		curl_close($curl);
		return $result;
	}

	/**
	 * 遠程下載
	 * @param string $remote 遠程圖片地址
	 * @param string $local 本地保存的地址
	 * @param string $cookie cookie地址 可選參數由
	 * 於某些網站是需要cookie才能下載網站上的圖片的
	 * 所以需要加上cookie
	 * @return void
	 * @author andy
	 */
	public function reutersload($remote, $local, $cookie= '') {
		$cp = curl_init($remote);
		$fp = fopen($local,"w");
		curl_setopt($cp, CURLOPT_FILE, $fp);
		curl_setopt($cp, CURLOPT_HEADER, 0);
		if($cookie != '') {
			curl_setopt($cp, CURLOPT_COOKIEFILE, $cookie);
		}
		curl_exec($cp);
		curl_close($cp);
		fclose($fp);
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章