一般我们会用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获取数据相关推荐

  1. java cookie p3p_利用P3P实现单点登录和COOKIE的跨域读写

    首先说明,同一个顶级域名的情况我不说什么,很简单,就一个Cookie的Domain属性. 下面来说顶级域名不同的情况. 有时候我们会有这么一种需求:当我们登录A网站www.a.com时,同时也要能登录 ...

  2. php curl加密获取数据,PHP利用Curl模拟登录并获取数据例子

    几乎所有的程序员来模仿用户登录或抓取数据都会使用到curl函数,下面我来给各位介绍利用curl函数实现登录并抓取数据,希望下面例子对各位有帮助. PHP的curl()在抓取网页的效率方面是比较高的,而 ...

  3. qq好友列表获取,利用curl 模拟获取qq好友列表获取接口

    qq好友列表获取,利用curl 模拟获取qq好友列表获取接口 代码如下: //模拟浏览器查找好友列表$url = "http://cgi.find.qq.com/qqfind/buddy/s ...

  4. php模拟post提交json数据,如何在PHP中利用curl模拟post提交json数据

    如何在PHP中利用curl模拟post提交json数据 发布时间:2021-02-05 16:30:19 来源:亿速云 阅读:63 作者:Leah 本篇文章为大家展示了如何在PHP中利用curl模拟p ...

  5. PHP 利用curl 模拟get post 请求

    有的时候想爬取点数据,但是网站做了防护,用file_get_contents的话,就会提示无法读取.所以得想点其他方法了,所以就想到了利用php 的curl 模拟post或者get请求 首先是模拟ge ...

  6. php多线程模拟请求,浅谈php使用curl模拟多线程发送请求

    每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_e ...

  7. mysql 注入 update_利用insert,update和delete注入获取数据_MySQL

    0x00 简介 利用SQL注入获取数据库数据,利用的方法可以大致分为联合查询.报错.布尔盲注以及延时注入,通常这些方法都是基于select查询语句中的SQL注射点来实现的.那么,当我们发现了一个基于i ...

  8. PHP curl 模拟登录并获取数据

    cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...

  9. php 模拟登陆爬取_PHP模拟登录并获取数据

    PHP模拟登录并获取数据 cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手 ...

最新文章

  1. JQuery(选择器)
  2. can‘t convert cuda:0 device type tensor to numpy
  3. 网络编程(发送get和post请求到服务器端,并获取响应)
  4. Kubernetes的安全性怎么解?从4个方面为你列出方案清单
  5. 7.Working with External Libraries
  6. Silverlight中全屏处理
  7. C--数据结构--树的学习
  8. 信息学奥赛一本通 1147:最高分数的学生姓名 | OpenJudge NOI 1.9 02:输出最高分数的学生姓名
  9. java集合讲解_Java集合详解
  10. 量子计算机电商,量子产品系虚假宣传 为何仍能在电商平台销售?
  11. 使用计算机对炼钢过程进行实时监控,转炉炉气分析与“投弹”检测相结合在自动化炼钢技术中的应用...
  12. 教你一招解决#65279导致页面莫名其妙空行
  13. android 版本更新下载进度框,Android版本更新(Service下载 Notification进度条)
  14. PHP在线测算带支付运营版,【PHP】最新在线自动发卡平台源码,带多个支付接口及商户平台...
  15. ESP32(NodeMCU-32S)简单实现路由中继/wifi中继
  16. Android特效专辑(十)——点击水波纹效果实现,逻辑清晰实现简单
  17. EXCEL转PDF后如何居中
  18. 计算机其它离的360云盘,win7系统将360云盘文件快速转移到百度云盘的方法
  19. 【原创】微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析
  20. WINRAR的破解方法

热门文章

  1. 【linux】centos包管理
  2. 基于arduinosim808onenet的老年人健康守护系统(二)
  3. WebAR小程序开发
  4. 项目 http 升级到 https 全程总结
  5. 外企高管合唱“骊歌” SUN、AMD相继人事震荡外企高管合唱“骊歌” SUN、AMD相继人事震荡...
  6. 关注程序员健康之——用脑过度多吃松子 ++——白天打个盹提高记忆力
  7. Arch Linux 超越 Ubuntu 成功登顶
  8. 业界 | 机器学习+ICU:为重症患者提供实时护理
  9. xf-admin 项目简述
  10. ORA-01031的解决方法