【发布时间】:2013-04-16 21:15:05
【问题描述】:
我正在尝试从一个波兰网站下载 xml 文件。第一天它可以工作,但后来我可以将此文件下载到我的服务器(但我可以在我的计算机上打开并下载它)。在我的服务器上应该有 xml 内容的文件中是 html 内容,告诉我我已被阻止。
我试图从我想从中获取 xml 的网站与网站管理员联系,他告诉我我没有被 IP 地址阻止。所以问题是我应该在标题中发送什么或下载这个文件?
我下载 xml 文件的代码如下,这是我要下载的 xml:http://www.polskatimes.pl/rss/fakty_kraj.xml
$headers[] = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
$headers[] = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$headers[] = "Accept-Language:pl-PL,pl;q=0.8";
$headers[] = "Accept-Encoding:gzip,deflate,sdch";
$headers[] = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$headers[] = "Keep-Alive:115";
$headers[] = "Connection:keep-alive";
$headers[] = "Cache-Control:max-age=0";
$xml_data = file_get_contents($xml,false,stream_context_create(
array("http" => array('header' => $headers)))); // your file is in the string "$xml" now.
file_put_contents($xml_md5, $xml_data); // now your xml file is saved.
以详细模式(-v)请求 URL:
* About to connect() to www.polskatimes.pl port 80 (#0)
* Trying 195.8.99.38... connected
* Connectede to www.polskatimes.pl (195.8.99.38) port 80 (#0)
> GET /rss/fakty_kraj.xml HTTP/1.1
> User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: www.polskatimes.pl
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx
< Date: Thu, 18 Apr 2013 10:40:15 GMT
< Content-Type: text/html; charset=utf8
< Transfer-Encoding: chunked
< Connection: close
< Vary: Accept-Encoding
< Expires: Thu, 18 Apr 2013 10:40:15 GMT
< Cache-Control: max-age=0
(html page with message that I am temporary blocked)
* Closing connection #0
【问题讨论】:
-
如果你自己点击 url 会发生什么?还是来自(比如说)服务器命令行上的 wget?你确定你需要所有这些标头,而普通的
$xml = file_get_contents($url)也不能正常工作吗? -
当我使用 wget 或将 url 输入到 lynx 时也会发生同样的情况,所以问题是从服务器获取文件。在乞求时,我并没有使用所有这些标题,但是当这个问题开始时,我在这里寻找答案,我发现问题可能出在标题上,但对它们也不起作用。
-
并且相同的 url 在另一台机器上可以正常工作吗?服务器和该站点之间的任何代理/过滤器可能会拒绝请求?或者,如果过滤不是通过 IP 进行的,您是否必须以某种方式登录该站点才能获取数据?
-
是的,它在我的工作站上运行良好。服务器和该站点之间没有任何代理/过滤器。我没有从这个网站登录的权限。
标签: php xml file-get-contents