PHP 模拟登录

学习笔记 马富天 2016-10-02 10:49:56 86 3

【摘要】cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息。本文以模拟登录开源中国手机端(oschina)为例,和大家分享cURL的使用。

PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下curl扩展。

本文所有源代码(直接复制粘贴,并修改登录密码即可):

  1. //	模拟登录 
  2. function login_post($url, $cookie, $post) 
  3. { 
  4.     $curl = curl_init();//	初始化curl模块 
  5.     curl_setopt($curl, CURLOPT_URL, $url);//	登录提交的地址 
  6.     curl_setopt($curl, CURLOPT_HEADER, 0);//	是否显示头信息 
  7.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//	是否自动显示返回的信息 
  8.     curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //	设置Cookie信息保存在指定的文件中 
  9.     curl_setopt($curl, CURLOPT_POST, 1);//	post方式提交 
  10.     curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//	要提交的信息 
  11.     curl_exec($curl);//	执行cURL 
  12.     curl_close($curl);//	关闭cURL资源,并且释放系统资源 
  13. } 
  14. //	登录成功后获取数据 
  15. function get_content($url, $cookie) 
  16. { 
  17.     $ch = curl_init(); 
  18.     curl_setopt($ch, CURLOPT_URL, $url); 
  19.     curl_setopt($ch, CURLOPT_HEADER, 0); 
  20.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  21.     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //	读取cookie 
  22.     $rs = curl_exec($ch); //	执行cURL抓取页面内容 
  23.     curl_close($ch); 
  24.     return $rs; 
  25. } 	
  26. //	设置post的数据 
  27. $post = array ( 
  28.     'email' => 'mafutian@126.com', 
  29.     'pwd' => '****', 
  30.     'goto_page' => '/my', 
  31.     'error_page' => '/login', 
  32.     'save_login' => '1', 
  33.     'submit' => '现在登录' 
  34. ); 
  35.  
  36. //	登录地址 
  37. $url = "http://m.oschina.net/action/user/login"; 
  38. //	设置cookie保存路径 
  39. $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; 
  40. //	模拟登录 
  41. login_post($url, $cookie, $post); 
  42. //	登录后要获取信息的地址
  43. $url2 = "http://m.oschina.net/my";
  44. //	获取登录页的信息 
  45. $content = get_content($url2, $cookie); 
  46. //	删除cookie文件 
  47. @unlink($cookie); 
  48. //	匹配页面信息 
  49. echo $content;

执行结果:

请输入图片名称请输入图片名称

函数 login_post() 首先初始化 curl_init() ,然后使用 curl_setopt() 设置相关选项信息,包括要提交的 url 地址,保存的 cookie 文件, post 的数据(用户名和密码等信息),是否返回信息等等,然后 curl_exec 执行 curl ,最后 curl_close() 释放资源。注意PHP自带的 http_build_query()

可以将数组转换成相连接的字符串。

版权归 马富天个人博客 所有

本文标题:《PHP 模拟登录》

本文链接地址:http://www.mafutian.com/216.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 PHP 跨站发送 POST 请求 》 下一篇《 PHP 中 curl_init() 单线程和 curl_multi_init() 多线程抓取页面的速度比较 》

所有评论

  1. 首页
  2. 上一页
  3. 1
  4. 下一页
  5. 尾页
  6. 第1页
  7. 每页12条
  8. 共1页
  9. 共3条
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多