关于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 ...
随机推荐
- [HDU2065] "红色病毒"问题
传送门:>Here< 题意:现在有一长度为N的字符串,满足一下条件: (1) 字符串仅由A,B,C,D四个字母组成; (2) A出现偶数次(也可以不出现); (3) C出现偶数次(也可以不 ...
- python_sort(key=) 的使用
""" sort() 函数内含有 key 可以指定相关的函数来作为排序依据 比如这里指定每一项的索引为1 的元素作为排序依据 默认是以第一个作为排序依据 "&q ...
- 【HDU-6146】Pokémon GO(dp)
百度之星2017复赛1003 HDU-6146 Pokémon GO 题意 两行n列,只能到相邻格子,可以斜着.求遍历的方案数. 题解 dp[i]从一个点出发遍历长度i最后回到这一列的方案数 dp2[ ...
- TCP/UDP区别
一:1. 大体上来说,TCP和UDP都是通过Internet发送数据包的协议.都建立在Internet协议上.就是无论你是用TCP协议还是用UDP协议发送数据包,都会被发送到IP地址: 2.数据包的处 ...
- centos7下安装vnc更改vnc默认端口号
应用场景:某些情景下,需要用的linux的桌面环境,Ubuntu的桌面性能在linux发行版中算是数一数二的,如果不熟悉Debian系统,Centos/RHEL系列也行: 我这里的场景是开发人员不 ...
- Keepalived+Nginx搭建主从高可用并带nginx检测
应用环境:部分时候,WEB访问量一般,或者测试使用,利用Keepalived给Nginx做高可用即可满足要求. 测试环境: 搭建步骤: 1. 安装软件 在Nginx-A和Nginx-B上: ~]# ...
- php 限制类的对象类型
事实上,采用哪种处理参数类型的策略,取决于任何潜在bug的严重程度.通常PHP会根据语境自动转换大多数基本数据类型. 因此,你需要在检测类型.转换类型和依赖良好清晰的文档(无论决定用哪一种,都应该提供 ...
- A1129. Recommendation System
Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...
- matplotlib 将两张数据视图在一起显示
import numpy as np import pandas as pd from matplotlib import pyplot as plt if __name__ == "__m ...
- Educational Codeforces Round 53 (Rated for Div. 2) A Diverse Substring
传送门 https://www.cnblogs.com/violet-acmer/p/10163375.html 题意: 给出串是多态的定义“长度为 n 的串 s ,当串 s 中所有字母出现的次数严格 ...