1. CMS首页
  2. 技术杂文

PHP取301/302跳转后的地址源码协议头中的location等

  效率至尊,先上代码!

//$url = "https://www.houbuluo.com/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//若给定url自动跳转到新的url,有了下面参数可自动获取新url内容:302跳转
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//设置cURL允许执行的最长秒数。
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36");
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_ENCODING, "gzip, deflate");
$content = curl_exec($ch);
//获取请求返回码,请求成功返回200
$code = curl_getinfo($ch,CURLINFO_HTTP_CODE);
//echo $code . "

";

//获取一个cURL连接资源句柄的信息。
//$headers 中包含跳转的url路径
$headers = curl_getinfo($ch);
//var_dump($headers[url]);
$url= $headers["url"];//302后的url地址,如果要获取302后的源码自行file_get_contents这个地址即可<br>


  今天猴猴有个业务场景需要取302跳转后的地址,而地址在协议头header的location中,小编尝试了curl POST测试,file_get_contents函数测试,JS POST测试,网上分享的socket方法(小编并不了解),甚至拿起了python的request测试(虽然python能直接获取302后的源码,但是介于还要在原本的php环境中配置python项目,就没采用),小编测试了网站各作者分享的几十种POST,GET方法,都不能将302后的代码或者URL地址取出,后来如上正确方法终于现身了,小编所做的场景才得以实现,小编找不到原来的作者了,在此感谢前辈!

发表评论

用户名: