0

我正在尝试使用 cURL 获取目标 url。

<?php
$ch = curl_init('http://www.cnn.com');
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31");
curl_setopt($ch, CURLOPT_REFERER, "http://www.mydomain.com/");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$content = curl_exec($ch);
echo $lastUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
?>

上面的代码产生以下输出,它在我的本地服务器上运行良好。

输出:本地服务器中的“ http://edition.cnn.com ”,实际服务器中的“ http://www.cnn.com ”。

------------------------------------------------------
                    Server Detail
------------------------------------------------------
Local                    |            Actual
                         |
PHP Version 5.3.13       |      PHP Version 5.3.20
cURL Info 7.24.0         |      cURL Info 7.15.5

Protocols:      
dict, file, ftp,         |      telnet, dict,
ftps, gopher,            |      ldap, http,
http, https,             |      file, https, ftps
imap, imaps, ldap,       |      tftp,ftp,
pop3, pop3s,             |
rtsp, scp,               |
sftp, smtp,              |
smtps,                   |
telnet, tftp             |
-------------------------------------------------------

为什么实际服务器会出现问题?

4

1 回答 1

0

为什么实际服务器会出现问题?

我的猜测是 CNN 正在使用标头或 IP 来显示不同的内容。

试试 Firefox 插件 HTTP live headers 看看你的浏览器做了什么,然后把它复制到 CURL 中。

于 2013-05-17T03:30:16.443 回答