PHP CURL 模拟登陆 获取 cookie

<?php 
header("Content-Type:text/html;charset=utf-8");
$curl = curl_init();
$cookie_jar = tempnam('./cookie.txt','cookie'); //tempnam--建立一个具有唯一文件名的文件
curl_setopt($curl, CURLOPT_URL,'http://pweb.me/login');//这里写上处理登录的界面
curl_setopt($curl, CURLOPT_POST, 1); //post提交数据
$request = 'username=***&password=***';
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);//传递数据
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);//把返回来的cookie信息保存在$cookie_jar文件中
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设定返回的数据是否自动显示
curl_setopt($curl, CURLOPT_HEADER, false);//设定是否显示头信息
curl_setopt($curl, CURLOPT_NOBODY, false);//设定是否输出页面内容
curl_exec($curl);//返回结果
curl_close($curl); //关闭*/
?>

执行程序可把登录获取的cookie信息保存到文件中 以下是运用cookie文件的例子:

<?php 
header("Content-Type:text/html;charset=utf-8");
$cookie_jar = dirname(__FILE__)."/cookie.txt"; //保存的cookie信息文件路径
$url="http://pweb.me/user";
$arr=curl_get($url,$cookie_jar);
var_dump($arr);

/**
 *curl post请求
 */
function curl_post($url,$data,$cookie_jar){
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);                
    curl_setopt ( $ch, CURLOPT_POST, 1 );
    curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
    $return = curl_exec ( $ch );
    curl_close ( $ch );
}

/**
 *curl get请求
 */
function curl_get($url,$cookie_jar){
    $curl2 = curl_init();
    curl_setopt($curl2, CURLOPT_URL, $url);//登陆后要从哪个页面获取信息
    curl_setopt($curl2, CURLOPT_HEADER, false);
    curl_setopt($curl2, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl2, CURLOPT_COOKIEFILE, $cookie_jar);
    $content = curl_exec($curl2);
    $arr=json_decode($content,true);
    curl_close($curl2);
    return $arr;
}

curl参数介绍

CURLOPT_COOKIEJAR 用于保存 cookie 到文件 CURLOPT_COOKIEFILE 用于将保存的 cookie 文件发送出去 CURLOPT_COOKIE 用于发送 cookie 变量 所谓 在会话结束后就过期了 是因为浏览器不保存没有过期设定的 cookie 变量,所以关闭浏览器后再次请求时就没有 cookie 发送出去 curl 处理中,如果是一次做完,只需 CURLOPT_COOKIEJAR 就可以 若要分段处理则先 CURLOPT_COOKIEJAR,后 CURLOPT_COOKIEFILE 发送 cookie 文件内容的段,不要 CURLOPT_COOKIEJAR。以避免新的 cookie 变量的影响

非特殊说明,本博所有文章均为博主原创。

备注:相关侵权、举报、投诉及建议等,请联系站长

添加新评论

昵称
邮箱
网站