【问题标题】:How to follow a URL redirect to the final location?如何按照 URL 重定向到最终位置?
【发布时间】:2018-05-01 11:03:34
【问题描述】:

如何在 PHP 中获取 Airbnb 短链接 URL 的最终目标 URL? (例如https://abnb.me/Vt3MA7vVyM

使用Redirect Detective,我可以看到链接被重定向了三次:

【问题讨论】:

  • PHP Trace Redirect的可能重复
  • 这不是重复的,"PHP Trace Redirect"的解决方案没有给出正确的URL。
  • @Syscall 是的,因为在 curl afaik 中不处理 js 重定向
  • 对@MehravishTemkar。

标签: php redirect


【解决方案1】:

file_get_contents() 遵循 HTTP 响应中定义的重定向。但是,在 JavaScript 中有一个使用 window.top.location 的重定向。所以,你可以使用strpos() 和一个简单的preg_match() 来解析它:

$url = 'https://abnb.me/Vt3MA7vVyM';
$ret = file_get_contents($url);
$pos = strpos($ret, 'window.top.location');
if ($pos !== false) {
    $str = substr($ret, $pos);
    $str = preg_match('~validate\("([^"]*)~', $str, $matches);
    echo html_entity_decode($matches[1]);
}

输出:

 https://airbnb.com/rooms/2110908?=&s=41&ref_device_id=43fb193006d0cb8848f689aec67ba15ae5c48471&user_id=10758532&_branch_match_id=519823851281523702

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-29
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多