黑帽联盟

 找回密码
 会员注册
查看: 1903|回复: 0
打印 上一主题 下一主题

[php] PHP模拟登陆抓取网页内容

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    本帖最后由 yun 于 2017-1-16 15:49 编辑

    平时开发中经常会遇到抓取某个页面内容, 但是有时候某些页面需要登陆才能访问, 最常见的就是论坛, 这时候我们需要来使用curl模拟登陆。 大致思路:需要先请求提取 cookies 并保存,然后利用保存下来的这个cookies再次发送请求来获取页面内容,下面我们直接上代码
    1. <?php
    2. /**
    3. * @dingwei PHP读取Curl模拟登陆, 获取cookie, 带cookie进行请求
    4. * @Date: 2017/1/16
    5. * @Time: 15:41
    6. */
    7. //设置cookie保存位置
    8. $cookieFile = dirname(__FILE__).'cookie.curl.tmp';
    9. //第一步:获取cookie
    10. $url = 'http://www.cnblackhat.com';
    11. $data = array(
    12.     'username'  => 'cnblackhat',
    13.     'password'  => 'cnblackhat',
    14. );
    15. //curl初始化
    16. $ch = curl_init();
    17. curl_setopt($ch, CURLOPT_URL, $url);
    18. //设置为post请求
    19. curl_setopt($ch, CURLOPT_POST, true);
    20. //设置附带返回header信息为空
    21. curl_setopt($ch, CURLOPT_HEADER, 0);
    22. //post数据
    23. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    24. //cookie保存文件位置
    25. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
    26. //设置数据返回作为变量储存,而不是直接输出
    27. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    28. //执行请求
    29. $ret = curl_exec($ch);
    30. //关闭连接
    31. curl_close($ch);
    32. //第二步:附带cookie请求需要登陆的页面
    33. $url = 'http://www.cnblackhat.com';
    34. //curl初始化
    35. $ch = curl_init();
    36. curl_setopt($ch, CURLOPT_URL, $url);
    37. //设置为post请求
    38. curl_setopt($ch, CURLOPT_POST, true);
    39. //设置附带返回header信息为空
    40. curl_setopt($ch, CURLOPT_HEADER, 0);
    41. //设置cookie信息文件位置, 注意与第二步中的获取不同,这里是读取
    42. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
    43. //设置数据返回作为变量储存,而不是直接输出
    44. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    45. //执行请求
    46. $ret = curl_exec($ch);
    47. //关闭连接
    48. curl_close($ch);
    49. //打印抓取内容
    50. var_dump($ret);
    复制代码
    这样我们就抓取到了需要登陆才能访问页面的内容, 注意上面的地址只是一个示例,需要换成你想要抓取页面的地址。 这样我们就可以做到很多事情了

    最后把内容保存在一个文件里,这里我命名为:phpcurl.php

    测试:
    php抓取网页内容
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部