【问题标题】:Get final redirected URL获取最终重定向的 URL
【发布时间】:2020-02-03 12:34:44
【问题描述】:

特定网址:

https://www.novelupdates.com/extnu/3475538/

重定向到:

https://chrysanthemumgarden.com/novel-tl/dylm/dylm-71/

如何通过 PHP 获得最终重定向的 URL?

到目前为止我已经尝试过什么

这是获取最终 URL 的命令行:

curl -Ls -w %{url_effective} -o /dev/null https://www.novelupdates.com/extnu/3475538/

不适用于此特定网址

测试了这个的PHP版本,仍然没有得到最终的URL:

$url = 'https://www.novelupdates.com/extnu/3475538/'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

// Return follow location true 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
$html = curl_exec($ch); 

// Getinfo or redirected URL from effective URL 
$redirectedUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 

curl_close($ch); 
echo "Original URL:   " . $url . "<br/>"; 
echo "Redirected URL: " . $redirectedUrl . "<br/>"; 

【问题讨论】:

  • 很好地包含到目前为止我尝试过的内容,应该成为本网站的标准。 +1
  • 显然,如果您尝试回显 $html,您就会被验证码(来自 cloudflare)捕获。因此,您可能希望附加用户代理以表现得好像您不是机器人一样。我尝试捕获 cookie,但我确实通过临时添加 CURLOPT_SSL_VERIFYHOSTCURLOPT_SSL_VERIFYPEER 来获取它们。

标签: php curl


【解决方案1】:

我也遇到了同样的问题。应用自定义 userAgent 对我有用。 感谢这篇文章:CURLOPT_FOLLOWLOCATION not working

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
<?php

    $original_url = 'http://www.novelupdates.com/extnu/3475538/';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $original_url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

    $a = curl_exec($ch);
    $url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

    echo "Old: ${original_url}\n";
    echo "New: ${url}\n";
Old: http://www.novelupdates.com/extnu/3475538/
New: https://chrysanthemumgarden.com/novel-tl/dylm/dylm-64/

【讨论】:

  • 用户代理似乎是必要的,否则它会将请求视为机器人请求。我将用户代理添加为Test redirection,通过捕获cookie仍然可以正常工作,但是Test redirection用户代理很快就会被禁止(哈哈)。因此,像您这样模拟浏览器的用户代理是最好的选择。 +1
猜你喜欢
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 2014-12-07
  • 2021-09-15
  • 2011-03-05
  • 2014-02-22
  • 2013-02-03
  • 1970-01-01
相关资源
最近更新 更多