在开发过程中,碰到了需要校验用户回填的短链接是不是系统所需要的,于是就需要还原找出短链接所对应的长链接。
- 长链接转短链接
在百度上搜索程序员,跳转页面后的url就是一个长链接。当然你可以从任何地方复制一个长链接过来。
长链接
https://www.baidu.com/s?wd=%E7%A8%8B%E5%BA%8F%E5%91%98&rsv_spt=1&rsv_iqid=0xed2c9c7a0033dc5d&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ib&rsv_sug2=0&rsv_btype=i&inputT=11080&rsv_sug4=11080
使用工具把长链接转成一个短链接
https://t.hk.uy/b87R
- 短链接还原长链接
/*** 短链还原成长链* @param $shortUrl* @return mixed|string*/
function restoreUrl($shortUrl)
{$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $shortUrl);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla / 5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko / 20100101 Firefox / 70.0');curl_setopt($curl, CURLOPT_HEADER, true);curl_setopt($curl, CURLOPT_NOBODY, false);curl_setopt($curl, CURLOPT_TIMEOUT, 15);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);curl_setopt($curl, CURLOPT_ENCODING, 'gzip');$data = curl_exec($curl);$curlInfo = curl_getinfo($curl);curl_close($curl);print_r($curlInfo);exit;if ($curlInfo['http_code'] == 301 || $curlInfo['http_code'] == 302) {return $curlInfo['redirect_url'];}return '';
}$url = 'https://t.hk.uy/b87R';
echo restoreUrl($url);
可以看到,使用 curl_getinfo 方法获取到的数据中,有一个 redirect_url 字段,就是原始长链接