PHP抓取HTTPS网页内容方法及错误处理
PHP抓取HTTPS网页内容方法及错误处理
最近在研究Hacker News API时遇到一个HTTPS问题。因为所有的Hacker News API都是通过加密的HTTPS协议访问的,跟普通的HTTP协议不同,当使用PHP里的函数 file_get_contents() 来获取API里提供的数据时,出现错误,使用的代码是这样的:
<?php $data = file_get_contents("https://www.scutephp.com"); ......
当运行上面的代码是遇到下面的错误提示:
PHP Warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
为什么会出现这样的错误?
在网上经过一番搜索,发现遇到这样错误的人还不少,问题很直接,是因为在PHP的配置文件里没有开启一个参数,在我本机上是 /apache/bin/php.ini 里的 ;extension=php_openssl.dll 这一项,需要将前面的分号去掉。你可以用下面的脚本来检查你的PHP环境的配置:
$w = stream_get_wrappers(); echo 'openssl: ', extension_loaded ('openssl') ? 'yes':'no', "\n"; echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n"; echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n"; echo 'wrappers: ', var_dump($w);
运行上面的这个脚本片段,在我的机器上得到的结果是:
openssl: no http wrapper: yes https wrapper: no wrappers: array(10) { [0]=> string(3) "php" [1]=> string(4) "file" [2]=> string(4) "glob" [3]=> string(4) "data" [4]=> string(4) "http" [5]=> string(3) "ftp" [6]=> string(3) "zip" [7]=> string(13) "compress.zlib" [8]=> string(14) "compress.bzip2" [9]=> string(4) "phar" }
替代方案
发现错误,改正错误,这很简单,困难的是,发现错误后无法改正错误。我原本是想将这个脚本方法远程主机上,但我无法修改远程主机的PHP配置,结果是,我无法使用这一方案,但我们不能在一棵树上吊死,这条路走不通,看看有没有其它路。
另外一个我经常用的PHP里抓取内容的函数是 curl ,它比 file_get_contents() 更强大,提供了很多的可选参数。对于访问 HTTPS 内容的问题,我们需要使用的 CURL 配置参数是:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
你可以从语义上看出,它是忽略/跳过了SSL安全验证。也许这不是一个很好的做法,但对于普通的场景中,这几经足够了。
下面是利用 Curl 封装的一个能访问HTTPS内容的函数:
function getHTTPS($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($ch); curl_close($ch); return $result; }

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP是一種非常流行的伺服器端程式語言,它在網站開發中被廣泛應用。其中,檔案上傳和下載是網站常用的功能之一,而PHP提供了豐富的函數和技巧來實現這些功能。在本文中,我們將詳細介紹PHP中的檔案上傳和下載技巧,讓你能夠更有效率地開發網站。文件上傳檔案上傳是指把本機電腦中的檔案傳送到遠端伺服器,上傳檔案後我們可以對這些檔案進行儲存、處理和展示等操作。在PHP中

PHP快手API介面呼叫技巧:如何處理介面回傳的錯誤訊息在使用PHP進行快手API介面呼叫時,我們常會遇到介面回傳錯誤的情況。對於處理介面傳回的錯誤訊息,我們需要進行適當的處理和回饋,以便提高應用程式的穩定性和使用者體驗。本文將介紹一些處理介面傳回錯誤訊息的技巧,並提供對應的程式碼範例。使用try-catch擷取異常在呼叫API介面時,可能會發生一些異常錯誤,

隨著網路的快速發展,越來越多的網站需要實現資料分頁功能,以提高使用者的瀏覽體驗。在Web開發中,PHP是最受歡迎的伺服器端程式語言之一,而資料分頁功能是PHP開發中不可或缺的技術。本文將介紹PHP中的分頁技術在框架中的應用方法,並比較不同的分頁方案的優缺點。一、傳統PHP分頁方法在傳統PHP開發中,實作資料分頁功能需要編寫較多的程式碼,並且需要在每個頁面中重

替換PHP中的換行符號是在實際開發中經常會遇到的問題,特別是在處理文字資料時。換行符在不同作業系統中的表示方式可能不一樣,通常在Windows系統中是"",在Linux系統中是""。因此,我們需要對換行符號進行統一處理,以確保文字資料的格式正常。本文將深入探討PHP中替換換行符的技巧,並提供具體的程式碼範例。 1.使用PHP內建函數處理換行符PHP提供了一些內建函

PHP程式設計技巧:快速定位數組缺失數字的方法在程式設計中,常常會遇到需要檢查數組中是否缺少某些數字的情況。這時候,我們需要一種快速有效的方法來定位數組中缺少的數字,以便及時處理。本文將介紹一種基於PHP的程式設計技巧,透過具體的程式碼範例來展示快速定位數組中缺少數字的方法。 1.方法一:使用循環遍歷數組首先,我們可以透過循環遍歷數組的方式來檢查數組中缺少的數字。具體步驟

PHP程式設計技巧:如何處理圖片縮放在現代網頁設計中,圖片是不可或缺的一部分,而圖片縮放是常見的操作之一。無論是在展示圖片集合,還是在回應不同大小裝置的需求上,圖片縮放都起到了重要的作用。本文將介紹如何使用PHP程式語言處理圖片縮放,並附上程式碼範例供參考。一、使用GD庫進行圖片縮放GD庫是PHP中一個強大的影像處理庫,我們可以使用它來實現圖片縮放功能。首先,確保

PHP高並發處理技巧解析隨著網路的發展,對於網站的並發訪問量要求也越來越高。而PHP作為一種開發網站的程式語言,面對高並發的存取壓力,需要一些特殊的處理技巧來提高效能和穩定性。本文將介紹一些PHP高並發處理的技巧,並提供程式碼範例。使用PHP-FPMPHP-FPM(FastCGIProcessManager)是PHP官方提供的進程管理器,它可以有效地

掌握PHP開發的50個功能實現技巧與經驗分享身為PHP開發者,我們時刻都在追求高效率、高品質的程式碼實作。為了提高開發效率和程式碼品質,我們需要累積一些經驗和技巧,以應對各種複雜的開發需求和挑戰。在本文中,我將分享50個實現各種功能的PHP開發技巧與經驗,希望對大家的PHP開發之路有所幫助。使用合適的框架:選擇和熟悉一個適合自己的PHP框架,可以提高開發效率和
