您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP实现抓取HTTPS内容_PHP

2024/3/21 7:00:37发布18次查看
最近在研究hacker news api时遇到一个https问题。因为所有的hacker news api都是通过加密的https协议访问的,跟普通的http协议不同,当使用php里的函数 file_get_contents() 来获取api里提供的数据时,出现错误,使用的代码是这样的:
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;
}
以上就是php获取https内容的全部过程了,很简单很实用,推荐给有相同项目需求的小伙伴。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product