本程序提供了一个需要权限才能访问的地址:http://gf.kaixin.com/home.do,而登陆接口是:http://login.kaixin.com/Login.do,通过post传递参数,达到访问需要权限才能访问的功能,模拟了浏览器Netscape的标准头,程序代码如下:
<?php
Error_reporting(E_ALL);
function vlogin($url,$request)
{
$cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
$ch = curl_init(); //初始化curl模块
curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//要提交的内容
//把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设定是否显示头信息
curl_setopt($ch, CURLOPT_HEADER, false);
//设定是否输出页面内容
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_exec ($ch);
curl_close($ch); //get data after login
return $cookie_jar;
}
//登录成功后通过cookies获取页面内容
function get_content_by_cookie($url,$cookie_jar)
{
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$orders=curl_exec($ch2);
curl_close($ch2);
return $orders;
}
function clear_cookie($cookie_tmp_name)
{
@unlink($cookie_tmp_name);
}
//使用的例子
//$list_url='要抓取的帖子地址';
$list_url='http://gf.kaixin.com/home.do';//教父的主键
//$login_url='登录地址';
$login_url='http://login.kaixin.com/Login.do';
$post_data='email=xdy108@126.com&login_type=1000&origURL=http://www.kaixin.com/SysHome.do&password=001002';
$cookie_file=vlogin($login_url,$post_data); //模拟登陆
var_dump($cookie_file);
$tmp_curl=get_content_by_cookie($list_url,$cookie_file);//这里获得帖子内容
var_dump($tmp_curl);
clear_cookie($cookie_file);//删除cookies临时文件
?>
Error_reporting(E_ALL);
function vlogin($url,$request)
{
$cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
$ch = curl_init(); //初始化curl模块
curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//要提交的内容
//把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设定是否显示头信息
curl_setopt($ch, CURLOPT_HEADER, false);
//设定是否输出页面内容
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_exec ($ch);
curl_close($ch); //get data after login
return $cookie_jar;
}
//登录成功后通过cookies获取页面内容
function get_content_by_cookie($url,$cookie_jar)
{
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$orders=curl_exec($ch2);
curl_close($ch2);
return $orders;
}
function clear_cookie($cookie_tmp_name)
{
@unlink($cookie_tmp_name);
}
//使用的例子
//$list_url='要抓取的帖子地址';
$list_url='http://gf.kaixin.com/home.do';//教父的主键
//$login_url='登录地址';
$login_url='http://login.kaixin.com/Login.do';
$post_data='email=xdy108@126.com&login_type=1000&origURL=http://www.kaixin.com/SysHome.do&password=001002';
$cookie_file=vlogin($login_url,$post_data); //模拟登陆
var_dump($cookie_file);
$tmp_curl=get_content_by_cookie($list_url,$cookie_file);//这里获得帖子内容
var_dump($tmp_curl);
clear_cookie($cookie_file);//删除cookies临时文件
?>
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1383/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2008-11-28 18:32
评论列表