曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 17812|回复: 0
打印 上一主题 下一主题

php curl 实例三:使用 CURLOPT_FOLLOWLOCATION 参数跟随重定向页面

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2011-8-25 12:08:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Curl 中有一个 CURLOPT_FOLLOWLOCATION 参数可以用来跟随重定向页面,比如你在访问某个页面时,该页面又重定向到了另外一个页面(比如使用 php 的 header() 参数实现的重定向,或者是 html 里的 refresh 做的重定向),这时可以使用  CURLOPT_FOLLOWLOCATION 参数进行 URL 跟随,最终会来到重定向后的页面。

比如我的论坛实际上也是用了重定向,当你访问 www.groad.net 时,实际上是访问了 www.groad.net/index.html 这个页面,而这个页面除了将你带到 www.groad.net/bbs/index.php 外什么都不做,代码如:
[Plain Text] 纯文本查看 复制代码
<html>
<head>
<meta name="verify-v1" content="Saip2MsYYjGl+/cQmLCqtX5ahZclw2b4s2pPJ/ot/9Q=" />
<meta http-equiv="refresh" content="0;url=http://www.groad.net/bbs/index.php">
<title>Welcome To Groad.Net</title>
</head>
</html>


下面的 php 代码就用 CURLOPT_FOLLOWLOCATION 跟随这个重定向来到论坛首页:
[PHP] 纯文本查看 复制代码
<?php

$fp = curl_init();

curl_setopt($fp, CURLOPT_URL, "http://www.groad.net/index.html");

curl_setopt($fp, CURLOPT_TIMEOUT, 30);

curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);

ob_start();

curl_exec($fp);
$contents = ob_get_contents();

ob_end_clean();

curl_close($ch);

echo $contents

?>

和  CURLOPT_FOLLOWLOCATION 相关的还有两个参数:CURLOPT_MAXREDIRSCURLOPT_AUTOREFERER

CURLOPT_MAXREDIRS : 允许你定义跳转请求的最大次数,当超过了这个数,将不再获取往后的内容。
CURLOPT_AUTOREFERER  :curl 会自动添加 Referer header 在每一个跳转链接,也就是一跟到底。

CURLOPT_FOLLOWLOCATION 选项的一个好处是在一些反盗链的链接中会用到。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-19 10:17 , Processed in 0.086075 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表