抓取重定向的目标链接

时间:2012-12-04 21:58:54

标签: php url

希望我只是忽略了这一点。

我正在尝试使用PHP获取重定向链接的目标网址。这是获取会员/隐形链接的网站网址。

最佳示例:http://tinyurl.com/2tx转到google.com

注意:这是一个示例,链接是动态创建的

现在我通过

传递网址

www.mysite.com/redirect.php?link=http://tinyurl.com/2tx

以下是该网站的代码 - 注意:由于网址中包含“&符号”,因此我必须通过GET这条路线。

<?php
    $name = http_build_query($_GET);
    // which you would then may want to strip away the first 'name='
    $name = substr($name, strlen('name='));
    //change link to a nice URL
    $url = rawurldecode($name);
?>

我有一个抓取网址的简单脚本,如何处理网址以获取目标网址?

希望这不会太混乱。

干杯, 罗布

4 个答案:

答案 0 :(得分:4)

您应该在下次发布一些代码。我假设您正在使用cURL来执行此操作。这很简单:

//sanitize
$ch = curl_init($_GET['link']);

//follow redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_exec($ch);

$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
编辑:每个Dagon,你只是想“知道网址但不去那里”。如果您只需要知道网址但不知道其内容,则使用此设置会更有效:

curl_setopt($ch, CURLOPT_NOBODY, true);

答案 1 :(得分:0)

对您拥有的URL发出HTTP HEAD请求。您将获得带有目标URL的HTTP 301或302响应。

示例:将您的网址here设置为查看发出HTTP头请求时返回的响应。

答案 2 :(得分:0)

这可能是编码问题。您的网址中的参数未编码,因此在尝试使用$ _GET获取时可能会损坏。

您想使用此网址:

www.mysite.com/redirect.php?link=http%3A%2F%2Ftinyurl.com%2F2tx

您可以使用urlencode()函数在PHP中对URL变量进行编码。现在可以像这样访问您想要的变量(我认为):

echo $_GET['link'];  // http://tinyurl.com/2tx

答案 3 :(得分:0)

我将如何做到这一点(阅读评论):

<?php

// Connect to the page:
$ch = curl_init("http://tinyurl.com/2tx");

// Don't get the body (remove if you want the body):
curl_setopt($ch, CURLOPT_NOBODY, true);

// Follow the page redirects:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// Retun the data as a string (Remove to echo to the page):
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute:
curl_exec($ch);

// Get data:
print_r($data = curl_getinfo($ch));

// Get just the url:
echo $data["url"];