关于在 PHP 中 CURL 远程获取网页数据的问题.需要抓取词典的内容 ,本地测试可以 但是放在服务器上就返回 FALSE .
看到之前有人提出相关问题 https://segmentfault.com/q/10...但是加上了 CURLOPT_USERAGENT 还是无效 大神帮忙看看
<?php
function curl_get_contents($url, $timeout = 15) {
// dump($url);
$curlHandle = curl_init();
curl_setopt( $curlHandle , CURLOPT_URL, $url );
curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curlHandle,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
curl_setopt( $curlHandle , CURLOPT_TIMEOUT, $timeout );
// dump(curl_error($curlHandle));
// dump($curlHandle);
$result = curl_exec( $curlHandle );
curl_close( $curlHandle );
return $result;
}
$url = "https://www.ldoceonline.com/dictionary/january";
$html = curl_get_contents($url, 60);
var_dump($html);
?>
4 回答
心有法竹
TA贡献1866条经验 获得超5个赞
经过查询是 SSL 的问题 经phpinfo比对后发现 可用的服务器 curl 是openssl ,不可用的curl 是nss 默认服务安装的是 nss .
桃花长相依
TA贡献1860条经验 获得超8个赞
我看了下你写的请求没什么问题,你把 USERAGENT 换成 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
应该是网站内部的限制,curl 请求就正常模拟 pc 端访问时的头部与参数,大部分时没啥问题的。
炎炎设计
TA贡献1808条经验 获得超4个赞
谢邀。首先,我看到有注释的dump存在,说明你曾经想断点打印信息,我个人比较喜欢使用error_log函数将调试信息打印在文件中,然后使用tail -f来监控输出。这样不中断程序执行,效果也更实时。
然后,对于你的问题,信息确实有点少,建议你把curl_getinfo的信息打印出来看看
- 4 回答
- 0 关注
- 457 浏览
添加回答
举报
0/150
提交
取消