[PHP] CURL获取cookie,模拟登录获取数据

2023-10-30

需求:通过CURL先登录,然后获取登录后的cookie,在请求数据接口的时候带上这个cookie即可!

直接贴代码:

 1 <?php
 2 
 3 class CurlLoginDemo
 4 {
 5     public $config = [
 6         //登录接口和参数
 7         'login_url' => 'http://localhost/login',
 8         'login_post_data' => [
 9             'username' => 'aaa',
10             'password' => 'aaa',
11         ],
12         
13         //数据接口
14         'list_url' => 'http://localhost/list',
15         'list_post_data' => [
16             'page' => 1,
17             'rows' => 30,
18         ],
19      ];
20     public $cookie = '';
21 
22     //登录接口,获取cookie
23     public function login()
24     {
25         $re = $this->post_curl($this->config['login_url'], $this->config['login_post_data'], 1);
26         
27         // 解析HTTP数据流
28         list($header, $body) = explode("\r\n\r\n", $re);
29         // 解析COOKIE
30         preg_match("/set\-cookie:([^\r\n]*)/i", $header, $matches);
31         //请求的时候headers 带上cookie就可以了
32         $cookie = explode(';', $matches[1])[0];
33 
34         $this->cookie = trim($cookie);
35     }
36 
37     //执行登录后的操作
38     public function execute()
39     {
40         $re = $this->post_curl($this->config['list_url'], $this->config['list_post_data']);
41 
42         //$json = json_decode($re, true);
43 
44         var_dump($re);
45     }
46 
47     //发送请求
48     function post_curl($url, $params=[], $isShowHeader=0){
49         $httpInfo = array();
50         $ch = curl_init();
51 
52         curl_setopt( $ch, CURLOPT_HEADER, $isShowHeader);
53         curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
54         curl_setopt( $ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36' );
55         curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 30 );
56         curl_setopt( $ch, CURLOPT_TIMEOUT , 30);
57         curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
58 
59         curl_setopt( $ch , CURLOPT_POST , true );
60         curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query($params));
61         curl_setopt( $ch , CURLOPT_URL , $url );
62 
63         if($this->cookie){
64             curl_setopt($ch, CURLOPT_COOKIE, $this->cookie);//设置cookie
65         }
66 
67         $response = curl_exec( $ch );
68         if ($response === FALSE) {
69           return false;
70         }
71 
72         curl_close( $ch );
73         return $response;
74     }
75 
76     //启动
77     public function start()
78     {
79         try{
80             $this->login();
81             if(!$this->cookie){
82                 throw new \Exception("登录失败!");
83             }
84             $this->execute();
85         }catch(\Exception $e){
86             print($e);
87         }
88     }
89 
90 }
91 
92 $obj = new CurlLoginDemo();
93 $obj->start();

 

转载于:https://www.cnblogs.com/reader/p/11593974.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[PHP] CURL获取cookie,模拟登录获取数据 的相关文章

  • UTF-8、PHP 和 XML Mysql

    我在解决这个问题时遇到了很大的问题 我有一个编码 latin1 swedish ci 的 mysql 数据库和一个存储名称和地址的表 我正在尝试输出 UTF 8 XML 文件 但在使用以下字符串时遇到问题 Otiv gen它被输出为Otiv
  • 抽象 PHP 类中的返回类型“self”

    尝试创建一个抽象类来部分实现其子类的功能并强制执行此实现所需的契约 我使用以下构造 abstract class Parent public static function fromDB string name instance new s
  • symfony 2.0足够稳定可以使用吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我怀疑是否交响乐2 0够稳定可以使用吗 因为我从来没有用过Symfony before 看起来交响乐2比以前的版本好得多 我不想在几个月后重新学
  • 无法通过 REST API 使用 Microsoft Graph API 更新用户配置文件

    我正在尝试在未经用户同意的情况下通过服务器端 Java 应用程序通过 Microsoft Graph API 更新用户配置文件 我在 MS Azure 中有一个应用程序 其中包含以下内容 其他应用程序的权限 Microsoft Graph
  • 使用 Laravel 返回一对多 Eloquent 关系中的最后一条记录

    假设存在一个One To Many关系 其中用户有许多工作 以及最后一条记录job表是用户当前的作业 让用户返回上一份工作的更好方法是什么 这是我尝试过的 User Class public function ejob return thi
  • 如何使用 PHP 向用户发送每日电子邮件通知?

    我有一个简单的用户注册表单 其中有一个复选框 如果用户的任何项目有活动 用户可以每天收到电子邮件通知 就像 Stack Overflow 有一个 通知 电子邮件受保护 cdn cgi l email protection每天都有新的答案 我
  • 根据注册后的时间自动删除Wordpress用户?

    在使用用户访问管理器的基本 WordPress 3 1 设置中 是否可以自动删除 x 天前的用户 我没有找到此功能的插件 人们将如何实施这一举措 我是否能够使用 sql 或 php 查询设置一个 cron 作业 从而每天自动从数据库中删除
  • Laravel 强制 SSL 给出“此网页有重定向循环”

    我正在使用 Laravel 4 1 并且想要在整个站点范围内强制使用 SSL 我的应用程序部署在 Heroku 上 将其添加到任一App before或作为过滤器 if Request secure return Redirect secu
  • PHP 的 Dom Node 查找 href 属性问题

    我正在尝试使用 php domDocument 从某些数据的 url 中提取 href 以下拉动网址的锚点 但我想要网址 events i race 1 trim cols gt item 1 gt nodeValue 如果有帮助的话 这里
  • 如何获取wordpress中文件的本地路径

    由于在wordpress中 上传的文件 图像以3种不同的大小存储 从而占用内存 我有一个代码可以根据给定图像的 URL 来调整图像的大小 调整大小的代码是 img wp get image editor image url if is wp
  • 在 Woocommerce 的单个产品页面中添加产品注释字段

    我要创建定制订单备注 in 单品用户的详细信息页面 这个可以使用 php 来完成 无需插件 我已附上屏幕截图和网站 URL 以供参考 已尝试使用此代码function php它在结账页面上工作 而不是在产品信息页 任何人都可以帮助我实现这一
  • SELECT COUNT() 与 mysql_num_rows();

    我有一个大表 60 数百万条记录 我正在使用 PHP 脚本来浏览该表 PHP 脚本 带分页 加载速度非常快 因为 表引擎是InnoDB因此SELECT COUNT 非常慢并且mysql num rows 不是一个选项 所以我将总行数 我用来
  • 在浏览器中就绪的 DOM 上缺少语言翻译弹出窗口:Laravel 5.2

    我的控制器中有以下代码 public function AllCountries Countries new App DataAccess CountryData gt GetAllCountries app gt setLocale fr
  • 如何在 PHP 的 foreach 循环中获取两个项目? [复制]

    这个问题在这里已经有答案了 我有一个推荐轮播 轮播每次循环浏览两个项目 现在我想每次得到两个项目foreach环形 我怎么才能得到它 Code div div class row div class col md 6 div class s
  • PHP:在执行 php 脚本时显示“正在加载”页面

    这就是我现在所拥有的 我有一个网页 当访问该网页时 它会通过开放 API 连接到 Surveygizmo com 检索大量数据 然后将这些数据返回给我进行处理 此过程大约需要 10 12 秒 在执行时 页面只是处于 正在加载 状态 并且我会
  • SQL 未插入到 Yii 中具有关系的表中

    我正在尝试创建一个用户 但所有值都没有插入到数据库中 Systems user 表与partys 表有关系 因为party id 是sytems user 的主键 没有插入任何内容 甚至没有错误 它只是返回到 创建 页面 这是我的架构 Ta
  • Laravel Eloquent with()-> 返回 null

    我正在尝试使用 Eloquent 来获取具有以下功能的特定产品 brand id映射到a的列brands表 该brand数组返回空 这里有什么明显需要改变的地方吗 product Product with images gt with br
  • 使用 htaccess 文件重定向[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Edit 我想重定向一个网址 to www example com location sydney from www example com rss
  • Drupal 模板/主题资源或建议?

    我有兴趣为我正在开发的 Drupal 网站创建自定义主题 我是 Drupal 的新手 但是我在处理构建主题 CSS PHP HTML 所需的基本概念方面拥有相当多的经验 所以 我的问题是 我从哪里开始 有创建 Drupal 主题的规范指南吗
  • SplFileObject + LimitIterator + 偏移量

    我有两行数据文件 两行仅用于我的示例 实际上 该文件可以包含数百万行 并且我使用 SplFileObject 和 LimitIterator 进行偏移 但这种组合在某些情况下会有奇怪的行为 offset 0 file new SplFile

随机推荐

  • 预编码技术

    预编码的基本原理 TD LTE下行传输采用了MIMO OFDM的物理层构架 通过最多4个发射天线并行传输多个 最多4个 数据流 能够有效地提高峰值传输速率 LTE的物理层处理过程中 预编码是其核心功能模块 物理下行共享信道的几种主要传输模式
  • The ‘import.meta‘ meta-property is only allowed when the ‘--module‘ option is ‘esnext‘ or ‘system‘

    问题描述 使用vite的import meta const allImage import meta glob assets images console log allImage 报提示 需要配置 module option为exnext
  • 根据fabric官方文档,自己整理hello world的过程中出现的bug

    在对fabric的官方文档下的 fabric samples中的test network项目中的network sh的分析 进行到创建通道时候又出现了之前出现的bug Error got unexpected status BAD REQU
  • mysql查询练习(二)

    11 查询每门课的平均成绩 查询3 105课程的平均分 mysql gt select avg degree from score where cno 3 105 avg degree 81 7500 1 row in set 0 00 s
  • 零拷贝( Zero-copy )

    一 背景 零拷贝 描述了计算机操作 其中CPU 不执行将数据从 一个存储区 复制到 另一个存储区 的任务 通过网络传输文件时 通常用于节省CPU周期和内存带宽 在传统的 Linux 操作系统的标准 I O 接口是基于数据拷贝操作的 即 I
  • C++基本语句(一)

    学习C 的第二天 一 C 的基本语句 1 1声明语句和变量 P21 P22 声明语句和变量 各自的作用是什么 为什么变量必须要声明 以及下面这段代码提供了哪两项信息 定义一个整型变量 int carrots 定义一个整型变量 int car
  • 尤里的复仇Ⅰ 小芳!

    尤里的复仇 小芳 作者 admin 时间 2021 06 15 分类 封神台 第一章 为了女神小芳 找到get参数id 使用 1 1 or 1 1 1 or 1 2 测试 发现存在sql注入 最终payload为 id 1 and 1 2
  • XMind中的 “甘特图”视图

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 甘特图 视图 当所有任务信息添加完成后 点击 任务信息 视图底部的 显示甘特图 按钮 XMind将弹出 甘特图 视图 所有任务信息将不同属性的线条展现 如果此时切换画布或者
  • math模块

    math 模块是Python中的标准模块 并且始终可用 要在此模块下使用数学函数 您必须使用导入模块import math 它提供对基础C库函数的访问 导入数学函数库 import math 查看 math 查看包中的内容 print di
  • C99与C89主要区别

    http www cnblogs com xiaoyoucai p 6146784 html
  • P4162 [SCOI2009]最长距离

    题目链接 这道题数据范围比较小 所以方法还是比较暴力的 思路 先按每个格子的状态 让所有格子与他周围的格子连一条权值为它连向那个格子的值 0或1 然后我们n方枚举所有格子跑最短路 最短路即为从起点到终点的最小障碍数 然后我们枚举所有最短路
  • Spring的两种定时器

    1 spring学习系列 定时器一TimerTask spring定时器一般有两种 TimerTask Quartz 本节只讲TimerTask 需要的包 aopalliance 1 0 jar commons logging 1 1 1
  • 使用html2Canvas跟jspdf将一部分页面生成PDF

    刚好碰到这么一个需求 前端需要将后端返回的json对象数据生成表单样式的pdf文件 首次接触所以简单记录一下 经过反复查找大致流程为 现在页面画一个表单 gt 拿到数据将数据放表单中 gt 给表单最外层加个ref利用html2Canvas生
  • Linux:NTP服务离线安装及配置

    0 常用命令 rpm qa grep ntp 查询已安装的ntp版本信息等 service ntpd status 查询ntp服务状态 service ntpd start 启动 service ntpd stop 停止 service n
  • hack the box - tier0

    Tier0 Meow Recommended Academy Modules INTRO TO ACADEMY STARTING POINT Tier 0 Machines Tags Enumeration Telnet External
  • 嵌入式linux解决方法

    一 问题描述 u boot version 2016 03 ubuntu version 18 04 ubuntu中环境配置正确 通过其他客户端能够挂载上 但是使用uboot得nfs下载命令会报错 gt nfs 80800000 192 1
  • CSS中表格以及表单的属性以及运用

    一 表格 按照一定的顺序摆放数据 表格是由一些单元格组成 1属性 border边框 cellspacing 单元格与单元格之间的距离 cell padding 单元格 边框和内容之间的距离 align 表格水平的位置 tr行 align 调
  • 并发编程NO.2

    并发编程 共享模型之管程 4 1共享资源问题 临界区 一个程序运行多个线程本身是没问题的 问题出在多个线程访问共享资源 多个线程读共享资源没有问题 但是多线程对共享资源进行读写操作 就会有问题 一段代码内如果存在对共享资源的多线程读写操作
  • leetcode 2. 两数相加

    2023 9 14 这道题还是有点难度 需要维护一个进位值 构造一个虚拟头节点dummy 用于结果的返回 还要构造一个当前节点cur 用于遍历修改新链表 整体思路就是长度短的链表需要补0 然后两链表从头开始遍历相加 要考虑进位 需要注意的点
  • [PHP] CURL获取cookie,模拟登录获取数据

    需求 通过CURL先登录 然后获取登录后的cookie 在请求数据接口的时候带上这个cookie即可 直接贴代码 1