1、首先,連接相應linux主機,進入到linux命令行狀態下,等待輸入shell指令。
⑵ 如何利用cURL和python對服務端和web端進行介面測試
工具描述
cURL是利用URL語法在命令行方式下工作的文件傳輸工具,是開源愛好者編寫維護的免費工具,支持包括Windows、Linux、Mac等數十個操作系統,最新版本為7.27.0,但是我推薦大家使用7.26.0,從這里可以下載7.26.0版本。
以下是官方介紹的翻譯: cURL是一個使用URL語法來傳輸數據的命令行工具,支持DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMTP,SMTPS,Telnet和TFTP。 cURL支持SSL證書,HTTP POST,HTTP PUT,FTP上傳,HTTP基礎表單上傳,代理,cookies,用戶+密碼身份驗證(Basic, Digest, NTLM, Negotiate, kerberos...),恢復文件傳輸,隧道代理等等。
Python是一種面向對象、直譯式計算機程序設計語言,由Guido van Rossum於1989年底發明,它的強大和易用就無需多做說明了,在web開發中或者對開發速度要求較高的開發中應用十分廣,不過因為屬於腳本類語言,它的性能始終比不上C++、C等語言。
本文主要利用實例說明這兩款工具的在測試中的部分用途,更多用法留待大家繼續探索。
應用場景
使用cURL模擬客戶端對服務端進行查詢
在進行介面測試時,應該先找開發人員提供介面列表和對應參數,這樣測試的時候就可以驗證測試方法是否正確,不過如果可以用瀏覽器模擬操作的話,也可以自己先試試的,後面的例子會提到。
首先使用客戶端訪問需要測試的服務端介面,用wireshark抓包結果如下:
把查詢字元串以multipart方式post數據到伺服器的file_health_info.php介面。
Tips:
Windows版的cURL不像Linux或者Mac一樣屬於系統自帶工具,需要下載,如果要在命令提示符下使用就需要跳轉到工具所在目錄下才能運行,十分麻煩,我們可以直接把這個工具文件放到Windows目錄下,這樣無論在哪個目錄都可以直接使用「curl」命令運行工具了。
cURL默認就是以post方式發送數據的,所以只需要加入multipart方式就可以了,-F在cURL幫助中的解釋是:
-F, --form CONTENT Specify HTTP multipart POST data (H)
--form-string STRING Specify HTTP multipart POST data (H)
--ftp-account DATA Account data string (F)
--ftp-alternative-to-user COMMAND String to replace "USER [name]" (F)
--ftp-create-dirs Create the remote dirs if not present (F)
--ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)
--ftp-pasv Use PASV/EPSV instead of PORT (F)
Specify HTTP multipart POST data正好滿足我們的要求,所以模擬的語句是:
curl -F "newmd5=###25016566###d:\test.exe###1###" file_health_info.php
後面的都是參數,測試前就要找開發確認好。
不過因為服務端支持以gzip方式返回數據,所以我們還可以在請求中加入—compressed參數,即是:
curl --compressed -F "newmd5=###25016566###d:\test.exe###1###"file_health_info.php
為了更好判斷服務端介面是否正常,除了對返回數據進行判斷外,我們還需要對服務端返回的數據包頭進行解析,所以還可以在cURL請求中加入-i參數,最終這個測試語句就變為:
curl –i --compressed -F "newmd5=###25016566###d:\test.exe###1###"file_health_info.php
模擬完成後就要考慮判斷返回值的事了,我們首先在命令提示符下運行這個語句,看看返回值。
運行以上命令後,返回的數據如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Date: Fri, 24 Aug 2012 07:47:45 GMT
Content-Type: application/xml
Transfer-Encoding: chunked
Connection: keep-alive
Server: 360 web server
Content-Encoding: gzip
<?xml version="1.0" encoding="GBK" ?>
<ret>
<retinfo code="0" msg="Operation success" total="1" success="1" empty="0"
cost="999.92752075195"/>
<softs>
<soft>
<md5></md5>
<sha1></sha1>
<level>4040</level>
<e_level>40.3</e_level>
<size></size>
<soft_name><![CDATA[]]> </soft_name>
<describ><![CDATA[]]></describ>
<file_desc><![CDATA[]]></file_desc>
<upload>0</upload>
<attr_upload>2</attr_upload>
<class><![CDATA[private]]></class>
<malware><![CDATA[cloud.virus]]></malware>
<is_sys_file>0</is_sys_file>
<is_rep>0</is_rep>
<age>0</age>
<pop>0</pop>
</soft>
</softs>
</ret>
數據包包頭是常見的,一般來說,我們只要判斷包頭中含有「HTTP/1.1 200 OK」就可以確定服務端正常返回了數據。另外從內容可以看到這是一個xml格式的數據包,我們只需要判斷是否存在關鍵的欄位即可,比如<level>,確定這些之後我們就可以在python中添加如下案例代碼了:
首先運行指定的curl命令:
response = os.popen('''curl -i --compressed -F "newmd5=###25016566###d:\test.exe###1###"
然後判斷返回值中是否存在我們想要的欄位:
self.assertNotEqual(response.find('HTTP/1.1 200 OK'),-1)
self.assertNotEqual(response.find('<level>'),-1)
上面的內容看起來差不多可以了,但實際還不夠嚴謹,因為服務端返回的這些數據是從資料庫中獲取的,所以我們還需要查詢資料庫獲取指定值,判斷是否和數據包中的一致,比如<level>:
首先使用python登錄資料庫伺服器:
conn = MySQLdb.connect(host='172.22.54.31', user='user',passwd='test321',db='cloud')
cursor = conn.cursor()
count = cursor.execute('SELECT plevel FROM file where md5=""')
result = cursor.fetchone()
然後判斷返回值中的level是否資料庫中的值:
self.assertNotEqual(response.find('''<level>%s</level>'''%result[0]),-1)
測試時除了使用cURL等工具進行模擬,還可以自己用python或其他語言寫代碼進行post數據,不過當時簡單起見所以就選擇了用cURL測試。
使用cURL模擬控制台登錄
說到模擬登錄或者模擬點擊,很多同學可能直接聯想到QTP等模擬界面操作的工具,事實上這種工具有一個很大的弊端是太依賴控制項,如果界面控制項變了,那麼可能整個腳本就無效了,現在的程序設計都傾向界面邏輯分離,這樣修改界面時就不會動到底下的功能介面,開發人員可以隨時修改界面控制項,如果還是採取QTP等模擬點擊的方法測試,結果可能是事倍功半的,如果測試時直接點用介面就可以避免這種問題。
下面的例子是模擬控制台登錄的,登錄URL為:
index.php?r=site/login ,首先使用瀏覽器登錄一次,看看實際效果如何。
Tips:
測試php或其他web程序時建議使用chrome,因為它自帶的Developer Tools十分好用,當然firefox或者IE9也有類似的工具,看個人習慣吧。按F12打開工具,選擇Network標簽頁,然後輸入用戶名、密碼點擊登錄,這時Network下方會顯示登錄過程中瀏覽器想控制台請求的所有數據,包括請求類型、表單數據等,這些是我們模擬操作的數據來源。
從上圖可以獲取幾個重點信息:請求URL、請求類型、數據類型、數據內容、並且支持gzip壓縮等。我們用curl模擬如下:
curl -i --compressed cloud/index.php?r=site/login -d 「username=admin」 -d 「userpass=admin」
使用-i和—compressed的原因再上一個例子已經說了,這里不再贅述,重點是後面的-d,它在官方幫助的解釋是:
-d, --data DATA HTTP POST data (H)
--data-ascii DATA HTTP POST ASCII data (H)
--data-binary DATA HTTP POST binary data (H)
--data-urlencode DATA HTTP POST data url encoded (H)
--delegation STRING GSS-API delegation permission
--digest Use HTTP Digest Authentication (H)
--disable-eprt Inhibit using EPRT or LPRT (F)
--disable-epsv Inhibit using EPSV (F)
而我們從Developer Tools返回的數據已經知道,返回數據的格式是
「application/x-www-form-urlencoded」,所以很明顯需要使用-d的HTTP POST data url encoded特性。不過格式中還有關鍵字form,莫非也支持-F參數登錄,試試:
curl -i --compressed cloud/index.php?r=site/login -F 「username=admin」 -F 「userpass=admin」,果然成功,呵呵~
也許有同學有疑問,為何不模擬warnsetup、refer,這是因為測試時發現登錄界面只需要用戶名和密碼就夠了,refer 用於記錄來源網頁,在這里用處不大,warnsetup只是用於驗證登錄碼的,這個已經去掉了。
接下來要驗證數據,我們在命令提示符中運行上面的命令,返回結果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
HTTP/1.1 302 Moved Temporarily
Date: Fri, 24 Aug 2012 08:29:07 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.3
Set-Cookie: PHPSESSID=; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=; path=/
Location: ./index.php
Server: 360 web server
很奇怪吧,乍一看控制台沒有返回任何有用信息,不過裡面那句HTTP/1.1 302 Moved Temporarily是不是特別眼熟?這個特殊的302(表示http重定向)正是我們在Developer Tools看到的狀態值,看到這個已經可以80%確定我們登錄已經成功了,更重要的是返回包中的內容:Location: ./index.php,這說明控制台已經通知請求端跳轉到index.php,如果登錄失敗控制台會繼續停留在當前登錄界面的,我們只需要修改curl語句中的用戶名或者密碼就知道了,這種情況下返回包就是登錄界面的php源碼,這里不再贅述。
使用cURL以get方式測試控制台搜索介面
測試方法同上面差不多,首先使用chrome打開控制台進入對應頁面,在搜索框中輸入「test.exe」,點擊搜索,使用developer tools抓包,內容如下:
cURL模擬get方式發送數據的參數是-G,了解這個後面要模擬就很簡單了:
curl -i --compressed -G 「cloud/index.php?r=file_cloud/api/search&filename=&bg=0&lm=19 」
其中每個參數的含義要分別了解:filename表示輸入的關鍵字,bg表示資料庫第一行,lm表示共顯示19行數據。這個介面返回的數據如下:
{"rows":[{"level":"10","plevel":"10","id":"20","md5":"","soft_name":"","soft_desc":"","file_desc":"","is_sys_file":"127","size":"41984","is_rep":"0","file_name":"apihex86.d
ll","file_version":"6.1.7600.16385","proct_version":"6.1.7600.16385","right":"\u00a9 Microsoft Corporation. All rights reserved.","lang":"0","org_name":"YXBpaGV4ODYuZGxs","sign_name":"TWljcm9zb2Z0IFdpbmRvd3M=","company_name":"Microsof
t Corporation","update_time":"2012-07-31 18:14:27","create_time":"2012-07-31 18:14:27","creator_mid":""}],"count":"1"}
分別是文件屬性和文件信息,這涉及到兩個資料庫表,所以驗證數據需要用python從兩張表中獲取對應信息。
從第一張表獲取文件屬性,比如只獲取plevel:
SELECT plevel FROM `file` where md5=""
從第二張表獲取文件信息,比如只獲取company_name:
SELECT company_name FROM file_info where md5=""
Python代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
conn = MySQLdb.connect(host='%s'% self.host, user='user',passwd='test321',db='cloud')
cursor = conn.cursor()
count = cursor.execute('SELECT plevel FROM `file` where md5=""')
result = cursor.fetchone()
self.assertNotEqual(response.find(str(result[0])),-1)
count = cursor.execute('SELECT company_name FROM file_info where md5=""')
result1 = cursor.fetchone()
self.assertNotEqual(response.find(result1[0]),-1)
當然嚴謹的測試案例是每一個屬性欄位都需要進行查找和匹配,這里就不再贅述了。
後記:這種介面測試用到的無非就是curl、python的unitest而已,可能有的人會疑問,為什麼用curl而不用py自帶的pycurl或者request之類,我覺得只要能滿足需求,能夠用現成的就用現成的,怎麼簡單怎麼來。搞一堆代碼維護起來也麻煩啊,現在qa行業跳槽也比較頻繁,萬一換了個人看不懂你的代碼怎麼辦?呵呵
⑶ 如何啟用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 參數 命令
post jason data with curl:
curl -H "Content-Type: application/json" -X POST -d '[{"x":115.80796583333334,"y":36.23307472222222,"z":null}]' http://mars.amap.com/wgs2gcj
linux 下使用 curl 訪問帶多參數,GET掉參數解決方案
url 為 http://mywebsite.com/index.php?a=1&b=2&c=3
curl -s http://mywebsite.com/index.php?a=1&b=2&c=3
然而在linux下,上面的例子 $_GET只能獲取到參數 a
由於url中有&其他參數獲取不到,在linux系統中 &會使進程系統後台運行
必須對 &進行下轉義才能 $_GET獲取到所有參數
curl -s http://mywebsite.com/index.php?a=1\&b=2\&c=3
當然,最簡單的方法 用雙引號把整個url引起來就ok了
curl -s "http://mywebsite.com/index.php?a=1&b=2&c=3"
⑸ Linux運維命令Curl - 日常用法總結
在Linux系統中,curl是一個利用URL規則在命令行下工作的文件傳輸工具,可以說是一款很強大的http命令行工具。它支持文件的上傳和下載操作,是綜合傳輸工具,習慣上稱url為下載工具。下面就日常運維中基於curl命令使用做下總結
一、Curl命令用法
1. curl語法和參數選項
# curl [option] [url]
curl常見參數
2. curl使用說明
curl是一種命令行工具,作用是發出網路請求,然後得到和提取數據,顯示在"標准輸出"(stdout)上面。它支持多種協議,下面說下curl命令的日常使用示例:
3. curl上傳文件的用法(POST請求方式)
一般來說,我們都會用curl下載網頁,但是curl上傳文件則不常用。下面說下curl模擬"multipart/form-data"形式的form上傳文件, 命令稍稍復雜些。
4. curl常用示例
5. curl命令的超時時間
二、Curl的GET、POST、PUT、DELETE請求
1. GET、POST、PUT、DELETE含義與區別
2. GET、POST、PUT、DELETE四種請求方式的curl訪問
⑹ 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的用法
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
⑻ 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訪問自身的web
假設表一表二數據A:D列,那麼在表一的E列添加輔助列,在E2單元格輸入以下公式,然後向下填充公式 =IF(COUNTIFS(Sheet2!A:A,A2,Sheet2!B:B,B2,Sheet2!C:C,C2,Sheet2!D:D,D2)>0,"存在","不存在")
⑽ Windows下怎麼使用curl命令
官網下載curl文件。
使用方式一:在curl.exe目錄中使用
解壓下載後的壓縮文件,通過cmd命令進入到curl.exe所在的目錄。
由於使用的是windows 64位 的系統,因此可以使用I386下的curl.exe工具。
進入到該目錄後,執行curl --help測試:
使用方式二:放置在system32中
解壓下載好的文件,拷貝I386/curl.exe文件到C:WindowsSystem32
然後就可以在DOS窗口中任意位置,使用curl命令了。
使用方式三:配置環境變數
在系統高級環境變數中,配置
CURL_HOME-----"你的curl目錄位置curl-7.43.0"
path---- 末尾添加「;%CURL_HOME%I386」
這樣與上面方式二的效果相同。