• php中curl类常用方法封装和详解


    php中curl类常用方法封装和详解

    curl对于PHP开发这来说是经常用到的一个类. 在抓取远程文件或是内容的时候就更常用了. 不过原生态的curl类比较复杂, 尤其对于新手来说,很多参数很容易让人头晕,现在好了. 这个类是封装了几个常用的curl函数. 可以实现抓取远程文件,模拟提交数据等功能.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    /*
    * 作者: 雪狐博客
    * 类用途: 实现抓取原创内容
    */
    class CURL 
    {   
    var $cookie_file// 设置Cookie文件保存路径及文件名  
    var $loginurl;//登陆地地址 
    var $actionstr;//登陆参数 
    function __construct() 
      $this->cookie_file=dirname(__FILE__)."/cookie_".md5(basename(__FILE__)).".txt";  
      if(!file_exists($this->cookie_file)) 
       { // 检测Cookie是否存在     
       $str = $this->vget('jroam'); // 获取登录随机值     
       preg_match("/name=\"formhash\" value=\"(.*?)\"/is",$str,$hash); // 提取登录随机值    
       $this->vlogin($this->loginurl,$this->actionstr); // 登录获取Cookie     
      }  
              
    function vlogin($url,$data){ // 模拟登录获取Cookie函数     
      $curl = curl_init(); // 启动一个CURL会话     
      curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址                 
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查     
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在     
      curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器     
      curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转     
      curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer     
      curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求     
      curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包     
      curl_setopt($curl, CURLOPT_COOKIEJAR, $this->cookie_file); // 存放Cookie信息的文件名称     
      curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie_file); // 读取上面所储存的Cookie信息     
      curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环     
      curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容     
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回     
      $tmpInfo = curl_exec($curl); // 执行操作     
      if (curl_errno($curl)) {     
         echo 'Errno'.curl_error($curl);     
      }     
      curl_close($curl); // 关闭CURL会话     
      return $tmpInfo; // 返回数据     
    }     
                
    function vget($url){ // 模拟获取内容函数     
      $curl = curl_init(); // 启动一个CURL会话     
      curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址                 
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查     
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在     
      curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器     
      curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转     
      curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer     
      curl_setopt($curl, CURLOPT_HTTPGET, 1); // 发送一个常规的Post请求     
      curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie_file); // 读取上面所储存的Cookie信息     
      curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环     
      curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容     
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回     
      $tmpInfo = curl_exec($curl); // 执行操作     
      if (curl_errno($curl)) {     
         echo 'Errno'.curl_error($curl);     
      }     
      curl_close($curl); // 关闭CURL会话     
      return $tmpInfo; // 返回数据     
    }     
                
    function vpost($url,$data){ // 模拟提交数据函数     
      $curl = curl_init(); // 启动一个CURL会话     
      curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址                 
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查     
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在     
      curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器     
      curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转     
      curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer     
      curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求     
      curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包     
      curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie_file); // 读取上面所储存的Cookie信息     
      curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环     
      curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容     
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回     
      $tmpInfo = curl_exec($curl); // 执行操作     
      if (curl_errno($curl)) {     
         echo 'Errno'.curl_error($curl);     
      }     
      curl_close($curl); // 关键CURL会话     
      return $tmpInfo; // 返回数据     
    }     
    function delcookie($cookie_file){ // 删除Cookie函数     
      @unlink($cookie_file); // 执行删除     
    }     
    }

    使用方法:

    1
    2
    3
    4
    5
    6
    7
    8
    //应用实例
    $mycurl=new CURL();
    $mycurl->loginurl="http://192.168.0.2/login.php";//登陆地址
    $mycurl->actionstr="user_name=111&uspassword=1234";//参数串;
         
    $url1='http://192.168.0.2/userlist.php";
    $htmlcontent= $mycurl->vget($url1); //输出目标地址源码
    echo $htmlcontent;
  • 相关阅读:
    BZOJ4503 两个串
    【挖坟】HDU3205 Factorization
    webpack打包 The 'mode' option has not been set, webpack will fallback to
    echarts js报错 Cannot read property 'getAttribute' of null
    微信支付 get_brand_wcpay_request fail,Undefined variable: openid
    layui动态设置checbox选中状态
    layui 获取radio单选框选中的值
    js 获取数组最后一个元素
    js生成指定范围内的随机数
    layer重复弹出(layui弹层同时存在多个)的解决方法
  • 原文地址:https://www.cnblogs.com/fx2008/p/2974894.html
Copyright © 2020-2023  润新知