首页 > 其他分享 >CURL获取数据-支持cookie模拟登录

CURL获取数据-支持cookie模拟登录

时间:2022-12-12 18:33:34浏览次数:48  
标签:ch optionArr array 获取数据 cookie CURL curl setopt

<?php

$url = 'http://abc.com';
$method = 'get';
$optionArr = array();
$optionArr['cookie'] = 'userid=1641281255339_h8wgml1013;';
$result = curlDeal($url, $method, array(), $optionArr);

print_r($result);
die;

/**
* CURL
* @param string $url 网址
* @param string $method GET/POST
* @param array $dataArr 参数
* @param array $optionArr 选项 timeout表示最大执行时间,cookie表示cookie信息
* @return array
*/
function curlDeal($url, $method, $dataArr = array(), $optionArr = array())
{
  $method = strtolower($method);
  //GET方式
  if ('get' == $method) {
    $url = $url . '?' . http_build_query($dataArr);
  }
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  //设置返回信息中是否包含响应信息头,true表示输出信息头,false表示不输出
  curl_setopt($ch, CURLOPT_HEADER, false);
  //设置获取的信息,true表示以文件流的形式返回,false表示直接输出
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  //HTTPS
  if (stripos($url, "https://") !== FALSE) {
    //规避SSL验证
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    //跳过HOST验证
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  }
  //POST方式
  if ('post' == $method) {
    curl_setopt($ch, CURLOPT_POST, true);
    if(is_array($dataArr) && !empty($dataArr)) {
      curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($dataArr));
    }
  }
  //设置cookie
  if (isset($optionArr['cookie']) && $optionArr['cookie']) {
    $headers = array();
    $headers[] = "Cookie: " . $optionArr['cookie'];
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  }
  //设置最长执行时间
  if (isset($optionArr['timeout']) && $optionArr['timeout'] > 0) {
    curl_setopt($ch, CURLOPT_TIMEOUT, $optionArr['timeout']);
  }
  $content = curl_exec($ch);
  //输出请求状态码
  $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  curl_close($ch);
  return array(
    'statusCode' => $statusCode,
    'content' => $content
  );
}

 

标签:ch,optionArr,array,获取数据,cookie,CURL,curl,setopt
From: https://www.cnblogs.com/WebLinuxStudy/p/16976842.html

相关文章

  • Cookie与Session
    目录Cookie与Session1、Django操作cookie简单实现用户登录加入装饰器2、Django操作session设置session获取session过期时间清除sessionCookie与SessionHTTP被设计为”⽆......
  • JSP改造Cookie案例以及Session的快速入门
    JSP改造Cookie案例以及Session的快速入门<%@pageimport="java.util.Date"%><%@pageimport="java.text.SimpleDateFormat"%><%@pageimport="java.net.URLEncode......
  • vue无法获取flask设置的cookie
    最近在使用vue3开发基于flask后端的前后端分离项目时候,设置路由守卫时一直无法获取到登录后的cookie中session值但是在浏览器中却可以看到cookie先上代码router.befor......
  • cookie&session使用方式
    cookie:数据存在客户端(浏览器),长期储存session:数据存在服务器,默认保存30分钟cookie使用方式:  1.创建cookie对象并用response发送Cookiecookie=newCookie("us......
  • Cookie分析以及案例
    Cookie分析以及案例案例:记住上一次访问时间1.需求:1.访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。 2.如果不是第一次访问,则提示:......
  • Cookie共享以及Cookie的特点和作用
    Cookie共享以及Cookie的特点和作用Cookie共享问题:假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中cookie能不能共享?默认情况下cookie不能共......
  • Django之Cookies
    一cookies简述Cookie的由来大家都知道HTTP协议是无状态的。无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请......
  • Cookie存活时间以及Cookie存储中文
    Cookie存活时间以及Cookie存储中文 cookie在浏览器中保存多长时间:1.默认情况下,当浏览器关闭后,Cookie数据被销毁2.持久化存储:setMaxAge(int seconds)......
  • Extjs4 Tree Grid 综合示例(展开、编辑列、获取数据)
      用json数据模拟后端传回来的结果,Extjstree支持两种类型的结构,一种是带children属性的嵌套式的数据,一种是扁平的,每条记录带pid的数据,带pid的添加配置项可以自动解析......
  • 25. cookie
    什么是Cookie概念:Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cooki......