关于CURL的初步认识
前言:你知道?这个CURL可以做爬虫的工作但是仅限于小型的爬虫..............
(一) CURL的认识
下面我觉得用图片来展示curl比较直观:

所谓的curl就是客户端访问了服务器1,那么服务器1又模拟了服务客户端去访问了服务器2,然后拿到结果后一层层返回,并且curl以第三方的扩展库存在所以要用到必须要开启这个扩展.
(二)curl分类
分为get访问和post访问
(三)curl模拟get请求
<?php echo 't1.php<br/>'; //使用curl模拟get请求
#1. 初始化curl连接
$ch = curl_init(); //请求的新的链接地址
$url = 'http://969m2z.natappfree.cc/t2.php?name=小风风&age=18&height=1.9'; #2. 设置curl选项
// 设置请求URL地址
curl_setopt($ch,CURLOPT_URL,$url);
// 不获取header头信息
curl_setopt($ch,CURLOPT_HEADER,0);
// 结果不直接返回到终端
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
// 设置curl不进行证书的检测
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); // 超时时间 秒
curl_setopt($ch,CURLOPT_TIMEOUT,10);
// 设置请求的浏览器
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'); #3. 执行curl
$data = curl_exec($ch); #4. 关闭curl连接
curl_close($ch); var_dump($data); echo '<hr/>'; echo '哈哈哈哈哈,看的到我么?';
<?php #访问的第二个网站的代码 echo 't2.php<br/>'; var_dump( $_GET );
(四)curl的post请求
//在实现get请求的基础上需要增加的设置项:
// 发起POST请求
curl_setopt($ch,CURLOPT_POST,1);
// post发送的数据,注意http_build_query可以将$data数组数据格式化成http传输数据的格式
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
(五)用curl实现获取access_token(这个是调用公众号唯一的凭证有效期2小时)
<?php
include './request.php';//引入curl函数
class NewWeixin{
const appID = 'xxxxxxx';//开发者的appid
const appsecret = 'xxxxxx';//开发者的加密密钥
#获取access_token的方法
public function getACToken(){
$filePath = __DIR__ . '/' . self::appID . '.txt';//存储accesstoken的文件
if( is_file($filePath) && filemtime($filePath)+7200>time()){//如果存储accesstoken的文件存在并且最后修改时间没有超过2个小时,说明accesstoken还在有效期内
return file_get_contents($filePath);//那么,直接从文件中读取出accesstoken
}
//能够执行到这里说明要么文件不存在,要么文件存在但是accesstoken过期了
//获取access_token的接口
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s';
$url = sprintf($url, self::appID, self::appsecret);
$json = curl($url);
$data = json_decode($json);//因为得到的结果将会是一个json字符串,所以要将这个字符串转换成一个数组
//将accesstoken覆盖写入进文件
file_put_contents($filePath, $data->access_token);
//调用curl函数请求接口api
return $data->access_token;
}
}
$obj = new NewWeixin;
echo $obj->getACToken();
关于CURL的初步认识的更多相关文章
- PHP curl之爬虫初步
php的curl可以实现模拟http的各种请求,这也是php做网络爬虫的基础,也多用于接口api的调用. 这个时候有人就要发问了:为什么你特么不用file_get_contents? curl的性能比 ...
- 初步了解 cURL
今天需要用PHP模拟post请求,查了查资料,了解到cURL.看了一篇博客,写的很详细,就转载了,与大家分享.[原文链接] 什么是cURL?可能还有很多同学没有听说过这个工具,我先来给大家简单介绍下什 ...
- Docker初步认识安装和简单实例
前话 问题 开发网站需要搭建服务器环境,FQ官网下载软件包,搭建配置nginx,apache,数据库等.官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步 ...
- 关于在框架中使用curl的思考,以及,curl其实很好用
初步猜想: 在接触到框架文档的第一阶段时,会觉得控制器调用模型就是一件很简单的事,tp中用D方法或者M方法来实例化模型,laravel中用命名空间来加载模型,CI中用$this->load-&g ...
- curl支持HTTP和https
设计流程 基于curl工具实现https/http,设计初步流程为:linux平台验证→→交叉移植arm板. linux系统下调试http和https 1.1 Linux安装curl 输入命令:sud ...
- ant gradle curl等工具原理以及使用记录
1.ant是早一些的java 项目配置管理工具. 2.gradle是比maven还新的项目配置管理工具. 3.curl可以方便进行网络测试.curl可以方便用来http请求测试,支持各种命令,从这个角 ...
- 初步理解require.js模块化编程
初步理解require.js模块化编程 一.Javascript模块化编程 目前,通行的Javascript模块规范共有两种:CommonJS和AMD. 1.commonjs 2009年,美国程序员R ...
- 转:CURL库在程序中的运用浅析
CURL库在程序中的运用浅析-nk_ysg-ChinaUnix博客 http://blog.chinaunix.net/uid-22476414-id-3286638.html 这个目录的文章转载fr ...
- curl测试dns解析时间及tcp连接时间
1.用Linux下的curl命令测量网络请求(分号是分隔符,可以是其他符号): curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer ...
随机推荐
- scrapy 登陆知乎
参考 https://github.com/zkqiang/Zhihu-Login # -*- coding: utf-8 -*- import scrapy import time import r ...
- [SDOI2013] 直径
传送门:>HERE< 题意:给出一颗树,求出被所有的直径都经过的边的数量 解题思路: 先求出任意一条直径并记录节点. 然后依次枚举直径上的每一个节点,判断从当前节点延伸出去的非直径的一条路 ...
- Java 视频处理,截帧操作
1.maven <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</ ...
- BZOJ 3514: Codechef MARCH14 GERALD07加强版(LCT + 主席树)
题意 \(N\) 个点 \(M\) 条边的无向图,询问保留图中编号在 \([l,r]\) 的边的时候图中的联通块个数. \(K\) 次询问强制在线. \(1\le N,M,K \le 200,000\ ...
- multiset和set
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...
- 微信支付退款(PHP后端)
应用场景 当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上. 微信 ...
- VSCode创建自定义代码段
上一篇:PyCharm创建自定义代码段(JetBrains系列通用) 设置方法 很简单,快速过一下,F1,然后输入snippets 然后选择对应语言 Python案例 内容和使用: { // pref ...
- python学习day5 数据类型Ⅲ(字典)
day5 字典 回顾&补充 面试题 #数据类型判断a = 1 #intb = (1) #intc = ('1') #strd = (1,) #tuple int py2/py3 除法 强制转换 ...
- ImageMagick:获取一行文字的宽与高
double *fm = MagickQueryFontMetrics(mw_temp, dw_wand, text_utf8); //获取文字在指定字体和字号下的宽度和高度 double textW ...
- JS验证身份证
话不多说,直接看代码 JS部分 /** * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * ...