【问题标题】:PHP get redirected linkPHP 获取重定向链接
【发布时间】:2014-06-29 16:48:51
【问题描述】:

我正在尝试获取被重定向的最终网站的 URL。 我去的链接是-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。 谢谢

【问题讨论】:

  • 启用详细模式以输出完整的请求和响应集,以确保实际发生重定向

标签: php url redirect


【解决方案1】:

您的代码运行正常,但目标服务器并未将您重定向到任何地方。这是对您的第一个 curl 请求的 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>

如您所见,这不是重定向,而是加载最终页面的框架。关注重定向在这里对您没有帮助。

【讨论】:

    【解决方案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 实际上是您返回的那个。

    【讨论】:

    • 那么可以解析那个HTML吗?
    猜你喜欢
    • 1970-01-01
    • 2014-11-30
    • 2015-07-18
    • 2014-08-17
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多