在信息采集的时候,要采集的站点可能需要登录,这样使用简单的采集方式(例如file_get_contents)就无法做到了,我们可以利用PHP的CURL扩展库来进行模拟登录,下面给出代码示例:

  1. <?php
  2. $cookie_path = './'; //设置cookie保存路径
  3. //-----登录要提交的表单数据---------------
  4. $vars['username'] = '张三';
  5. $vars['pwd'] = '123';
  6. //-------------------------------------
  7. $method_post = true;
  8. //登录提交的url地址(表单中的action的绝对地址)
  9. $url = 'http://****.com/login';
  10. //----------------------------
  11. $ch = curl_init();
  12. $params[CURLOPT_URL] = $url; //请求url地址
  13. $params[CURLOPT_HEADER] = true; //是否返回响应头信息
  14. $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
  15. $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
  16. $params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';
  17. $postfields = '';
  18. foreach ($vars as $key => $value){
  19. $postfields .= urlencode($key) . '=' . urlencode($value) . '&';
  20. }
  21. $params[CURLOPT_POST] = true;
  22. $params[CURLOPT_POSTFIELDS] = $postfields;
  23. //判断是否有cookie,有的话直接使用
  24. if (isset($_COOKIE['cookie_jar']) && ($_COOKIE['cookie_jar'] || is_file($_COOKIE['cookie_jar'])))
  25. {
  26. $params[CURLOPT_COOKIEFILE] = $_COOKIE['cookie_jar']; //这里判断cookie
  27. }
  28. else
  29. {
  30. $cookie_jar = tempnam($cookie_path, 'cookie'); //产生一个cookie文件
  31. $params[CURLOPT_COOKIEJAR] = $cookie_jar; //写入cookie信息
  32. setcookie('cookie_jar', $cookie_jar); //保存cookie路径
  33. }
  34. curl_setopt_array($ch, $params); //传入curl参数
  35. $content = curl_exec($ch); //执行
  36. echo '
  37. ';
  38. echo $content; //输出登录结果
  39. /*
  40. *如果输出的结果是Json格式则用下面方法得到所需内容
  41. *$obj = json_decode($content);
  42. *print_r($obj->{'所需内容'}) ;
  43. */
  44. /*
  45. //---------登录成功后再次请求其他地址,如果有多个可以循环执行---------
  46. echo '
  47. ';
  48. $nexturl = 'http://****.com/test';
  49. $params[CURLOPT_URL] = $nexturl;
  50. $params[CURLOPT_POSTFIELDS] = '';
  51. curl_setopt_array($ch, $params); //传入curl参数
  52. $content = curl_exec($ch); //执行
  53. echo $content; //输出请求结果
  54. //-------------------------------------------------
  55. */
  56. curl_close($ch); //关闭连接
  57. ?>

注:如果遇到无法请求https站点的情况,可能是因为无法验证证书或者域名,只要在curl_setopt_array前增加以下两项就可以了:

    1. $params[CURLOPT_SSL_VERIFYPEER] = false;
    2. $params[CURLOPT_SSL_VERIFYHOST] = false;

使用CURL进行模拟登录的更多相关文章

  1. PHP cURL实现模拟登录与采集使用方法详解教程

    来源:http://www.zjmainstay.cn/php-curl 本文将通过案例,整合浏览器工具与PHP程序,教你如何让数据 唾手可得 . 对于做过数据采集的人来说,cURL一定不会陌生.虽然 ...

  2. php中CURL实现模拟登录并采集数据

    在php中采集我们用的是简单的采集方式(例如file_get_contents)就无法做到了,但是如果想模拟登录用户并采集利用它就没办法了,我们可利用CURL函数来实现模拟登录并采集数据 这里要说一些 ...

  3. curl怎么模拟登录进行采集

    前几天公司需要模拟登录,从网上找了一下代码,结合谷歌浏览器,进行模拟账号密码进行登录 用谷歌浏览器进行抓包操作,获得登录用参数, 下面上干货: <?php /** * 主要获取登录成功的cook ...

  4. php使用CURL进行模拟登录采集数据

    <?php $cookie_path = './'; //设置cookie保存路径 //-----登录要提交的表单数据--------------- $vars['username'] = '张 ...

  5. CURL的模拟登录和抓取页面

    <?php $curl = curl_init();// 初始化 // 准备提交的表单数据之账号和密码.(这个是根据表单选项来的) $data = "_username=6049892 ...

  6. 模拟登录神器之PHP基于cURL实现自动模拟登录类

    一.构思 从Firefox浏览器拷贝cURL命令(初始页.提交.提交后) 自动分析curl形成模拟登录代码 默认参数:ssl/302/gzip 二.实现 接口 (一)根据curl信息执行并解析结果 p ...

  7. PHP cURL应用实现模拟登录与采集使用方法详解

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

  8. PHP简单模拟登录功能实例分享

    1.curl实现模拟登录的代码,(只是实现服务器与服务器建立会话,其实并没有在客户端与服务器之间建立会话) <?php $cookie_jar = tempnam('./tmp','cookie ...

  9. PHP cURL 使用cookie 模拟登录

    cURL是什么 cURL: http://php.net/manual/zh/book.curl.php PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务 ...

随机推荐

  1. OAuth2认证和授权:ResourceOwnerPassword认证

    ResourceOwnerPassword在 ClientCredentials认证上新增了用户名和密码 但通过RequestPasswordTokenAsync获取不到refresh_token,不 ...

  2. appium元素获取

    查看安卓手机的界面元素: 1.打开模拟器: 2.启动服务: 在cmd 输入:  adb connect 127.0.0.1:62001  回车 可以输入 adb devices 查看启动状态 3.在a ...

  3. egg.js基础入门

    之前一直使用koa, 刚刚接触egg, 做了一些入门的笔记 准备工作 1  首先安装脚手架,,并创建项目. $ npm i egg-init -g $ egg-init egg-demo --type ...

  4. JavaScript获取及判断文件类型

    一.获取文件后缀 <input type="file" name="addvedio" accept="video/*"/>注: ...

  5. sed command

    https://blog.csdn.net/solaraceboy/article/details/79272344

  6. 用java生成32位全球唯一的id编号

    GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...

  7. Applet程序组件与AJAX技术

    Applet 定义 Applet是一种运行于Web客户端环境下的Java程序组件. 工作原理 Applet以代码的形式嵌入Web页面中,用标签<applet></applet> ...

  8. 正则表达式中test,match,exec区别

    testtest 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1." ...

  9. LATCH_VARIANT = Magna compile

    after: LATCH_VARIANT = Magna in m_project_cfg.mak of PG_.. 1. first error: SED   tmp__.dep/bin/sh: / ...

  10. FIT9132 Introduction to Databases

    FIT9132 Introduction to Databases2019 Semester 1Assignment 1 - Database Design - Monash Hospital (MH ...