方法1:
$url = 'http://www.baidu.com/link?url=77I2GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil-rckpQ8_kjGKNNq';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_NOBODY, 1);// 不需要页面内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 不直接输出
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// 返回最后的Location
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');//有时需要这个功能
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
curl_setopt($ch, CURLOPT_TIMEOUT, 20);//20秒超时
curl_setopt($ch, CURLOPT_MAXREDIRS, 3);//限定只能抓取跳转3次以内的网址
curl_exec($ch);
$info = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
curl_close($ch);
echo $info;
方法2:
$ch= curl_init("http://www.baidu.com");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
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_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
curl_setopt($ch, CURLOPT_TIMEOUT, 20);//20秒超时
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');//有时需要这个功能
curl_exec($ch);
$aaa = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
echo $aaa;

本文介绍两种使用PHP获取HTTP 302跳转后的真实URL的方法。第一种方法通过设置cURL选项,如CURLOPT_NOBODY和CURLOPT_RETURNTRANSFER,来获取最终的Location。第二种方法则通过设置CURLOPT_HEADER和CURLOPT_AUTOREFERER等选项,进一步完善了请求头信息,以更精确地跟踪重定向。

2919

被折叠的 条评论
为什么被折叠?



