希望我只是忽略了这一点。
我正在尝试使用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);
?>
我有一个抓取网址的简单脚本,如何处理网址以获取目标网址?
希望这不会太混乱。
干杯, 罗布
答案 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"];