㈠ 如何启用curl命令HTTP2支持
使用如下命令我们可以看到 curl 版本: curl --version 从上图中,我们可以看到当前 curl 的版本及支持的协议以及功能特性没有支持 HTTP2。 启用curl命令HTTP2支持 编译安装nghttp2 为了让 curl 支持 HTTP2 我们需要安装 nghttp。
㈡ 如何启用curl命令HTTP2支持
当我们直接使用 curl 去请求一个 https 页面时,默认可以看到其默认返回的是 HTTP1.1 的 response。现在使用 HTTP2 的网站越来越多,技术也越来越成熟,如何启用 curl 命令 HTTP 2 支持就成为了一个问题。
curl -I https://nghttp2.org/
当我们试图用 http2 参数时,会返回一个未支持协议的“curl: (1) Unsupported protocol”错误:
curl --http2 -I https://nghttp2.org/
使用如下命令我们可以看到 curl 版本:
curl --version
从上图中,我们可以看到当前 curl 的版本及支持的协议以及功能特性没有支持 HTTP2。
启用curl命令HTTP2支持
编译安装nghttp2
为了让 curl 支持 HTTP2 我们需要安装 nghttp2(http2 的 C 语言库):
#安装编译工具等
sudo apt-get install git g++ make binutils autoconf automake autotools-dev libtool pkg-config \
zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \
libjemalloc-dev cython python3-dev python-setuptools
#编译安装nghttp2
git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure
make
sudo make install
升级curl版本
cd ~
sudo apt-get build-dep curl
wget http://curl.haxx.se/download/curl-7.46.0.tar.bz2
tar -xvjf curl-7.46.0.tar.bz2
cd curl-7.46.0
./configure --with-nghttp2=/usr/local --with-ssl
sudo make && make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig
升级完版本之后,我们再查看 curl 版本时会发布特性中会增加 HTTP2 功能支持。此时 –http2 参数就可以正常使用了:
curl --http2 -I https://nghttp2.org
测试curl with http2
我们再使用如下命令测试 winclient 主页看看:
curl --http2 -I https://www.winclient.cn
㈢ 如何使用curl获取https请求
解决方法为在curl请求时,加入:
复制代搜腔码代码如下:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
curl https请求代码
复制代码代码如下:
<?php
/** curl 获取 https 请求
* @param String $url 请求的url
* @param Array $data 要发送的数据
* @param Array $header 请求时发送的header
* @param int $timeout 超时时间,默认30s
*/
function curl_https($url, $data=array(), $header=array(), $timeout=30){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$response = curl_exec($ch);
if($error=curl_error($ch)){
die($error);
}
curl_close($ch);
return $response;
}
// 调用
$url = 'https://www.example.com/api/message.php';
$data = array('name'=>'fdipzone');
$header = array();
$response = curl_https($url, $data, $header, 5);
echo $response;
?>
希望本文所述对大家竖镇的php程序设计有所帮世纤衫助。
㈣ 怎么用CURL向HTTPS发送请求并且获取返回值
$header = array (
'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36'
);
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_TIMEOUT, 6); 氏袭 谈山 // 设置超时6秒
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 跳过SSL
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 跳过SSL
curl_setopt ($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行
$content = curl_exec ( $ch );
if ($content == FALSE) {
curl_error ( $ch );
return true;
}
// 关闭含核中
curl_close ( $ch );
㈤ curl命令详解是什么
在linux中curl是一个利用URL标准在cmd下工作中的文件传送工具,能够算是一款很强悍的httpcmd工具。它支持文档的发送和下载,是综合性传送工具,但按传统式,习惯性称Curl为下载工具。
1、curl指令是一个网络工具,其关键功能是根据http、ftp等方法下载文档,也可以文件上传,作为一个功能齐全的网络工具,curl指令与此同时支持HTTPS等诸多协议书,还支持POSTcookies验证从特定偏位处下载一部分文档,客户代理商字符串数组、速度限制、图片大小、时间轴等特点。
2、CURL是一个利用URL英语的语法在cmd下工作中的文件传送工具,1997年初次发售。它支持上传文件和下载,因此是综合性传送工具,但按传统式,习惯性称CURL为下载工具。
3、CURL还涵盖了用以软件开发的libcurl。cURL支持的通讯协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。
㈥ Windows下如何使用curl命令
首先来了解下什么是curl命令,干什么用的?
linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。
curl并不是双击即可运行,你需要在命令提示符下使用它
如何进入命令提示符
点击“开始”——“运行”——输入CMD
或,WIN+R,输入CMD
下载我下载版本的CURL后,解压后文件夹放在如:D:curl的文件夹里(curl路径)
命令提示符窗口中输入"d:"回车,然后输入“cd curl”即可跳转到curl文件夹,
至此可以输入curl命令了(根据你的curl类推)或你也可以将curl加入到系统环境变量如何将curl所在文件夹加入系统变量
右键单击“我的电脑”——“属性”——“高级”——“环境变量”——
“系统变量”——“Path”——“编辑”——加入“;D:curl”(注意分号,
D:curl换成你的curl路径)——“确定”加入到系统环境变量后可在命令提示符内直接运行如
“curl -O http://curl.haxx.se/download/curl-7.19.5-win32-ssl-sspi.zip”
这样的命令,无需进入curl所在文件夹curl命令用法!
实例演示:
curl 是一般linux发行版中都带有的小工具,利用这个工具可以很方便的下载文件,我一般使用这个工具来查看某个页面相应的HTTP头信息,在Windows系统中我们也一样可以使用这个工具,如果不需要支持https的话,那直接下载一个可执行文件即可
这个页面最底部有一个Windows下的下载链接,请选择不带SSL的版本,
否则还需要安装SSL的支持包。
解压后直接执行 curl.exe 即可(如不能直接运行,请使用cmd带路径执行curl.exe程序),如将改文件放入盘
C:curlcurl.exe.在cmd控制台为 C:curlcurl.exe --help
如果需要将cmd直接执行curl ,则可将curl.exe文件放入到C:WINDOWSsystem32目录下!
㈦ Curl 命令
一、基础请求
1、Get 请求
命令格式: curl requesturl
例如: curl https://kunpeng.csdn.net/ad/template/161?positionId=427
2、Post 请求
命令格式: curl -X POST requesturl
例如: curl -X POST https://msg.csdn.net/v1/web/message/view/unread
二、指定ip发送请求
1、http命令格式:
curl -H 'Host:requestHost' http://ip:port/requestPath
或 curl -x ip:port http://requestHost/requestPath
例如:
curl -H 'Host:kunpeng.csdn.net' http://101.201.173.208:80/ad/template/161?positionId=427
curl -x '101.201.173.208:80' http://kunpeng.csdn.net/ad/template/161?positionId=427
2、https命令格式:
curl -H 'Host:requestHost' https://ip/requestPath
或 curl ip https://requestHost/requestPath -k
例如:
curl -H 'Host:kunpeng.csdn.net' https://101.201.173.208/ad/template/161?positionId=427 -k
curl '101.201.173.208' https://kunpeng.csdn.net/ad/template/161?positionId=427 -k
三、带参数的POST请求
命令格式:
1、head请求参数用 -H表示(一个横杆)
2、如果命令需要换行,在换行处加 反斜杠
3、body请求参数用 --data表示(两个横杆);请求内容有引号时,加反斜杠\
例如:
㈧ cURL进行HTTPS连接POST数据,数据怎样输入
PHP 下
function vpost($url,$data){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); //拍芦芦 执行操作
if (curl_errno($curl)) {
echo ‘Errno’.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
$url = “https://xxx.xxx.xxx/xxx”;
$data =”x=xxxxxx”;
$result = vpost($url,$data);
在C++下
以下方法用CURL提交表单
1. 编译环境.
安装vs2010或其他版本. vs2010 express版也可以。不要低于vc6.
2. 搜索curl-7.25.0.zip,下载。
解压到c:\curl-7.25.0
打开Visual Studio Command Prompt (2010)
cd \curl-7.25.0\winbuild
nmake /f Makefile.vc mode=dll USE_SSSPI=no ENABLE_IDN=no
编译成功后 cd ..\builds
到一个名字为libcurl-....lib的子目录里找到libcurl.dll和libcurl.lib, 保存到一个目录下备份,下哗空面要用。
3. 打开vc++ 2010, File->New project,选Win32 Project, 输入一个项目名。下面点Next,勾上Console Application和Empty Project.
4. 配置项目
到我的文档下找到vs2010 projects目录,找到 solution名字\项目名字 目录,
把curl-7.25.0目录下的include目录拷贝到项目目录下
把2备份好的libcurl.dll和libcurl.lib拷贝到项目目录.
在vc++中右键点击项目名(或Alt+F7), 点开Configuration Properties, 点vc++directories
点Include Directories, 点Edit, 添袭带加$(ProjectDir)include 确定
在点击左侧的Linker, 点Input,点Additional Dependences, 点Edit, 添加一行$(ProjectDir)\libcurl.lib 确定
5. 代码。
右键点项目名字,Add New Item->C++ File, name写main.c, 输入代码:
/* 抱歉,这里不好贴链接,版权没法贴,版权去看http-post.c */
#include <stdio.h>
#include <curl/curl.h>
#include <stdlib.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
/* First set the URL that is about to receive our POST. This URL can
just as well be a https:// URL if that is what should receive the
data. */
curl_easy_setopt(curl, CURLOPT_URL, "这里写网址");
/* Now specify the POST data */
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
system("pause");
}
return 0;
}
㈨ AMH 面板curl 请求https页面服务器报404错误
那说明WEB目录在HTTPS配置中没有具体绑定。或者文件不支持HTTPS调用。
㈩ curl的用法
curl是一个利用URL语法在命令行方式下工作的文件传输工具。本文介绍了它的简单用法。
*******************************************************************************************************************************************************
curl是一个利用URL语法在命令行方式下工作的文件传输工具。
它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。
curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传, 上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器, 通过http代理服务器上传文件到FTP服务器等等,功能十分强大。
Windows操作系统下的网络蚂蚁,网际快车(FlashGet)的功能它都可以做到。准确的说,curl支持文件的上传和下载,所以是一个综合传输工具,但是按照传统,用户习惯称curl为下载工具。
curl是瑞典curl组织开发的,您可以访问: http://curl.haxx.se/
获取它的源代码和相关说明。
鉴于curl在Linux上的广泛使用,IBM在AIX Linux Toolbox的光盘中包含了这个软件,并且您可以访问IBM网站:
http://www- 1.ibm.com/servers/aix/procts/aixos/linux/altlic.html 下载它。
curl的最新版本是 7.10.8,IBM网站上提供的版本为7.9.3。
在AIX下的安装很简单,IBM网站上下载的rpm格式的包。
在 http://curl.haxx.se/docs/,您可以下载到UNIX格式的man帮助,里面有详细的curl工具的使用说明。
curl的用法为:curl [options] [URL...]
其中options是下载需要的参数,大约有80多个,curl的各个功能完全是依靠这些参数完成的。
具体参数的使用,用户可以参考curl的man帮助。
下面,本文就将结合具体的例子来说明怎样利用curl进行下载。
1、获得一张页面
使用命令:curl http://curl.haxx.se
这是最简单的使用方法。用这个命令获得了http://curl.haxx.se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将不显示文件头部,即HTML文档的header。要全部显示,请加参数 -i,要只显示头部,用参数 -I。任何时候,可以使用 -v 命令看curl是怎样工作的,它向服务器发送的所有命令都会显示出来。为了断点续传,可以使用-r参数来指定传输范围。
2、表单(Form)的获取
在WEB页面设计中,form是很重要的元素。Form通常用来收集并向网站提交信息。提交信息的方法有两种,GET方法和POST方法。先讨论GET方法,例如在页面中有这样一段:
<form method="GET" action="junk.cgi">
<input type=text name="birthyear">
<input type=submit name=press value="OK">
</form>
那么浏览器上会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单就用GET方法向服务器提交文本框的数据。
例如原始页面是在 www.hotmail.com/when/birth.html看到的,然后您在文本框中输入1905,然后按OK按钮,那么浏览器的URL现在应该是:“www.hotmail.com/when/junk.cgi?birthyear=1905&;press=OK”
对于这种网页,curl可以直接处理,例如想获取上面的网页,只要输入:
curl "www.hotmail.com/when/junk.cgi?birthyear=1905&;press=OK"
就可以了。
表单用来提交信息的第二种方法叫做POST方法,POST方法和GET方法的区别在于GET方法使用的时候,浏览器中会产生目标URL,而POST不会。类似GET,这里有一个网页:
<form method="POST" action="junk.cgi">
<input type=text name="birthyear">
<input type=submit name=press value="OK">
</form>
浏览器上也会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单用POST方法向服务器提交数据。
这时的URL是看不到的,因此需要使用特殊的方法来抓取这个页面:
curl -d "birthyear=1905&press=OK" www.hotmail.com/when/junk.cgi
这个命令就可以做到。
1995年年末,RFC 1867定义了一种新的POST方法,用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的:
<form method="POST" enctype='multipart/form-data' action="upload.cgi">
<input type=file name=upload>
<input type=submit name=press value="OK">
</form>
对于这种页面,curl的用法不同:
curl -F upload=@localfilename -F press=OK URL
这个命令的实质是将本地的文件用POST上传到服务器。
有关POST还有不少用法,用户可以自己摸索。
3、使用PUT方法。
HTTP协议文件上传的标准方法是使用PUT,此时curl命令使用-T参数:
curl -T uploadfile www.uploadhttp.com/receive.cgi
4、有关认证。
curl可以处理各种情况的认证页面,例如下载用户名/密码认证方式的页面(在IE中通常是出现一个输入用户名和密码的输入框):
curl -u name:password www.secrets.com
如果网络是通过http代理服务器出去的,而代理服务器需要用户名和密码,那么输入:
curl -U proxyuser:proxypassword http://curl.haxx.se
任何需要输入用户名和密码的时候,只在参数中指定用户名而空着密码,curl可以交互式的让用户输入密码。
5、引用。
有些网络资源访问的时候必须经过另外一个网络地址跳转过去,这用术语来说是:referer,引用。
对于这种地址的资源,curl也可以下载:
curl -e http://curl.haxx.se daniel.haxx.se
6、指定用户客户端。
有些网络资源首先需要判断用户使用的是什么浏览器,符合标准了才能够下载或者浏览。
此时curl可以把自己“伪装”成任何其他浏览器:
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL
这个指令表示curl伪装成了IE5.0,用户平台是Windows 2000。(对方服务器是根据这个字串来判断客户端的类型的,所以即使使用AIX也无所谓)。
使用:
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL
此时curl变成了Netscape,运行在PIII平台的Linux上了。
7、COOKIES
Cookie是服务器经常使用的一种记忆客户信息的方法。如果cookie被记录在了文件中,那么使用命令:
curl -b stored_cookies_in_file www.cookiesite.com
curl可以根据旧的cookie写出新cookie并发送到网站:
curl -b cookies.txt -c newcookies.txt www.cookiesite.com
8、加密的HTTP——HTTPS。
如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问:
curl https://that.secure.server.com
9、http认证。
如果是采用证书认证的http地址,证书在本地,那么curl这样使用:
curl -E mycert.pem https://that.secure.server.com
参考读物和注意事项:
curl非常博大,用户要想使用好这个工具,除了详细学习参数之外,还需要深刻理解http的各种协议与URL的各个语法。
这里推荐几个读物:
RFC 2616 HTTP协议语法的定义。
RFC 2396 URL语法的定义。
RFC 2109 Cookie是怎样工作的。
RFC 1867 HTTP如何POST,以及POST的格式。
文字
curl是免费软件,IBM公司对curl不提供技术支持。
curl官方网站:
http://curl.haxx.se