PHP预测另一个网站上的URL重定向/更改?

时间:2015-11-28 11:09:03

标签: php redirect curl file-get-contents

是否可以处理来自其他网站的重定向,并能够获取其他网站指向的新网址?

我试图在另一个网站上使用file_get_contents并让脚本每天运行一次,但是,我从中获取内容的URL中有一个哈希码,每天都在变化。

例如:http://website.com/data/kkLs31是我从中获取内容的页面,kkLs31每天都会更改为完整的不同代码,但是当您访问旧链接时,即使它已更改,其服务器也是如此只会将您重定向到新的"代码"无论你把什么放在浏览器中。

因此我需要处理他们将您重定向到新代码,获取新代码并将其传递到我的服务器上,这样我就可以随时从中获取内容。

我不确定这是否可能,但我认为应该有一些我可以做的事。

如果这没有意义,我很乐意详细说明。

1 个答案:

答案 0 :(得分:2)

使用curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

使用CURL
$ch =   curl_init();
        curl_setopt($ch, CURLOPT_URL, 'http://website.com/data/kkLs31');
        curl_setopt($ch, CURLOPT_HEADER, true); // your answer will be in the header
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$a =    curl_exec($ch);

接下来,您可以使用以下内容获取网址:

preg_match("!\r\n(?:Location|URI): *(.*?) *\r\n!", $a, $matches);
$url = $matches[1];

OR

使用简单的var_dump($a)找到答案

注:
看看CURLOPT_FOLLOWLOCATION如何设置为false,这是因为true会继续转发你。 False不会转发给您,但会提供您希望转发的网址。