国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

php之curl實(shí)現(xiàn)http與https請求的方法

loonggg / 1847人閱讀

這篇文章主要介紹了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)在將常用的幾句保存下來,省的每次都去谷歌。

常規(guī)curl請求:
$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

相關(guān)文章

  • PHP回顧IO

    摘要:命令行時返回值為,標(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...

    happen 評論0 收藏0
  • 如何通過curl完成一些功能

    摘要:例如模擬表單向某個地址發(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...

    Java_oldboy 評論0 收藏0
  • PHP cURL

    摘要:支持創(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é)...

    happen 評論0 收藏0
  • PHP cURL請求詳解

    摘要:不支持多進(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...

    paney129 評論0 收藏0
  • PHP中使用CURL,“撩”服務(wù)器只需幾行——php curl詳細(xì)解析和常見大坑

    摘要:七夕啦,作為開發(fā),妹子沒得撩就撩下服務(wù)器吧,妹子有得撩的同學(xué)那就左擁妹子右抱服務(wù)器吧,況且妹子是要禮物的,服務(wù)器又不用。下面我們來看一些常用的情景,我們需要如何打扮自己配置參數(shù)才能正確撩妹正確撩到服務(wù)器。 七夕啦,作為開發(fā),妹子沒得撩就撩下服務(wù)器吧,妹子有得撩的同學(xué)那就左擁妹子右抱服務(wù)器吧,況且妹子是要禮物的,服務(wù)器又不用。好啦,長話短說再長說,祭出今天的工具——CURL(Client...

    SexySix 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<