Linux學習筆記之curl在http的多種用法
阿新 • • 發佈:2021-08-02
curl http_code
curl命令引數很多,這裡只列出我曾經用過、特別是在shell指令碼中用到過的那些。 -v/--verbose 小寫的v引數,用於列印更多資訊,包括髮送的請求資訊,這在除錯指令碼是特別有用。 -m/--max-time <seconds> 指定處理的最大時長 -H/--header <header> 指定請求頭引數 -s/--slient 減少輸出的資訊,比如進度 --connect-timeout <seconds> 指定嘗試連線的最大時長 -x/--proxy <proxyhost[:port]> 指定代理伺服器地址和埠,埠預設為1080 -T/--upload-file <file> 指定上傳檔案路徑 -o/--output <file> 指定輸出檔名稱 -d/--data/--data-ascii <data> 指定POST的內容 --retry <num> 指定重試次數 -e/--referer <URL> 指定引用地址 -I/--head 僅返回頭部資訊,使用HEAD請求 使用示例 示例一 獲取指定網頁 [root@jfht ~]# curl http://www.sunrisecorp.net/ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <meta name="title" content="歡迎您 - 上海騰一" /> <meta name="keyword" content="上海騰一,融合通訊,電子商務,語音通訊,資料通訊,基站工程外包託管,物聯網,網站建設,電子商務解決方案,移動網際網路,簡訊,彩信,呼叫中心,多方會議,PBX,IVR,電子商務策劃方案,裝置代維,網路優化,通訊工程,電信增值,3G" /> <meta name="description" content="上海騰一資訊科技有限公司專注於電信增值、通訊工程、電子商務等領域,擁有近十年的經驗。" /> <title> 歡迎您 - 上海騰一 </title> </body> </html>[root@jfht ~]# 示例二 檢視響應頭資訊 [root@jfht ~]# curl -I http://www.sunrisecorp.net/ HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"17801-1285643951000" Last-Modified: Tue, 28 Sep 2010 03:19:11 GMT Content-Type: text/html Content-Length: 17801 Date: Tue, 12 Oct 2010 12:49:20 GMT [root@jfht ~]# =========================================================================== 通過curl的-w引數我們可以自定義curl的輸出 程式碼如下 # curl -I -m 10 -o /dev/null -s -w %{http_code} IP地址或者網址 上面的輸出是不含換行的,如果需要換行的話,加上\n 程式碼如下 # curl -I -m 10 -o /dev/null -s -w %{http_code} IP地址或者網址 200 # curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" IP地址或者網址 200 ============================================================================ curl下載 在官網下載win32or64.zip,官網下載 下載缺失的dll檔案 用dos進入解壓目錄,執行curl命令即可 命令例項 1、開啟gzip請求 curl -I http://www.sina.com.cn/ -H Accept-Encoding:gzip,defalte 2、監控網頁的響應時間 curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "http://www.kklinux.com" 3. 監控站點可用性 curl -o /dev/null -s -w %{http_code} "http://www.kklinux.com" 4、以http1.0協議請求(預設為http1.1) curl -0 .............. 監控站點首頁下載時間: curl -o /dev/null -s -w ‘%{time_total}’ http://www.miotour.com curl -o /dev/null -s -w ‘%{http_code}’ http://www.miotour.com curl -o /dev/null -s -w %{http_code}:%{time_connect}:%{time_starttransfer}:%{time_total} http://www.miotour.com 結果:2.547 -s 靜默輸出;沒有-s的話就是下面的情況,這是在指令碼等情況下不需要的資訊。 [ec2-user@ip-10-122-250-19 ~]$ curl -o /dev/null -w ‘%{time_total}’ http://www.miotour.com % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 67770 0 67770 0 0 19228 0 –:–:– 0:00:03 –:–:– 20705 結果:3.524 監控首頁各項時間指標: curl -o /dev/null -s -w ‘%{time_connect}:%{time_starttransfer}:%{time_total}’ http://www.miotour.com 結果: 0.244: 1.044: 2.672 時間指標解釋 : time_connect 建立到伺服器的 TCP 連線所用的時間 time_starttransfer 在發出請求之後,Web 伺服器返回資料的第一個位元組所用的時間 time_total 完成請求所用的時間 在 發出請求之後,Web 伺服器處理請求並開始發回資料所用的時間是 (time_starttransfer)1.044 - (time_connect)0.244 = 0.8 秒 客戶機從伺服器下載資料所用的時間是 (time_total)2.672 - (time_starttransfer)1.044 = 1.682 秒 指定特定主機IP地址訪問網站 curl -x 61.135.169.105:80 http://www.baidu.com curl -x 61.135.169.125:80 http://www.baidu.com curl用法大全 -x 指定訪問IP與埠號 curl -x 192.168.1.1:80 http://www.miotour.com -I 僅僅取檔案的http頭部 curl -I -x 192.168.1.1:80 http://www.miotour.com 用referer做的防盜鏈,就可以使用-e來設定 curl -e “http://www.qiecuo.org” http:// www.miotour.com -v -I -H去構造你想要的http頭部 curl -H “X-Forward-For:8.8.8.8″ http://www.miotour.com -v -I curl反饋時間,例如連線時間,下載時間等資訊 curl -w %{time_connect}:%{time_starttransfer}:%{time_total} -s -o /dev/null 將一個檔案儲存到硬碟上,命名為file.html curl -o file.html http://www.miotour.com/index.html 下載index.html檔案, -O是大寫的字母 curl -O http://www.miotour.com/index.html curl提交使用者名稱和密碼 curl http://name:[email protected] curl -u name:passwd http://www.miotour.com -b “cookie” 此引數用來構造一個攜帶cookie的請求