为了账号安全,请及时绑定邮箱和手机立即绑定

关于在 PHP 中 CURL 远程获取网页数据的问题.

关于在 PHP 中 CURL 远程获取网页数据的问题.

PHP
蓝山帝景 2019-03-16 03:59:19
关于在 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 .

https://img1.sycdn.imooc.com//5c8f450200019b8f08000534.jpg

https://img1.sycdn.imooc.com//5c8f450400016aa208000543.jpg

查看完整回答
反对 回复 2019-03-18
?
桃花长相依

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 端访问时的头部与参数,大部分时没啥问题的。

查看完整回答
反对 回复 2019-03-18
?
炎炎设计

TA贡献1808条经验 获得超4个赞

谢邀。首先,我看到有注释的dump存在,说明你曾经想断点打印信息,我个人比较喜欢使用error_log函数将调试信息打印在文件中,然后使用tail -f来监控输出。这样不中断程序执行,效果也更实时。
然后,对于你的问题,信息确实有点少,建议你把curl_getinfo的信息打印出来看看

查看完整回答
反对 回复 2019-03-18
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

你服务器上面有没有安装crul扩展?

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 457 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信