微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Squarespace RSS 提要是否被 PHP 文件拉取请求阻止?

如何解决Squarespace RSS 提要是否被 PHP 文件拉取请求阻止?

Squarespace 为所有使用其服务的博客等提供了一个内置的 RSS 提要,您可以通过将 ?format=RSS 附加到博客 URL 的末尾来查看任何博客RSS 提要。例如,http://denverdarling.com/home 是 Squarespace 的博客,您可以通过 http://denverdarling.com/home?format=rss

查看该博客RSS 提要

当您在浏览器的地址栏中手动输入 RSS 源的 URL 时,它会毫不费力地显示 RSS 内容。但是,当我尝试使用 PHP 脚本提取相同的内容时,每次我都会收到一条错误消息:“HTTP 请求失败!HTTP/1.0 400 错误请求”

我尝试了几个不同的 PHP 函数提取内容,但它们都导致相同的错误。我也在几个不同的 Squarespace 博客上尝试过这个,但它们都导致同样的错误。我尝试过的 PHP 函数包括file_get_contentsfopensimplexml_load_fileDOMDocument()->load() 等。这些都会导致“HTTP 请求失败!HTTP/1.0 400 Bad请求”错误

我在谷歌这个主题时看到的唯一一件事是你不能为受密码保护的博客拉取 RSS 提要,但由于我尝试提取提要的博客都没有受密码保护,我不知道发生了什么。

解决方法

他们可能会阻止无头用户代理

<?php

$url = "http://denverdarling.com/home?format=rss";

$options = array(
  'http'=>array(
    'method'=>"GET",'header'=>"Accept-language: en\r\n" .
              "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML,like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad 
  )
);

$context = stream_context_create($options);
$file = file_get_contents($url,false,$context);

var_dump($file);

这是有效的,他们或他们的主机正在检查请求中的标头并过滤掉特定的东西

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。