php遠(yuǎn)程請(qǐng)求CURL實(shí)例教程(爬蟲、保存登錄狀態(tài))
cURL
cURL可以使用URL的語法模擬瀏覽器來傳輸數(shù)據(jù),因?yàn)樗悄M瀏覽器,因此它同樣支持多種協(xié)議,F(xiàn)TP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等協(xié)議都可以很好的支持,包括一些:HTTPS認(rèn)證,HTTP POST方法,HTTP PUT方法,F(xiàn)TP上傳,keyberos認(rèn)證,HTTP上傳,代理服務(wù)器,cookies,用戶名/密碼認(rèn)證,下載文件斷點(diǎn)續(xù)傳,上傳文件斷點(diǎn)續(xù)傳,http代理服務(wù)器管道,甚至它還支持IPv6,scoket5代理服務(wù)器,通過http代理服務(wù)器上傳文件到FTP服務(wù)器等等。
本文主要介紹的是php遠(yuǎn)程請(qǐng)求CURL(爬蟲、保存登錄狀態(tài))的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧
GET案例
/** * curl_get * @param $url * @param null $param * @param null $options * @return array */ function curl_get($url,$param = null,$options = null){ if(empty($options)){ $options = array( 'timeout' => 30,// 請(qǐng)求超時(shí) 'header' => array(), 'cookie' => '',// cookie字符串,瀏覽器直接復(fù)制即可 'cookie_file' => '',// 文件路徑,并要有讀寫權(quán)限的 'ssl' => 0,// 是否檢查https協(xié)議 'referer' => null ); }else{ empty($options['timeout']) && $options['timeout'] = 30; empty($options['ssl']) && $options['ssl'] = 0; } $result = array( 'code' => 0, 'msg' => 'success', 'body' => '' ); if(is_array($param)){ $param = http_build_query($param); } $url = strstr($url,'?')?trim($url,'&').'&'.$param:$url.'?'.$param; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url);// 設(shè)置url !empty($options['header']) && curl_setopt($ch, CURLOPT_HTTPHEADER, $options['header']); // 設(shè)置請(qǐng)求頭 if(!empty($options['cookie_file']) && file_exists($options['cookie_file'])){ curl_setopt($ch, CURLOPT_COOKIEFILE, $options['cookie_file']); curl_setopt($ch, CURLOPT_COOKIEJAR, $options['cookie_file']); }else if(!empty($options['cookie'])){ curl_setopt($ch, CURLOPT_COOKIE, $options['cookie']); } curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); //curl解壓gzip頁面內(nèi)容 curl_setopt($ch, CURLOPT_HEADER, 0);// 不獲取請(qǐng)求頭 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 輸出轉(zhuǎn)移,不輸出頁面 !$options['ssl'] && curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $options['ssl']); // 禁止服務(wù)器端的驗(yàn)證ssl !empty($options['referer']) && curl_setopt($ch, CURLOPT_REFERER, $options['referer']);//偽裝請(qǐng)求來源,繞過防盜 curl_setopt($ch, CURLOPT_TIMEOUT, $options['timeout']); //執(zhí)行并獲取內(nèi)容 $output = curl_exec($ch); //對(duì)獲取到的內(nèi)容進(jìn)行操作 if($output === FALSE ){ $result['code'] = 1; // 錯(cuò)誤 $result['msg'] = "CURL Error:".curl_error($ch); } $result['body'] = $output; //釋放curl句柄 curl_close($ch); return $result; }
POST案例
/** * curl_post * @param $url 請(qǐng)求地址 * @param null $param get參數(shù) * @param array $options 配置參數(shù) * @return array */ function curl_post($url,$param = null,$options = array()){ if(empty($options)){ $options = array( 'timeout' => 30, 'header' => array(), 'cookie' => '', 'cookie_file' => '', 'ssl' => 0, 'referer' => null ); }else{ empty($options['timeout']) && $options['timeout'] = 30; empty($options['ssl']) && $options['ssl'] = 0; } $result = array( 'code' => 0, 'msg' => 'success', 'body' => '' ); if(is_array($param)){ $param = http_build_query($param); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url);// 設(shè)置url !empty($options['header']) && curl_setopt($ch, CURLOPT_HTTPHEADER, $options['header']); // 設(shè)置請(qǐng)求頭 if(!empty($options['cookie_file']) && file_exists($options['cookie_file'])){ curl_setopt($ch, CURLOPT_COOKIEFILE, $options['cookie_file']); curl_setopt($ch, CURLOPT_COOKIEJAR, $options['cookie_file']); }else if(!empty($options['cookie'])){ curl_setopt($ch, CURLOPT_COOKIE, $options['cookie']); } curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); //curl解壓gzip頁面內(nèi)容 curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $param); curl_setopt($ch, CURLOPT_HEADER, 0);// 不獲取請(qǐng)求頭 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 輸出轉(zhuǎn)移,不輸出頁面 !$options['ssl'] && curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $options['ssl']); // 禁止服務(wù)器端的驗(yàn)證ssl !empty($options['referer']) && curl_setopt($ch, CURLOPT_REFERER, $options['referer']);//偽裝請(qǐng)求來源,繞過防盜 curl_setopt($ch, CURLOPT_TIMEOUT, $options['timeout']); //執(zhí)行并獲取內(nèi)容 $output = curl_exec($ch); //對(duì)獲取到的內(nèi)容進(jìn)行操作 if($output === FALSE ){ $result['code'] = 1; // 錯(cuò)誤 $result['msg'] = "CURL Error:".curl_error($ch); } $result['body'] = $output; //釋放curl句柄 curl_close($ch); return $result; }
其他請(qǐng)求類型請(qǐng)自己參考封裝處理
到此這篇關(guān)于php遠(yuǎn)程請(qǐng)求CURL(爬蟲、保存登錄狀態(tài))的文章就介紹到這了,更多相關(guān)php遠(yuǎn)程請(qǐng)求CURL(爬蟲、保存登錄狀態(tài))內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ThinkPHP5實(shí)現(xiàn)JWT?Token認(rèn)證的過程(親測可用)
這篇文章主要介紹了ThinkPHP5實(shí)現(xiàn)JWT?Token認(rèn)證,首先composer先掛載阿里云鏡像,安裝JWT擴(kuò)展,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
這篇文章主要介紹了Linux基于php-fpm模式的lamp搭建phpmyadmin的方法,以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。2018-10-10php 生成自動(dòng)創(chuàng)建文件夾并上傳文件的示例代碼
本篇文章主要是對(duì)php生成自動(dòng)創(chuàng)建文件夾并上傳文件的示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-03-03利用Laravel生成Gravatar頭像地址的優(yōu)雅方法
Gravatar是一圖像跟隨著您到訪過的網(wǎng)站,當(dāng)您在博客中留言或發(fā)表文章,它將會(huì)出現(xiàn)在您的名稱旁。下面這篇文章主要給大家介紹了關(guān)于利用Laravel如何生成 Gravatar 頭像地址的優(yōu)雅方法,需要的朋友可以參考下。2017-12-12PHP 修復(fù)未正常關(guān)閉的HTML標(biāo)簽實(shí)現(xiàn)代碼(支持嵌套和就近閉合)
PHP 修復(fù)未正常關(guān)閉的 HTML 標(biāo)簽 支持嵌套和就近閉合,需要的朋友可以參考下2012-06-06Laravel實(shí)現(xiàn)ORM帶條件搜索分頁
今天小編就為大家分享一篇Laravel實(shí)現(xiàn)ORM帶條件搜索分頁,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10使用PHP+MySql實(shí)現(xiàn)微信投票功能實(shí)例代碼
這篇文章主要介紹了使用PHP+MySql實(shí)現(xiàn)微信投票功能實(shí)例代碼,需要的朋友可以參考下2017-09-09PHP實(shí)現(xiàn)遠(yuǎn)程下載文件到本地
經(jīng)常寫采集器發(fā)布接口需要使用到遠(yuǎn)程附件的功能,所以自己寫了一個(gè)PHP遠(yuǎn)程下載文件到本地的函數(shù),一般情況下已經(jīng)夠用了,如果服務(wù)器支持CURL函數(shù),程序則會(huì)優(yōu)先選擇CURL,有需要的小伙伴可以參考下。2015-05-05PHP array_key_exists檢查鍵名或索引是否存在于數(shù)組中的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狿HP array_key_exists檢查鍵名或索引是否存在于數(shù)組中的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06