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; }

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP ialah bahasa pengaturcaraan sebelah pelayan yang sangat popular yang digunakan secara meluas dalam pembangunan laman web. Antaranya, memuat naik dan memuat turun fail adalah salah satu fungsi laman web yang biasa digunakan, dan PHP menyediakan pelbagai fungsi dan teknik untuk melaksanakan fungsi ini. Dalam artikel ini, kami akan memperkenalkan secara terperinci teknik muat naik dan muat turun fail dalam PHP supaya anda boleh membangunkan laman web anda dengan lebih cekap. Muat naik fail Muat naik fail merujuk kepada menghantar fail dari komputer tempatan ke pelayan jauh Selepas memuat naik fail, kami boleh menyimpan, memproses dan memaparkan fail ini. Dalam PHP

Petua panggilan antara muka API PHP Kuaishou: Cara mengendalikan mesej ralat yang dikembalikan oleh antara muka Apabila menggunakan PHP untuk memanggil antara muka API Kuaishou, kita sering menghadapi situasi di mana antara muka mengembalikan ralat. Untuk maklumat ralat yang dikembalikan oleh antara muka pemprosesan, kami perlu menyediakan pemprosesan dan maklum balas yang sesuai untuk meningkatkan kestabilan dan pengalaman pengguna aplikasi. Artikel ini akan memperkenalkan beberapa teknik untuk mengendalikan maklumat ralat yang dikembalikan oleh antara muka dan memberikan contoh kod yang sepadan. Gunakan try-catch untuk menangkap pengecualian Apabila memanggil antara muka API, beberapa ralat pengecualian mungkin berlaku.

Dengan perkembangan pesat Internet, semakin banyak laman web perlu melaksanakan fungsi paging data untuk meningkatkan pengalaman menyemak imbas pengguna. Dalam pembangunan Web, PHP adalah salah satu bahasa pengaturcaraan sebelah pelayan yang paling popular, dan fungsi halaman data adalah teknologi yang sangat diperlukan dalam pembangunan PHP. Artikel ini akan memperkenalkan kaedah aplikasi teknologi paging dalam PHP dalam rangka kerja, dan membandingkan kelebihan dan kekurangan penyelesaian paging yang berbeza. 1. Kaedah paging PHP tradisional Dalam pembangunan PHP tradisional, melaksanakan fungsi paging data memerlukan menulis banyak kod, dan ia perlu diulang dalam setiap halaman.

Menggantikan baris baharu dalam PHP adalah masalah yang sering dihadapi dalam pembangunan sebenar, terutamanya semasa memproses data teks. Watak baris baharu mungkin dinyatakan secara berbeza dalam sistem pengendalian yang berbeza Ia biasanya "" dalam sistem Windows dan "" dalam sistem Linux. Oleh itu, kami perlu memproses pemisah baris secara seragam untuk memastikan data teks berada dalam format biasa. Artikel ini akan menyelidiki teknik menggantikan baris baharu dalam PHP dan memberikan contoh kod khusus. 1. Gunakan fungsi terbina dalam PHP untuk memproses baris baharu PHP menyediakan beberapa fungsi terbina dalam.

Kemahiran pengaturcaraan PHP: Cara mengendalikan penskalaan imej Dalam reka bentuk web moden, imej adalah bahagian penting, dan penskalaan imej adalah salah satu operasi biasa. Sama ada ia memaparkan koleksi imej atau bertindak balas kepada keperluan peranti dengan saiz yang berbeza, penskalaan imej memainkan peranan penting. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan PHP untuk mengendalikan penskalaan imej, dan melampirkan contoh kod untuk rujukan. 1. Gunakan perpustakaan GD untuk penskalaan imej Pustaka GD ialah perpustakaan pemprosesan imej yang berkuasa dalam PHP. Kami boleh menggunakannya untuk melaksanakan fungsi penskalaan imej. Pertama, pastikan

Petua Pengaturcaraan PHP: Cara Cepat Mencari Nombor Hilang dalam Tatasusunan Dalam pengaturcaraan, anda sering menghadapi situasi di mana anda perlu menyemak sama ada nombor tertentu tiada dalam tatasusunan. Pada masa ini, kita memerlukan cara yang cepat dan berkesan untuk mencari nombor yang hilang dalam tatasusunan supaya ia boleh diproses tepat pada masanya. Artikel ini akan memperkenalkan teknik pengaturcaraan berasaskan PHP, menggunakan contoh kod khusus untuk menunjukkan cara mencari nombor yang hilang dalam tatasusunan dengan cepat. 1. Kaedah 1: Gunakan gelung untuk melintasi tatasusunan Mula-mula, kita boleh menyemak nombor yang hilang dalam tatasusunan dengan menggelung melalui tatasusunan. Langkah-langkah tertentu

Analisis Kemahiran Pemprosesan Selaras Tinggi PHP Dengan perkembangan Internet, keperluan untuk lawatan serentak ke laman web semakin tinggi dan lebih tinggi. Sebagai bahasa pengaturcaraan untuk membangunkan laman web, PHP memerlukan beberapa kemahiran pemprosesan khas untuk meningkatkan prestasi dan kestabilan apabila berhadapan dengan tekanan capaian serentak yang tinggi. Artikel ini akan memperkenalkan beberapa teknik pemprosesan konkurensi tinggi PHP dan memberikan contoh kod. Gunakan PHP-FMPPHP-FPM (FastCGIProcessManager) ialah pengurus proses yang disediakan secara rasmi oleh PHP, yang boleh

Kuasai kemahiran pelaksanaan 50 fungsi dan perkongsian pengalaman dalam pembangunan PHP Sebagai pembangun PHP, kami sentiasa mengejar pelaksanaan kod yang cekap dan berkualiti tinggi. Untuk meningkatkan kecekapan pembangunan dan kualiti kod, kami perlu mengumpul beberapa pengalaman dan kemahiran untuk menghadapi pelbagai keperluan dan cabaran pembangunan yang kompleks. Dalam artikel ini, saya akan berkongsi 50 petua dan pengalaman pembangunan PHP untuk melaksanakan pelbagai fungsi, dengan harapan dapat membantu semua orang dalam perjalanan pembangunan PHP mereka. Gunakan rangka kerja yang sesuai: Memilih dan membiasakan diri dengan rangka kerja PHP yang sesuai dengan anda boleh meningkatkan kecekapan pembangunan dan
