php curl 获取跳转,php使用curl获取跳转后的网址

使用curl获取跳转后网址时,如果直接设置网址能够成功获取到,将网址赋值给变量,在使用变量传给curl就获取不到

$ch= curl_init("http://www.baidu.com");

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_exec($ch);

$aaa = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

echo $aaa;

以上代码能够获取到跳转后的网址;下面的写法就获取不到,获取到的是一个显示错误信息的页面网址;

$url="http://www.baidu.com";

$ch = curl_init($url);

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_exec($ch);

$aaa = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

echo $aaa;

回复内容:

使用curl获取跳转后网址时,如果直接设置网址能够成功获取到,将网址赋值给变量,在使用变量传给curl就获取不到

$ch= curl_init("http://www.baidu.com");

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_exec($ch);

$aaa = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

echo $aaa;

以上代码能够获取到跳转后的网址;下面的写法就获取不到,获取到的是一个显示错误信息的页面网址;

$url="http://www.baidu.com";

$ch = curl_init($url);

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_exec($ch);

$aaa = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

echo $aaa;

和这个是否通过变量初始化肯定是没关系的!

我运行你两段代码得到的结果是一样的,可能是特定版本的PHP或者libcurl中的问题,你可以抓包看看实际发了什么请求出去,服务器返回什么。

你在测试的时候,是放在一起测试的吧,记得close上一个,版本也不会有这个问题的(至少我没遇到过)

感谢各位的回答,由于我描述的不清晰,使大家没有发现问题出现的原因。晚上看了一会,找到了原因。我是通过手机百度搜索关键词,然后抓取搜索结果页面中特定的网址,由于我是在抓取成功后把网址打印到页面上,所以看不出网址有什么问题,当我查看页面源码的时候发现链接中的&字符被替换成了&,我将&替换成&后就正常了,能够得到想要的结果。

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值