我用php的curl函数模拟登陆,不是为了登录<span style=""line-height:1.5;font-size:10pt;"">后抓取其他页面,是想模拟登陆获取到cookie,然后就直接用获取到的cookie保持登录状态,代码如下:
<?php
function login($url, $cookie, $post) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);
curl_close($curl);
}
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch);
curl_close($ch);
return $rs;
}
//设置post的数据
$post = array (
'email' => 'xxx@qq.com',
'pwd' => 'xxxxx',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
$url = "http://m.oschina.net/action/user/login";
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
$url2 = "http://m.oschina.net/my";
login($url, $cookie, $post);
$content = get_content($url2, $cookie);
//删除cookie文件
//@ unlink($cookie);
echo $content;
?>
程序执行能够成功,也能够用获取到的cookie去访问其他页面,可是进入到登录页面还是需要用户自己登录,(是因为cookie没有放在指定文件夹下吗,如果放在指定文件夹下面命名的话是不是也有要求,然后该网站才能知道是自己的cookie
先判断cookie.txt是否存在, 是否有内容, 更新时间.
假如有不符合的, 就用curl登录一次, 然后再判断cokie.txt
后面就可以直接用curl访问其它页了. 、 只能通过curl访问才有效.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。