12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
今天我们来聊一聊php中的一个非常实用的curl选项——CURLOPT_AUTOREFERER(自动跳转),作为一个经验丰富的程序员,相信大家都知道curl是一个非常好用的网络请求库,而CURLOPT_AUTORE
以下为本文的正文内容,请查阅,本站为公益性网站,复制本文以及下载DOC文档全部免费。
今天我们来聊一聊php中的一个非常实用的curl选项——CURLOPT_AUTOREFERER(自动跳转),作为一个经验丰富的程序员,相信大家都知道curl是一个非常好用的网络请求库,而CURLOPT_AUTOREFERER在curl中的应用更是为我们的开发带来了很大的便利,本文将带你深入了解这个选项。
首先,让我们来看一个具体的例子。假设我们要在我们的php项目中爬取一些网页内容,比如我们想获取百度的首页html内容,curl代码可能会写成这样:
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$result = curl_exec($ch);curl_close($ch);echo $result;
上述代码将获取百度的首页内容,并输出结果。但是,假设百度的首页经过了重定向,比如将http重定向到https,那么上述代码将无法成功获取到页面内容。
这时,我们可以使用CURLOPT_AUTOREFERER来让curl自动处理重定向问题。CURLOPT_AUTOREFERER的意思是:当curl请求的页面重定向到另一个页面时,curl会自动发送请求到新的页面,而不是原始的请求。
下面是加入CURLOPT_AUTOREFERER选项后的curl代码:
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_AUTOREFERER, true);$result = curl_exec($ch);curl_close($ch);echo $result;
通过设置CURLOPT_AUTOREFERER为true,curl将自动处理重定向问题,保证可以成功获取百度首页的html内容。
除了上述例子中的http重定向到https,CURLOPT_AUTOREFERER也可以自动处理其他的重定向,比如页面重定向到另一个页面、页面重定向到下载资源等。
不过需要注意的是,CURLOPT_AUTOREFERER只会处理http的重定向,对于其他协议如https等将无效。
有时候,我们也需要手动处理重定向问题,比如为了优化程序以及减少客户端重定向时间,我们可能会使用curl的CURLOPT_FOLLOWLOCATION选项来禁止自动跳转。此时,可以手动处理重定向:
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "http://www.example.com/redirect");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);$result = curl_exec($ch);if(curl_getinfo($ch,CURLINFO_HTTP_CODE) == 301 || curl_getinfo($ch,CURLINFO_HTTP_CODE) == 302) {$redirectUrl = curl_getinfo($ch,CURLINFO_REDIRECT_URL);curl_setopt($ch, CURLOPT_URL, $redirectUrl);$result = curl_exec($ch);}curl_close($ch);echo $result;
上述代码中,我们使用curl_getinfo函数判断响应码是否为301或302,如果是,则手动获取重定向目标url,再次发起请求获取重定向后的内容。这种方式可以增加程序的灵活性。
总之,CURLOPT_AUTOREFERER是一个非常实用的curl选项,可以自动处理http的重定向问题。同时,我们也需要根据业务需求灵活运用curl的其他选项和手动处理重定向的方式,以达到更好的效果。
11-20
11-20
11-19
11-20
11-19
11-20
11-20
11-20
11-20
11-19
11-19
11-19
11-19
11-19
11-19
11-19