㈠ 如何啟用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