资讯专栏INFORMATION COLUMN

怎么通过$a获取到$b?某豹面试题

Flands / 3170人阅读

摘要:原题,跳转到怎么通过获取到请用实现看一分钟之后,直觉告诉实现我不会。只知道,通过可以知道后来百度,问好朋友。真实意图这道题的意思应该是重定向后怎么获取真实地址。实际做的就是在百度或者微博服务器上一个临时重定向。

原题:

$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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22224.html

相关文章

  • 2019前端面试(持续更新)

    摘要:是什么是异步编程的一种解决方案所谓,简单说就是一个容器,里面保存着某个未来才会结束的事件通常是一个异步操作的结果。 最近也在准备换工作了,然后收集了一些我觉得今年面试会遇到常见的问题。 如果有机会,记得也帮忙分享我一下。2019的行情确实很糟糕。看到这么多人收藏点赞。我的内心也是哇凉哇凉的。我也给一些除了面试题之外的经验吧 我相信不景气也是相对的,提升自我也是必要的。我说说我最近在准...

    woshicixide 评论0 收藏0
  • 2019前端面试(持续更新)

    摘要:是什么是异步编程的一种解决方案所谓,简单说就是一个容器,里面保存着某个未来才会结束的事件通常是一个异步操作的结果。 最近也在准备换工作了,然后收集了一些我觉得今年面试会遇到常见的问题。 如果有机会,记得也帮忙分享我一下。2019的行情确实很糟糕。看到这么多人收藏点赞。我的内心也是哇凉哇凉的。我也给一些除了面试题之外的经验吧 我相信不景气也是相对的,提升自我也是必要的。我说说我最近在准...

    worldligang 评论0 收藏0
  • 2019前端面试(持续更新)

    摘要:是什么是异步编程的一种解决方案所谓,简单说就是一个容器,里面保存着某个未来才会结束的事件通常是一个异步操作的结果。 最近也在准备换工作了,然后收集了一些我觉得今年面试会遇到常见的问题。 如果有机会,记得也帮忙分享我一下。2019的行情确实很糟糕。看到这么多人收藏点赞。我的内心也是哇凉哇凉的。我也给一些除了面试题之外的经验吧 我相信不景气也是相对的,提升自我也是必要的。我说说我最近在准...

    K_B_Z 评论0 收藏0
  • 一道简单的面试引发的思考

    摘要:另一个问题,就是我下面要提及的作用域问题,我当时思考的时间太久了这是回忆中的面试题实际略有差异,不纠结了说一下脚本的运行结果引用错误中给出的错误提示。 版权声明:此文首发于我的简书账号人生还有多少个二十年,转载请注明出处。 此处有几百字唠叨:   当天,我早早起床,跨越上百公里,高德导航,路人指点,跌跌撞撞到达招聘会现场,当时已是中午十二点半,吃了午餐(半瓶白开水),开始准备投递...

    wpw 评论0 收藏0

发表评论

0条评论

Flands

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<