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 变量的影响
添加新评论