curl模拟用户登录获取数据
curl模拟用户登录获取数据
curl功能强大,长用与爬取某个链接的内容,简单易用,记录下模拟用户登录的相关操作。
NO1:找个功能简单的登录后台测试,淘宝啥的就算了
NO2:使用账号,密码登录,F12进入浏览器调试模式,找到你要使用到的数据,主要是用户名,密码字段,有些可能还要传其它参数,自己看
NO3:将需要传入的字段组合为数组参数,设置下curl显示获取内容头部,用于获取登录所用cookie;
NO4:POST数据请求登录地址,在头部获取登录后的cookie,cookie的获取可以存入文本,我这里简单截取出来直接使用即可
NO5:成功获取cookie值后,curl其它页面时带入即可获取到相关内容
NO6:给点代码如下
//实现用户的伪登录
if (!function_exists('login')) {
function login($url, $post)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$s = curl_exec($curl);
curl_close($curl);
return $s;
}
}
注意头部的设置可以参考浏览器内的数据,可能不设置也能拿到数据,看登录的站点是否有需求
//传入cookie获取数据
if (!function_exists('ckcurl_request')) {
function ckcurl_request($cook, $url, $data = null)
{
//第一步:创建curl
$ch = curl_init();
$headers = array();
$headers[] = 'Content-type: application/x-www-form-urlencoded';
$headers[] = 'User-Agent: Fiddler';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_COOKIE, $cook);
//第二步:设置curl
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //禁止服务器端校检SSL证书
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);//数据的请求
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
//判断$data数据是否为空
if (!empty($data)) {
//模拟发送POST请求
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //以文档流的形式返回数据
//第三步:执行curl
$output = curl_exec($ch);
//第四步:关闭curl
curl_close($ch);
//把$output当做返回值返回
return $output;
}
}
COOKIE数据的截取自行处理,一般是在头部以‘Set-Cookie: ’开头,取后面一段值即可,END!!!