鍍金池/ 問答/PHP  Linux/ 關(guān)于在 PHP 中 CURL 遠(yuǎn)程獲取網(wǎng)頁數(shù)據(jù)的問題.

關(guān)于在 PHP 中 CURL 遠(yuǎn)程獲取網(wǎng)頁數(shù)據(jù)的問題.

關(guān)于在 PHP 中 CURL 遠(yuǎn)程獲取網(wǎng)頁數(shù)據(jù)的問題.
需要抓取詞典的內(nèi)容 ,本地測試可以 但是放在服務(wù)器上就返回 FALSE .

看到之前有人提出相關(guān)問題 https://segmentfault.com/q/10...
但是加上了 CURLOPT_USERAGENT 還是無效 大神幫忙看看

<?php
function curl_get_contents($url, $timeout = 15) { 

    // dump($url);
    $curlHandle = curl_init(); 
    curl_setopt( $curlHandle , CURLOPT_URL, $url ); 
    curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 ); 
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書和hosts
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curlHandle,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
    curl_setopt( $curlHandle , CURLOPT_TIMEOUT, $timeout ); 
    // dump(curl_error($curlHandle));

    // dump($curlHandle);
    $result = curl_exec( $curlHandle ); 
    curl_close( $curlHandle ); 
    return $result; 
} 


$url = "https://www.ldoceonline.com/dictionary/january";


    $html = curl_get_contents($url, 60);

    var_dump($html);

?>
回答
編輯回答
玩控

你服務(wù)器上面有沒有安裝crul擴(kuò)展?

2017年11月19日 21:11
編輯回答
選擇

我看了下你寫的請求沒什么問題,你把 USERAGENT 換成 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36

應(yīng)該是網(wǎng)站內(nèi)部的限制,curl 請求就正常模擬 pc 端訪問時的頭部與參數(shù),大部分時沒啥問題的。

2017年7月8日 06:08
編輯回答
念初

是不是服務(wù)器環(huán)境不支持訪問外網(wǎng)啊,既然是返回FALSE,那應(yīng)該是curl_exec函數(shù)執(zhí)行失敗了,先用curl_errno函數(shù)查看下錯誤碼是什么,這樣才好方便定位問題

2017年12月1日 07:45
編輯回答
笨尐豬

經(jīng)過查詢是 SSL 的問題 經(jīng)phpinfo比對后發(fā)現(xiàn) 可用的服務(wù)器 curl 是openssl ,不可用的curl 是nss 默認(rèn)服務(wù)安裝的是 nss .

圖片描述

圖片描述

2018年2月16日 00:24
編輯回答
逗婦乳

謝邀。首先,我看到有注釋的dump存在,說明你曾經(jīng)想斷點打印信息,我個人比較喜歡使用error_log函數(shù)將調(diào)試信息打印在文件中,然后使用tail -f來監(jiān)控輸出。這樣不中斷程序執(zhí)行,效果也更實時。
然后,對于你的問題,信息確實有點少,建議你把curl_getinfo的信息打印出來看看

2017年11月17日 17:52