关于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 ...
随机推荐
- 使用npm安装appium时的坑
使用命令安装appium 命令安装 npm install -g appium(如果安装失败那么就指定国内的淘宝源安装吧,官方源我应该试了n次费了很大劲才安装成功) 指定淘宝源安装:设置 npm 淘宝 ...
- C#版本和.NET版本以及VS版本的对应关系
C#版本和.NET版本以及VS版本的对应关系 版本 .NET Framework版本 Visual Studio版本 发布日期 特性 C# 1.0 .NET Framework 1.0 Visual ...
- maven "mvn不是内部或外部命令,也不是可运行的程序或批处理文件"
配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件 首先maven环境变量: 变量名:MAVEN_HOME 变量值:E:\apache-maven-3.2 ...
- MT【310】均值不等式
(2014北约自主招生)已知正实数$x_1,x_2,\cdots,x_n$满足$x_1x_2\cdots x_n=1,$求证:$(\sqrt{2}+x_1)(\sqrt{2}+x_2)\cdots(\ ...
- Android多种方法显示当前日期和时间
文章选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文探讨Android显示当前日期和时间的方法. ...
- vue自定义插件-弹框
<template> <transition name="msgbox"> <div v-if="show" class=&quo ...
- CF285E Positions in Permutations(dp+容斥)
题意,给定n,k,求有多少排列是的 | p[i]-i |=1 的数量为k. Solution 直接dp会有很大的后效性. 所以我们考虑固定k个数字使得它们是合法的,所以我们设dp[i][j][0/1] ...
- [SDOI2010]大陆争霸
幻想历8012年5月12日深夜,斯普林·布拉泽降下神谕:“Trust me, earn eternal life.”克里斯军团士气大增.作为克里斯军团的主帅,你决定利用这一机会发动奇袭,一举击败杰森国 ...
- Dockerfile技巧
换镜像源 Ubuntu RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list A ...
- A1099. Build A Binary Search Tree
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...