php中curl的用法
简单的例子
首先给出一个最简单的例子
$url = "http://zhyoulun.com";$ch = curl_init($url); //初始化一个cURL会话
curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话
运行之后可以看到,网页的源代码被打印了出来。
将网页源代码存储到变量中
$url = "http://zhyoulun.com";$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。$content = curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话echo $content."\n"; //输出网页源代码
这里用到了参数CURLOPT_RETURNTRANSFER
不输出头文件
$url = "http://zhyoulun.com";$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, false); //不输出头文件,如果设为true,获得的网页源代码最前边会带有'HTTP/1.1 200 OK'等内容$content = curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话echo $content."\n"; //输出网页源代码
这里用到了参数CURLOPT_HEADER
将网页源代码输出到文件
$url = "http://zhyoulun.com";$fp = fopen("output.dat", "w");$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, false); //不输出头文件,如果设为true,获得的网页源代码最前边会带有'HTTP/1.1 200 OK'等内容
curl_setopt($ch, CURLOPT_FILE, $fp); //设置输出文件,默认为STDOUT (浏览器)。curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话fclose($fp);
这里用到了参数CURLOPT_FILE
指定userAgent
userAgent属性是一个只读的字符串,声明了浏览器用于HTTP请求的用户代理头的值。在每次浏览器(邮件客户端/搜索引擎蜘蛛)进行HTTP请求时发送到服务器,服务器就知道了用户是使用什么浏览器(邮件客户端/搜索引擎蜘蛛)来访问的。
这里有各种浏览器的userAgent的搜集。
获取自己使用的浏览器的userAgent的方法
<script>
javascript:alert(navigator.userAgent)
</script>
或者便于复制的
<script>
window.onload=function(){document.getElementById("content").innerHTML = ""+navigator.userAgent;
}
</script>
<div id="content"></div>
我当前使用的浏览器的userAgent为Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36
$url = "http://zhyoulun.com";$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, false); //不输出头文件,如果设为true,获得的网页源代码最前边会带有'HTTP/1.1 200 OK'等内容
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36"); //在HTTP请求中包含一个"User-Agent: "头的字符串。$content = curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话echo $content."\n"; //输出网页源代码
这里用到了参数CURLOPT_USERAGENT
连接超时 和 获取超时
$url = "http://zhyoulun.com";$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, false); //不输出头文件,如果设为true,获得的网页源代码最前边会带有'HTTP/1.1 200 OK'等内容
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36"); //在HTTP请求中包含一个"User-Agent: "头的字符串。
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); //在尝试连接时等待的秒数。设置为0,则无限等待。这里设置为15秒
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //允许 cURL 函数执行的最长秒数。这里设置为30秒$content = curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话echo $content."\n"; //输出网页源代码
CURLOPT_CONNECTTIMEOUT用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
CURLOPT_TIMEOUT用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
使用cURL下载MP3文件是一个对开发人员来说不错的例子。CURLOPT_CONNECTTIMEOUT
可以设置为10秒,标识如果服务器10秒内没有响应,脚本就会断开连接;CURLOPT_TIMEOUT可以设置为100,如果MP3文件100秒内没有下载完成,脚本将会断开连接。
CURLOPT_CONNECTTIMEOUT_MS
,尝试连接等待的时间,以毫秒为单位。设置为0,则无限等待。 如果 libcurl 编译时使用系统标准的名称解析器( standard system name resolver),那部分的连接仍旧使用以秒计的超时解决方案,最小超时时间还是一秒钟。
CURLOPT_TIMEOUT_MS
,设置cURL允许执行的最长毫秒数。 如果 libcurl 编译时使用系统标准的名称解析器( standard system name resolver),那部分的连接仍旧使用以秒计的超时解决方案,最小超时时间还是一秒钟。
这里用到了参数CURLOPT_CONNECTTIMEOUT
、CURLOPT_TIMEOUT
、CURLOPT_CONNECTTIMEOUT_MS
、CURLOPT_TIMEOUT_MS
访问https的网页或文件
$url = "https://github.com";$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, false); //不输出头文件,如果设为true,获得的网页源代码最前边会带有'HTTP/1.1 200 OK'等内容
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36"); //在HTTP请求中包含一个"User-Agent: "头的字符串。
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); //在尝试连接时等待的秒数。设置为0,则无限等待。这里设置为15秒
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //允许 cURL 函数执行的最长秒数。这里设置为30秒
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //禁止 cURL 验证对等证书(peer's certificate)。
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //$content = curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话echo $content."\n"; //输出网页源代码
这里用到了参数CURLOPT_SSL_VERIFYPEER
、CURLOPT_SSL_VERIFYHOST
设置重定向次数
$url = "https://github.com/yiisoft/yii2/archive/2.0.8.zip";$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, false); //不输出头文件,如果设为true,获得的网页源代码最前边会带有'HTTP/1.1 200 OK'等内容
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36"); //在HTTP请求中包含一个"User-Agent: "头的字符串。
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); //在尝试连接时等待的秒数。设置为0,则无限等待。这里设置为15秒
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //允许 cURL 函数执行的最长秒数。这里设置为30秒
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //禁止 cURL 验证对等证书(peer's certificate)。
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //
curl_setopt($ch, CURLOPT_MAXREDIRS, 3); //指定最多的 HTTP 重定向次数,这里设置为3次
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。$content = curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话echo $content."\n"; //输出网页源代码
下载这个文件时,如果不设置重定向,会获取到网页源代码
<html><body>You are being <a href="https://codeload.github.com/yiisoft/yii2/zip/2.0.8">redirected</a>.</body></html>
这里用到了参数CURLOPT_MAXREDIRS
、CURLOPT_FOLLOWLOCATION
使用socket5代理
$url = "https://zhyoulun.com";$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, false); //不输出头文件,如果设为true,获得的网页源代码最前边会带有'HTTP/1.1 200 OK'等内容
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36"); //在HTTP请求中包含一个"User-Agent: "头的字符串。
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); //在尝试连接时等待的秒数。设置为0,则无限等待。这里设置为15秒
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //允许 cURL 函数执行的最长秒数。这里设置为30秒
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //禁止 cURL 验证对等证书(peer's certificate)。
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //
curl_setopt($ch, CURLOPT_MAXREDIRS, 3); //指定最多的 HTTP 重定向次数,这里设置为3次
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。
curl_setopt($ch, CURLOPT_PROXY,'127.0.0.1:10000'); //
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); //$content = curl_exec($ch); //执行一个cURL会话
curl_close($ch); //关闭一个cURL会话echo $content."\n"; //输出网页源代码die();
这里用到了参数CURLOPT_PROXY
、CURLOPT_PROXYTYPE
输出错误信息
$url = "https://zhyoulun.com";$ch = curl_init($url); //初始化一个cURL会话//设置cURL传输选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, false); //不输出头文件,如果设为true,获得的网页源代码最前边会带有'HTTP/1.1 200 OK'等内容
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36"); //在HTTP请求中包含一个"User-Agent: "头的字符串。
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); //在尝试连接时等待的秒数。设置为0,则无限等待。这里设置为15秒
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //允许 cURL 函数执行的最长秒数。这里设置为30秒
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //禁止 cURL 验证对等证书(peer's certificate)。
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //
curl_setopt($ch, CURLOPT_MAXREDIRS, 3); //指定最多的 HTTP 重定向次数,这里设置为3次
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。
curl_setopt($ch, CURLOPT_PROXY,'127.0.0.1:10000'); //
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); //$content = curl_exec($ch); //执行一个cURL会话$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode!=200)
{echo "code: ".$httpCode."\n";$error = curl_error($ch);echo "error: ".$error."\n";
}curl_close($ch); //关闭一个cURL会话echo $content."\n"; //输出网页源代码
这里用到了curl_getinfo
、CURLINFO_HTTP_CODE
、curl_error
参考
- cURL 函数
- What’s the difference between CURLOPT_CONNECTTIMEOUT and CURLOPT_TIMEOUT?
php中curl的用法相关推荐
- Linux系统中curl命令用法详解
在Linux系统中curl是一个利用URL规则在命令行下工作的文件传输工具,是一款强大的http命令行工具.它支持文件的上传和下载,是综合传输工具. curl 是常用的命令行工具,用来请求 Web 服 ...
- curl 的用法指南
curl 的用法指南 转自:http://www.ruanyifeng.com/blog/2019/09/curl-reference.html 作者: 阮一峰 日期: 2019年9月 5日 简介 c ...
- linux wget返回值_Linux中curl命令和wget命令的使用介绍与比较
原文链接: 这篇文章主要给大家介绍了Linux中curl命令和wget命令使用以及这两者之间的区别比较,curl和wget命令都是Linux下的工具,可以用来下载文件.文中介绍的非常详细,相信对大家具 ...
- Linux中curl命令详解(做定时任务超级有用)!
Linux curl命令详解 命令:curl 在kingle中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...
- Linux之curl命令用法指南学习
Linux之curl命令用法指南学习 前言 常用参数 命令样例 其他 参考链接 前言 应用场景 工作中经常需要用到curl命令在测试或生产服务器中测试第三方接口,尤其是一些内外网接口.判断线上接口信息 ...
- mysql中change用法,mysql 中alter的用法以及一些步骤
mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
- 【C++】C/C++ 中 static 的用法全局变量与局部变量
C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...
- python中str的index什么意思_python中index的用法是什么
index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...
最新文章
- bert+lstm+crf ner实体识别
- Python黑帽编程 3.1 ARP欺骗
- UISegmentedControl (待续)
- python windows系统_python管理windows系统tomcat服务
- 框架:SpringBoot构建Restful service完成Get和Post请求
- zabbix通过JMX监控Tomcat及一些报错
- html中hr的各种样式使用
- vSphere虚拟化使用第三方备份方案常见CBT故障实战处理
- 乘“峰”而上,聚生态之力共创软件产业新未来
- java引用型变量_java-有没有办法用类型变量引用当前类型?
- 使用MVC2模式创建新闻网站
- 求解线性方程的数值方法——Matlab中实现算法
- 人工智能行业知识 - AI应用场景
- Python实现某du内容下载, 保存到word文档
- 关于STM8的程序下载问题:SWIM Error[30006]报错解决办法汇总
- 重要短信通知解决方案(短信通知+语音播报自动双呼)
- 英文字体设计标志需要注意什么?
- 2020年数学建模国赛C题Demo【准确率只有61%,仅供参考】
- 你知道做一个网站要多少钱网站怎么运营能赚钱
- 用计算机画有常数的函数图像,信息技术应用 用计算机画函数图象ppt配用优秀获奖教案...
热门文章
- 自从有了计算机和网络才有信息技术,2015年信息技术会考模拟选择题6(俞同明版)...
- 《WebGL编程指南》学习笔记——1.WebGL概述
- 题目477- A+B Problem III (陷阱题)
- 杨辉三角c语言 用队列形式,C语言杨辉三角(循环队列).doc
- php tp框架文档,Thinkphp 框架基础之入口文件功能、定义与用法分析
- csv反序列化_Py't'hon之csv,ini序列化,反序列化
- 实例mysql范式_数据库范式的范式应用实例
- 比赛打分时,管理员如何完成的选手分类排行展示?
- php array_walk和array_walk_recursive对数组中的每个元素应用用户自定义函数
- RedisTemplate和StringRedisTemplate在项目中应用