php 怎么获得链接的真实地址
-
要获取链接的真实地址,可以使用以下方法:
1. 使用cURL库:cURL是一个强大的用于进行网络传输的库。可以使用cURL库发送HTTP请求,并获取到目标链接的真实地址。具体步骤如下:
“`php
$url = ‘目标链接的地址’;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
$realUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);echo “真实地址为:” . $realUrl;
“`
在上述代码中,我们通过设置`CURLOPT_FOLLOWLOCATION`为true,使cURL库能够跟随重定向,最终获取到真实地址。然后使用`curl_getinfo`函数,传入参数`CURLINFO_EFFECTIVE_URL`来获取到最终的URL。2. 使用HTTP头部获取:有些网站在重定向时会在HTTP头部的`Location`字段中包含真实地址。可以通过以下代码来获取:
“`php
$url = ‘目标链接的地址’;
$headers = get_headers($url, 1);
$realUrl = $headers[‘Location’];echo “真实地址为:” . $realUrl;
“`
在上述代码中,我们使用`get_headers`函数来获取到目标链接的HTTP头部信息,然后从头部信息中获取到`Location`字段的值,即真实地址。需要注意的是,以上方法可能会受到服务器的限制或者反爬措施的影响,无法获取到真实地址。此外,部分网站可能通过JavaScript进行跳转,以上方法可能无法获取到真实地址。在处理这种情况时,可能需要使用其他技术手段来解决。
2年前 -
要获得链接的真实地址,可以使用PHP中的`get_headers()`函数或者`curl`库。
1. 使用`get_headers()`函数获得链接的真实地址:
“`php
$url = “https://www.example.com”;
$headers = get_headers($url, 1);
$realUrl = $headers[‘Location’];
“`2. 使用`curl`库获得链接的真实地址:
“`php
$url = “https://www.example.com”;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
$realUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
“`3. 解析重定向链以获得所有重定向的真实地址:
“`php
function getRealUrl($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
$redirectUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);if ($redirectUrl != $url) {
return getRealUrl($redirectUrl);
}return $url;
}$realUrl = getRealUrl(“https://www.example.com”);
“`4. 处理重定向循环的情况:
“`php
function getRealUrl($url, $limit = 10) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
$redirectUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);if ($redirectUrl != $url) {
if ($limit > 0) {
return getRealUrl($redirectUrl, $limit – 1);
} else {
return $url;
}
}return $url;
}$realUrl = getRealUrl(“https://www.example.com”);
“`5. 使用`file_get_contents`函数获得重定向后的真实地址:
“`php
function getRealUrl($url) {
$headers = get_headers($url, 1);
if (isset($headers[‘Location’])) {
$redirectUrl = $headers[‘Location’];
if (is_array($redirectUrl)) {
$redirectUrl = end($redirectUrl);
}
return getRealUrl($redirectUrl);
}
return $url;
}$realUrl = getRealUrl(“https://www.example.com”);
“`2年前 -
要获取链接的真实地址,可以使用以下几种方法:
1. 使用cURL库:cURL是一个开源的网络库,可以用来发送HTTP请求并获取响应。我们可以使用cURL来获取链接的真实地址。
“`php
$url = ‘http://example.com’;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);$realUrl = $info[‘url’];
echo $realUrl;
“`在上面的代码中,我们使用`curl_setopt()`函数设置了两个选项,`CURLOPT_FOLLOWLOCATION`表示自动跟随重定向,`CURLOPT_RETURNTRANSFER`表示将响应保存到变量中而不是输出到屏幕上。然后通过`curl_getinfo()`函数获取请求的一些信息,其中包括真实的URL地址。
2. 使用get_headers()函数:get_headers()函数可以获取HTTP响应的头部信息。我们可以使用这个函数来获取链接的真实地址。
“`php
$url = ‘http://example.com’;
$headers = get_headers($url, 1);
$realUrl = $headers[‘Location’];
echo $realUrl;
“`在上面的代码中,我们通过调用get_headers()函数获取链接的响应头部信息,并将其保存到$headers变量中。然后我们可以通过$headers变量获取真实的URL地址,它位于Location键下。
3. 使用file_get_contents()函数:file_get_contents()是一个用来读取文件内容的函数,但是它也可以用来获取URL的内容。我们可以通过file_get_contents()函数获取链接的真实地址。
“`php
$url = ‘http://example.com’;
$content = file_get_contents($url);
$realUrl = $http_response_header[0];
echo $realUrl;
“`在上面的代码中,我们使用file_get_contents()函数获取URL的内容,并将其保存到$content变量中。然后我们可以通过$http_response_header变量获取真实的URL地址,它位于数组的第一个元素。
注意:这些方法都可以获取链接的真实地址,但是要注意有些链接可能会有多个重定向,所以需要根据实际情况做出相应的调整。
2年前