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脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++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编程技巧:快速定位数组缺失数字的方法在编程中,经常会遇到需要检查数组中是否缺少某些数字的情况。这时候,我们需要一种快速有效的方法来定位数组中缺失的数字,以便及时处理。本文将介绍一种基于PHP的编程技巧,通过具体的代码示例来展示快速定位数组中缺失数字的方法。1.方法一:使用循环遍历数组首先,我们可以通过循环遍历数组的方式来检查数组中缺失的数字。具体步骤

PHP编程技巧:如何处理图片缩放在现代网页设计中,图片是不可或缺的一部分,而图片缩放是常见的操作之一。无论是在展示图片集合,还是在响应不同大小设备的需求上,图片缩放都起到了重要的作用。本文将介绍如何使用PHP编程语言处理图片缩放,并附上代码示例供参考。一、使用GD库进行图片缩放GD库是PHP中一个强大的图像处理库,我们可以使用它来实现图片缩放功能。首先,确保

替换PHP中的换行符是在实际开发中经常会遇到的问题,特别是在处理文本数据时。换行符在不同操作系统中的表示方式可能不一样,通常在Windows系统中是"",在Linux系统中是""。因此,我们需要对换行符进行统一处理,以确保文本数据的格式正常。本文将深入探讨PHP中替换换行符的技巧,并提供具体的代码示例。1.使用PHP内置函数处理换行符PHP提供了一些内置函

PHP高并发处理技巧解析随着互联网的发展,对于网站的并发访问量要求也越来越高。而PHP作为一种开发网站的编程语言,面对高并发的访问压力,需要一些特殊的处理技巧来提高性能和稳定性。本文将介绍一些PHP高并发处理的技巧,并提供代码示例。使用PHP-FPMPHP-FPM(FastCGIProcessManager)是PHP官方提供的一个进程管理器,它可以有效地

掌握PHP开发的50个功能实现技巧与经验分享作为一名PHP开发者,我们时刻都在追求高效、高质量的代码实现。为了提高开发效率和代码质量,我们需要积累一些经验和技巧,以应对各种复杂的开发需求和挑战。在本文中,我将分享50个实现各种功能的PHP开发技巧和经验,希望对大家的PHP开发之路有所帮助。使用合适的框架:选择和熟悉一个适合自己的PHP框架,可以提高开发效率和
