我在本地服務器中獲取網頁的源代碼完全沒有問題:
$html = file_get_contents('https://opac.nlai.ir');
直到幾天前,我還在我的主機上使用下面的代碼還可以:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://opac.nlai.ir');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
$result = curl_exec($curl);
但是今天我發現現在該站點正在使用 ssl 并且它不再使用 http 并強制重定向到 https。所以我做了一些搜索并找到了這個作為修復:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
上面的代碼適用于諸如“https://google.com”之類的網站(以及我嘗試過的任何其他 https 網站!)但不適用于該特定網站(“https://opac.nlai.ir”) ) 在這種情況下,頁面需要大約一分鐘才能加載 (!) 最后使用 var_dump($result) ,我得到“bool(false)”我不知道該網站與其他網站有何不同,我真的很想要以了解問題的原因。
對不起我的英語不好。
uj5u.com熱心網友回復:
只是填寫這個答案的記錄。
正如問題評論中所說,由于您的服務器位置區域(執行請求),您嘗試獲取其源代碼的網站阻止了您的請求。似乎它只回應特定的 IP 位置。
@Hesam 驗證的解決方案是通過位于允許位置區域的代理 IP 使用 cUrl,他發現至少運行良好。
他按照其他 SO 帖子中的說明進行操作: How ot use cUrl via a proxy
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/383835.html
