php 模拟post带cookie,php利用curl模拟post登录,传递cookie获取数据
一般我们会用curl抓取其他网站的数据,不过一些网站会设置成登录后才可以获取数据,这样一来我们就需要利用curl模拟登录保存cookie,并且传递cookie伪装和网站建立通信,获取到数据。
curl模拟post登录
/**
* 模拟post登录
* @param string $url 登录地址
* @param string $post 登录参数
* @param string $cookie cookie文件地址
* @return mixed
*/
function curl_login($url, $post, $cookie){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($post)]
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //提交方式为post,数据为json格式的。
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
$b = curl_exec($ch);
curl_close($ch);
return $b;
}
调用示例:
$cookie = '/login_cookie.txt';
//模拟登录
curl_login("http://xxx.com/api/login", json_encode(['account' => 'xxx', 'password' => 'xxx']) ,$cookie);
获取cookie
/**
* 获取cookie
* @param string $url 登录地址
* @param string $cookie cookie文件地址
* @return mixed
*/
function curl_cookie($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
$a = curl_exec($ch);
curl_close($ch);
return $a;
}
调用示例:
$cookie = '/login_cookie.txt';
//生成口令
curl_cookie("http://xxx.com/api/login", $cookie);
模拟get获取数据
/**
* 模拟get获取数据
* @param $url
* @param $cookie
* @return mixed
*/
function curl_get($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出
curl_setopt($ch, CURLOPT_REFERER, 'http://xxx.com/static/index.html');//来路模拟
//curl_setopt($ch, CURLOPT_HOST, '');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
调用示例:
$cookie = '/login_cookie.txt';
//获取礼包
$content = json_decode(curl_get("http://xxx.com/api/customermobile?customerMobile=".$mobile, $cookie), true);
模拟post获取数据
/**
模拟post获取数据
@param $url
@param $post
@param $cookie
@return mixed
*/
function curl_post($url, $post, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($post)]);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //提交方式为post
curl_setopt($ch, CURLOPT_REFERER, 'http://xxx.com/static/index.html');//来路模拟
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
调用示例:
$cookie = '/login_cookie.txt';
//获取数据
$ressult = curl_post("http://xxx.com/api/exchangecode/verifycode", json_encode($post), $cookie);
php 模拟post带cookie,php利用curl模拟post登录,传递cookie获取数据相关推荐
- java cookie p3p_利用P3P实现单点登录和COOKIE的跨域读写
首先说明,同一个顶级域名的情况我不说什么,很简单,就一个Cookie的Domain属性. 下面来说顶级域名不同的情况. 有时候我们会有这么一种需求:当我们登录A网站www.a.com时,同时也要能登录 ...
- php curl加密获取数据,PHP利用Curl模拟登录并获取数据例子
几乎所有的程序员来模仿用户登录或抓取数据都会使用到curl函数,下面我来给各位介绍利用curl函数实现登录并抓取数据,希望下面例子对各位有帮助. PHP的curl()在抓取网页的效率方面是比较高的,而 ...
- qq好友列表获取,利用curl 模拟获取qq好友列表获取接口
qq好友列表获取,利用curl 模拟获取qq好友列表获取接口 代码如下: //模拟浏览器查找好友列表$url = "http://cgi.find.qq.com/qqfind/buddy/s ...
- php模拟post提交json数据,如何在PHP中利用curl模拟post提交json数据
如何在PHP中利用curl模拟post提交json数据 发布时间:2021-02-05 16:30:19 来源:亿速云 阅读:63 作者:Leah 本篇文章为大家展示了如何在PHP中利用curl模拟p ...
- PHP 利用curl 模拟get post 请求
有的时候想爬取点数据,但是网站做了防护,用file_get_contents的话,就会提示无法读取.所以得想点其他方法了,所以就想到了利用php 的curl 模拟post或者get请求 首先是模拟ge ...
- php多线程模拟请求,浅谈php使用curl模拟多线程发送请求
每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_e ...
- mysql 注入 update_利用insert,update和delete注入获取数据_MySQL
0x00 简介 利用SQL注入获取数据库数据,利用的方法可以大致分为联合查询.报错.布尔盲注以及延时注入,通常这些方法都是基于select查询语句中的SQL注射点来实现的.那么,当我们发现了一个基于i ...
- PHP curl 模拟登录并获取数据
cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...
- php 模拟登陆爬取_PHP模拟登录并获取数据
PHP模拟登录并获取数据 cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手 ...
最新文章
- JQuery(选择器)
- can‘t convert cuda:0 device type tensor to numpy
- 网络编程(发送get和post请求到服务器端,并获取响应)
- Kubernetes的安全性怎么解?从4个方面为你列出方案清单
- 7.Working with External Libraries
- Silverlight中全屏处理
- C--数据结构--树的学习
- 信息学奥赛一本通 1147:最高分数的学生姓名 | OpenJudge NOI 1.9 02:输出最高分数的学生姓名
- java集合讲解_Java集合详解
- 量子计算机电商,量子产品系虚假宣传 为何仍能在电商平台销售?
- 使用计算机对炼钢过程进行实时监控,转炉炉气分析与“投弹”检测相结合在自动化炼钢技术中的应用...
- 教你一招解决#65279导致页面莫名其妙空行
- android 版本更新下载进度框,Android版本更新(Service下载 Notification进度条)
- PHP在线测算带支付运营版,【PHP】最新在线自动发卡平台源码,带多个支付接口及商户平台...
- ESP32(NodeMCU-32S)简单实现路由中继/wifi中继
- Android特效专辑(十)——点击水波纹效果实现,逻辑清晰实现简单
- EXCEL转PDF后如何居中
- 计算机其它离的360云盘,win7系统将360云盘文件快速转移到百度云盘的方法
- 【原创】微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析
- WINRAR的破解方法
热门文章
- 【linux】centos包管理
- 基于arduinosim808onenet的老年人健康守护系统(二)
- WebAR小程序开发
- 项目 http 升级到 https 全程总结
- 外企高管合唱“骊歌” SUN、AMD相继人事震荡外企高管合唱“骊歌” SUN、AMD相继人事震荡...
- 关注程序员健康之——用脑过度多吃松子 ++——白天打个盹提高记忆力
- Arch Linux 超越 Ubuntu 成功登顶
- 业界 | 机器学习+ICU:为重症患者提供实时护理
- xf-admin 项目简述
- ORA-01031的解决方法