我试图获取最终网站的网址即时重定向。 链接我去了http://www.primewire.ag/external.php?url=aHR0cDovL3d3dy5wcm9tcHRmaWxlLmNvbS9sL0RBMTU1RjYwRUYtRkMyNzREQ0Q4RA
在您转到该链接后,您将被重定向到 - http://www.promptfile.com/l/DA155F60EF-FC274DCD8D
我想获得第二个网址。 我在here
中找到了类似的问题但是使用我从那里得到的代码
$url= 'http://www.primewire.ag/external.php?url=aHR0cDovL3d3dy5wcm9tcHRmaWxlLmNvbS9sL0RBMTU1RjYwRUYtRkMyNzREQ0Q4RA';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Must be set to true so that PHP follows any "Location:" header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$a = curl_exec($ch); // $a will contain all headers
$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // This is what you need, it will return you the last effective URL
// Uncomment to see all headers
/*
echo "<pre>";
print_r($a);echo"<br>";
echo "</pre>";
*/
echo $url; // Voila
回显第一个URL而不是重定向的URL。 谢谢
答案 0 :(得分:2)
服务器未重定向(响应为200而不是304)。
返回的HTML包含
<frameset rows="24,100%" frameborder="0">
<frame src="frame_header.php?hello=&title=" scrolling="no" />
<frame src="http://www.promptfile.com/l/DA155F60EF-FC274DCD8D" />
</frameset><noframes>http://www.promptfile.com/l/DA155F60EF-FC274DCD8D</noframes>
会触发HTML浏览器加载该页面。 curl不解析返回的HTML,只解析HTTP头,因为它是HTTP客户端,而不是实际的HTML浏览器。因此,实际上并没有请求第二个URL(您可以通过查看示例代码中实际返回的curl来验证),并且有效URL实际上是您要返回的URL。
答案 1 :(得分:1)
您的代码工作正常,但目标服务器不会将您重定向到任何地方。这是您对第一个卷曲请求的HTML回复:
<frameset rows="24,100%" frameborder="0">
<frame src="frame_header.php?hello=&title=" scrolling="no" />
<frame src="http://www.promptfile.com/l/DA155F60EF-FC274DCD8D" />
</frameset><noframes>http://www.promptfile.com/l/DA155F60EF-FC274DCD8D</noframes>
</html>
正如您所看到的,这不是重定向,而是一个加载最终页面的框架。关注重定向无法帮助您。