Rumah pembangunan bahagian belakang tutorial php PHP抓取HTTPS网页内容方法及错误处理

PHP抓取HTTPS网页内容方法及错误处理

Jun 20, 2016 pm 01:00 PM
kemahiran php

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");
......
Salin selepas log masuk

当运行上面的代码是遇到下面的错误提示:

PHP Warning:  file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
Salin selepas log masuk

为什么会出现这样的错误?

在网上经过一番搜索,发现遇到这样错误的人还不少,问题很直接,是因为在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);
Salin selepas log masuk

运行上面的这个脚本片段,在我的机器上得到的结果是:

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"
}
Salin selepas log masuk

替代方案

发现错误,改正错误,这很简单,困难的是,发现错误后无法改正错误。我原本是想将这个脚本方法远程主机上,但我无法修改远程主机的PHP配置,结果是,我无法使用这一方案,但我们不能在一棵树上吊死,这条路走不通,看看有没有其它路。

另外一个我经常用的PHP里抓取内容的函数是 curl ,它比 file_get_contents() 更强大,提供了很多的可选参数。对于访问 HTTPS 内容的问题,我们需要使用的 CURL 配置参数是:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
Salin selepas log masuk

你可以从语义上看出,它是忽略/跳过了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;
}
Salin selepas log masuk

 


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penjelasan terperinci tentang teknik muat naik dan muat turun fail dalam PHP Penjelasan terperinci tentang teknik muat naik dan muat turun fail dalam PHP Jun 25, 2023 pm 05:57 PM

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

Kemahiran memanggil antara muka PHP Kuaishou API: cara mengendalikan maklumat ralat yang dikembalikan oleh antara muka Kemahiran memanggil antara muka PHP Kuaishou API: cara mengendalikan maklumat ralat yang dikembalikan oleh antara muka Jul 20, 2023 pm 11:22 PM

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.

Penjelasan terperinci tentang kaedah aplikasi teknologi paging dalam PHP dalam rangka kerja Penjelasan terperinci tentang kaedah aplikasi teknologi paging dalam PHP dalam rangka kerja Jun 09, 2023 am 11:40 AM

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.

Ketahui lebih lanjut tentang menggantikan baris baharu dalam PHP Ketahui lebih lanjut tentang menggantikan baris baharu dalam PHP Mar 20, 2024 pm 06:42 PM

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.

Petua Pengaturcaraan PHP: Cara Mengendalikan Penskalaan Imej Petua Pengaturcaraan PHP: Cara Mengendalikan Penskalaan Imej Aug 19, 2023 am 10:36 AM

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 yang hilang dalam tatasusunan Petua pengaturcaraan PHP: Cara cepat mencari nombor yang hilang dalam tatasusunan Mar 01, 2024 pm 04:27 PM

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 koncurrency tinggi PHP Analisis kemahiran pemprosesan koncurrency tinggi PHP Aug 10, 2023 pm 06:53 PM

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 Kuasai kemahiran pelaksanaan 50 fungsi dan perkongsian pengalaman dalam pembangunan PHP Nov 22, 2023 pm 04:51 PM

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

See all articles