當前位置:首頁 » 密碼管理 » curl訪問https

curl訪問https

發布時間: 2022-10-05 13:35:42

A. 如何使用curl 訪問https類型的網站

簡易方法 (不安全)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

安全方法:

用firefox查出網站的CA certificate,下戴, 然後
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");

B. 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

C. 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;
}

D. AMH 面板curl 請求https頁面伺服器報404錯誤

那說明WEB目錄在HTTPS配置中沒有具體綁定。或者文件不支持HTTPS調用。

E. curl怎麼解決https證書問題

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

跳過SSL

F. cURL進行HTTPS連接POST數據,數據怎樣輸入

本文由 易維信-【EVTrust】SSL證書技術中心編寫
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;
}
本文由 易維信-【EVTrust】SSL證書技術中心編寫

G. PHP使用CURL請求https的微信統一下單介面時報錯,同樣的代碼我在另一台機器上運行是正常的

我也遇到了同樣的問題,只要是走微信,偶爾都會請求不到,原來是正常的。今天排查了一天,終於找到了原因所在。

centos原生用的NSS,而不是OpenSSL,curl調用NSS庫請求https時偶爾會出現請求不到的情況。

解決方案:
參考網址:網頁鏈接

按步驟完成後記得重啟 php-fpm和nginx

H. PHP使用curl訪問https頁面的問題

你試試 curl_multi_getcontent( resource $ch ) 我記得這個東西是要接受的 忘了是在傳過去的頁面還是本頁面

熱點內容
磁碟禁止訪問 發布:2024-04-25 22:53:48 瀏覽:286
多線程ftp上傳 發布:2024-04-25 22:41:36 瀏覽:114
phpqrcode 發布:2024-04-25 22:41:36 瀏覽:32
桂平上網密碼是多少 發布:2024-04-25 22:32:10 瀏覽:574
open函數c語言 發布:2024-04-25 21:47:42 瀏覽:406
簡訊刪除後怎麼找伺服器 發布:2024-04-25 21:15:06 瀏覽:388
查ip地址伺服器數量 發布:2024-04-25 20:49:48 瀏覽:620
安卓手機單核性能為什麼不高 發布:2024-04-25 20:48:07 瀏覽:56
群暉php 發布:2024-04-25 20:00:35 瀏覽:884
怎麼查看我的wifi密碼 發布:2024-04-25 18:54:43 瀏覽:757