這篇文章主要介紹了php之curl實(shí)現(xiàn)http與https請求的方法,分別講述了PHP訪問http網(wǎng)頁與訪問https網(wǎng)頁的實(shí)例,以及相關(guān)的注意事項(xiàng),需要的朋友可以參考下。
本文實(shí)例講述了php之curl實(shí)現(xiàn)http與https請求的方法,分享給大家供大家參考。具體如下:
通常來說,php的curl函數(shù)組可以幫助我們把機(jī)器偽裝成人的行為來抓取網(wǎng)站,下面來分享兩個例子,一個是訪問http網(wǎng)頁,一個訪問https網(wǎng)頁,一起來看一下。
每次要使用curl的時候,總要查一堆資料。
現(xiàn)在將常用的幾句保存下來,省的每次都去谷歌。
$url = "http://www.jb51.net"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); curl_close($curl); var_dump($data);使用curl請求HTTPS:
$url = "https://www.jb51.net"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 設(shè)置頭信息(當(dāng)用IP直接訪問時,加這個如:https://baibu.com -> 220.15.23.5) // curl_setopt($ci, CURLOPT_HTTPHEADER, array("Host:baibu.com")); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //這個是重點(diǎn),規(guī)避ssl的證書檢查。 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 跳過host驗(yàn)證 $data = curl_exec($curl); curl_close($curl); var_dump($data);注意
當(dāng)請求https的數(shù)據(jù)時,會要求證書,這時候,加上下面這兩個參數(shù),規(guī)避ssl的證書檢查
復(fù)制代碼 代碼如下:
// https請求 不驗(yàn)證證書和hosts curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 從證書中檢查SSL加密算法是否存在(默認(rèn)不需要驗(yàn)證) curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl https請求代碼
"fdipzone"); $header = array(); $response = curl_https($url, $data, $header, 5); echo $response; ?>baidu域名解析后https請求示例
為什么要解析域名后再請求呢?因?yàn)橛胏url請求網(wǎng)絡(luò),如果直接用域名baidu.com 這樣會在請求中解析域名耗時很長,測試了幾次有10幾秒吧,如果直接用解析后的IP請求,則速度會大大提升。
請看下面的示例:
// $url = "https://www.baidu.com"; $url = "https://123.125.114.144"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 增加請求頭文件 curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host:baidu.com")); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//這個是重點(diǎn)。 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); $data = curl_exec($curl); // 打印獲取curl請求信息 // $curl_info = curl_getinfo( $curl ); // print_r($curl_info); // 打印錯誤信息 // curl_error( $curl); curl_close($curl); var_dump($data);更加完美的封裝:
加載證書文件:
/** * curl POST * * @param string url * @param array 數(shù)據(jù) * @param int 請求超時時間 * @param bool HTTPS時是否進(jìn)行嚴(yán)格認(rèn)證 * @return string */ function curlPost($url, $data = array(), $timeout = 30, $CA = true){ $cacert = getcwd() . "/cacert.pem"; //CA根證書 $SSL = substr($url, 0, 8) == "https://" ? true : false; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout-2); if ($SSL && $CA) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 只信任CA頒布的證書 curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根證書(用來驗(yàn)證的網(wǎng)站證書是否是CA頒布) curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 檢查證書中是否設(shè)置域名,并且是否與提供的主機(jī)名匹配 } else if ($SSL && !$CA) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何證書 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 檢查證書中是否設(shè)置域名 } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:")); //避免data數(shù)據(jù)過長問題 curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); //data with URLEncode $ret = curl_exec($ch); //var_dump(curl_error($ch)); //查看報(bào)錯信息 curl_close($ch); return $ret; }
相關(guān)文章地址:詳解使用PHP CURL訪問HTTPS
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/21731.html
摘要:命令行時返回值為,標(biāo)準(zhǔn)輸入輸出均指向終端可用進(jìn)程號查看。會在腳本執(zhí)行完畢后關(guān)閉三個流,無需用戶手動關(guān)閉。與遠(yuǎn)程網(wǎng)址交互是一個請求和響應(yīng)的過程,其中細(xì)節(jié)可參考本人之前的文章回顧之請求和回顧之響應(yīng),也可參考協(xié)議的權(quán)威文檔。 轉(zhuǎn)載請注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請求 cookie web響應(yīng) ses...
摘要:例如模擬表單向某個地址發(fā)送數(shù)據(jù)在無驗(yàn)證碼的情況下模擬表單完成用戶登陸上傳某個文件到遠(yuǎn)程服務(wù)器請求遠(yuǎn)程服務(wù)器提供的某些功能支持和協(xié)議。我們在使用過程當(dāng)中,如果沒有基礎(chǔ)根本不知道如何開發(fā)微信公眾號。 微信微博公眾號、QQ公眾號、地圖和很多的第三方功能提供都是采用http 的API(應(yīng)用程序)形式向開發(fā)人員提供的功能。 如果你只希望能夠做些簡單的微信公眾號、QQ公眾號等小應(yīng)用,深入學(xué)習(xí)PHP...
摘要:支持創(chuàng)建的庫,能夠連接通訊各種服務(wù)器使用各種協(xié)議。目前支持的協(xié)議有。在一些復(fù)雜的請求中,不能夠設(shè)置請求頭代理認(rèn)證等相關(guān)信息,更不能向某個服務(wù)器提交表單數(shù)據(jù),上傳文件。文件類型可在文件名后以的格式指定。 概述 簡介 在設(shè)計(jì)之初,cURL (Client URL Library)是一種作為使用 URL 語法傳輸數(shù)據(jù)的命令行工具。通過 cURL 庫,我們可以在 PHP 腳本中自由地使用某種協(xié)...
摘要:不支持多進(jìn)程,如果需要異步請求,非阻塞的方式,請選擇。時會發(fā)送請求,類型為,是表單提交時最常見的一種。允許函數(shù)執(zhí)行的最長秒數(shù)。設(shè)定請求中部分的內(nèi)容。常規(guī)的使用來請求,功能強(qiáng)大,使用方便,按需配置。 在PHP后端的開發(fā)過程中,除了獲取數(shù)據(jù)庫的數(shù)據(jù)和處理數(shù)據(jù)的內(nèi)部邏輯,往往還需要請求其他服務(wù)器接口的數(shù)據(jù),我們一般有3種方式來獲取數(shù)據(jù),分別是: file_get_contents fsoc...
摘要:七夕啦,作為開發(fā),妹子沒得撩就撩下服務(wù)器吧,妹子有得撩的同學(xué)那就左擁妹子右抱服務(wù)器吧,況且妹子是要禮物的,服務(wù)器又不用。下面我們來看一些常用的情景,我們需要如何打扮自己配置參數(shù)才能正確撩妹正確撩到服務(wù)器。 七夕啦,作為開發(fā),妹子沒得撩就撩下服務(wù)器吧,妹子有得撩的同學(xué)那就左擁妹子右抱服務(wù)器吧,況且妹子是要禮物的,服務(wù)器又不用。好啦,長話短說再長說,祭出今天的工具——CURL(Client...
閱讀 1072·2021-11-25 09:43
閱讀 696·2021-11-22 14:45
閱讀 3816·2021-09-30 09:48
閱讀 1061·2021-08-31 09:41
閱讀 1970·2019-08-30 13:52
閱讀 1976·2019-08-30 11:24
閱讀 1341·2019-08-30 11:07
閱讀 950·2019-08-29 12:15