所以我有这个非常简单的 cURL 代码,它应该检索页面的数据...好吧,它实际上确实显示了页面的内容... < strong>有时,而且大多数时候样式都乱七八糟,因为字体没有加载,大多数图像和图形元素也没有加载。如果我更改要显示的页面的 URL,结果会有所不同,有些加载没问题,有些则根本不显示任何内容。
我猜 cURL 处理 css 的方式有问题,我怎样才能让它正确加载它?
<?php
$ch = curl_init();
$url = 'http://3amigos.com.mx/';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (http://www.googlebot.com/bot.html)');
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$data = curl_exec($ch);
echo $data;
?>
ABCDEF
就像现在一样,有时它甚至不加载任何格式的 ABCDEF 以外的任何内容,有时页面完全是空的。
最佳答案
当您使用 curl 发送 http 请求时,curl 获取响应并将其提供给您。
如果响应嵌入了样式,您可以使用 YOU BROWSER NOT ON/WITH CURL 显示此应用。
但是 如果样式/资源在属性 src
上有完整的 URI , href
,您可以看到应用此ON YOU BROWSER NOT ON/WITH CURL。
Curl is not a interpreter HTML, JS, CSS.
Curl 只是使用 HTTP、HTTPS 等各种协议(protocol)传输数据的命令行......
另一个解决方案(太慢)是获取响应并解析它以找到所有 <link>
(css 样式链接)打开并获取内容并将其嵌入...(我认为这是个坏主意,但可行)
关于php - cURL 不加载样式/css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42354248/