黑帽联盟

 找回密码
 会员注册
查看: 1611|回复: 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抓取网页内容

    php抓取网页内容
    您需要登录后才可以回帖 登录 | 会员注册

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