原题:

$a=http://aaa.com/a,跳转到$b=http://bbb.com/b.怎么通过$a获取到$b,请用php实现


看一分钟之后,直觉告诉PHP实现我不会。只知道url_a->url_b,b通过$_SERVER['HTTP_REFERER'].可以知道a

后来百度,问好朋友。才知道自己理解的有偏差。

真实意图?

这道题的意思应该是 url重定向后怎么获取真实地址。

比如目前的短链接。提供方有百度,微博都有。实际做的就是在百度或者微博服务器上一个302临时重定向。另外也有基于短链接的营销分析等。

重定向的主要技术实现是生成短链,此处不是重点。

参考解答

下面用PHP解决上面的题目。


方法一

     $url="http://dwz.cn/4Ww6cV";//
        
        /** $url="http://g.cn";//实际会跳转到google.cn,
            在此次贴下部分http头:注意看Status Code 和Location部分
                    Request URL:http://g.cn/
                    Request Method:GET
                    Status Code:301 Moved Permanently (from cache)
                    Remote Address:203.208.39.242:80
                    Response Headers
                    Cache-Control:private, max-age=2592000
                    Content-Length:218
                    Content-Type:text/html; charset=UTF-8
                    Date:Fri, 30 Dec 2016 05:58:51 GMT
                    Expires:Fri, 30 Dec 2016 05:58:51 GMT
                    Location:http://www.google.cn/
                    Server:gws
                    X-Frame-Options:SAMEORIGIN
                    X-XSS-Protection:1; mode=bloc
         **/
                    
                    
        $headers = get_headers($url,true);//加true更友好

        var_dump($headers['Location']);
/**
output=>["Location"]=>
  string(188) "https://www.taobao.com/markets/promotion/niandushengdian2016neiyi?spm=a21bo.50862.201862-1.d1.JGeGgF&pos=1&acm=20140506001.1003.2.1437526&scm=1003.2.20140506001.OTHER_1481324141839_1437526"
**/

方法二

$ch=  curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//看名字就知道,follow location,去掉此选项无效
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_exec($ch);
$info = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
echo $info;
//=>output:https://www.taobao.com/markets/promotion/niandushengdian2016neiyi?spm=a21bo.50862.201862-1.d1.JGeGgF&pos=1&acm=20140506001.1003.2.1437526&scm=1003.2.20140506001.OTHER_1481324141839_1437526

牙小木木
1.5k 声望80 粉丝

iamtb.cn