curl get请求_Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选
生活随笔
收集整理的這篇文章主要介紹了
curl get请求_Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
作者 | LightZhang666責(zé)編 | 屠敏出品 | CSDN 博客本篇文章包含了curl的常用案例使用。常見網(wǎng)頁訪問示例基本用法訪問一個網(wǎng)頁:curl?https://www.baidu.com執(zhí)行后,相關(guān)的網(wǎng)頁信息會打印出來。進度條展示有時候我們不需要進度表展示,而需要進度條展示。比如:下載文件時。可以通過 -#, --progress-bar 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190713]#?curl?https://www.baidu.com?|?head?-n1??#?進度表顯示
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed
100??2443??100??2443????0?????0??11662??????0?--:--:--?--:--:--?--:--:--?11688html>
[root@iZ28xbsfvc4Z?20190713]#?curl?-#?https://www.baidu.com?|?head?-n1??#?進度條顯示
########################################################################?100.0%html>靜默模式與錯誤信息打印當(dāng)我們做一些操作時,可能會出現(xiàn)進度表。這時我們可以使用 -s, --silent 靜默模式去掉這些不必要的信息。如果使用 -s, --silent 時,還需要打印錯誤信息,那么還需要使用 -S, --show-error 選項。靜默模式示例[root@iZ28xbsfvc4Z?~]#?curl?https://www.baidu.com?|?head?-n1
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed
100??2443??100??2443????0?????0??11874??????0?--:--:--?--:--:--?--:--:--?11859html>
[root@iZ28xbsfvc4Z?~]#?curl?-s?https://www.baidu.com?|?head?-n1html>靜默模式結(jié)合錯誤信息打印[root@iZ28xbsfvc4Z?20190713]#?curl?-s?https://140.205.16.113/?
[root@iZ28xbsfvc4Z?20190713]#?
[root@iZ28xbsfvc4Z?20190713]#?curl?-sS?https://140.205.16.113/?
curl:?(51)?Unable?to?communicate?securely?with?peer:?requested?domain?name?does?not?match?the?server's?certificate.顯示詳細操作信息使用 -v, --verbose 選項實現(xiàn)。以 > 開頭的行表示curl發(fā)送的"header data";< 表示curl接收到的通常情況下隱藏的"header data";而以 * 開頭的行表示curl提供的附加信息。[root@iZ28xbsfvc4Z?20190712]#?curl?-v?https://www.baidu.com
*?About?to?connect()?to?www.baidu.com?port?443?(#0)
*???Trying?180.101.49.12...
*?Connected?to?www.baidu.com?(180.101.49.12)?port?443?(#0)
*?Initializing?NSS?with?certpath:?sql:/etc/pki/nssdb
*???CAfile:?/etc/pki/tls/certs/ca-bundle.crt
??CApath:?none
*?SSL?connection?using?TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
*?Server?certificate:
*?????subject:?CN=baidu.com,O="Beijing?Baidu?Netcom?Science?Technology?Co.,?Ltd",OU=service?operation?department,L=beijing,ST=beijing,C=CN
*?????start?date:?May?09?01:22:02?2019?GMT
*?????expire?date:?Jun?25?05:31:02?2020?GMT
*?????common?name:?baidu.com
*?????issuer:?CN=GlobalSign?Organization?Validation?CA?-?SHA256?-?G2,O=GlobalSign?nv-sa,C=BE
>?GET?/?HTTP/1.1
>?User-Agent:?curl/7.29.0
>?Host:?www.baidu.com
>?Accept:?*/*
>?
1.1?200?OK
private,?no-cache,?no-store,?proxy-revalidate,?no-transform
2443
text/html
Date:?Fri,?12?Jul?2019?08:26:23?GMT
"588603eb-98b"
23?Jan?2017?13:23:55?GMT
1.0.8.18
Set-Cookie:?BDORZ=27315;?max-age=86400;?domain=.baidu.com;?path=/
html>
………………??#?curl?網(wǎng)頁的具體信息指定訪問的請求方法當(dāng)然curl默認使用GET方式訪問。使用了 -d, --data 選項,那么會默認為 POST方法訪問。如果此時還想實現(xiàn) GET 訪問,那么可以使用 -G, --get 選項強制curl 使用GET方法訪問。同時 -X, --request 選項也可以指定訪問方法。POST請求和數(shù)據(jù)傳輸為了抓包查看信息所以使用了 --local-port [-num] 選項,在實際應(yīng)用中不需要該選項。[root@iZ28xbsfvc4Z?~]#?curl?-sv?--local-port?9000?-X?POST?-d?'user=zhang&pwd=123456'?http://www.zhangblog.com/2019/06/24/domainexpire/?|?head?-n1?##?或者
[root@iZ28xbsfvc4Z?~]#?curl?-sv?--local-port?9000?-d?'user=zhang&pwd=123456'?http://www.zhangblog.com/2019/06/24/domainexpire/?|?head?-n1*?About?to?connect()?to?www.zhangblog.com?port?80?(#0)*???Trying?120.27.48.179...*?Connected?to?www.zhangblog.com?(120.27.48.179)?port?80?(#0)>?POST?/2019/06/24/domainexpire/?HTTP/1.1??#?POST?請求方法>?User-Agent:?curl/7.29.0>?Host:?www.zhangblog.com>?Accept:?*/*>?Content-Length:?21>?Content-Type:?application/x-www-form-urlencoded>?
}?[data?not?shown]*?upload?completely?sent?off:?21?out?of?21?bytesHTTP/1.1?405?Not?Allowed
Server:?nginx/1.14.2
Date:?Thu,?18?Jul?2019?07:56:23?GMT
Content-Type:?text/html
Content-Length:?173
Connection:?keep-alive
{?[data?not?shown]
*?Connection?#0?to?host?www.zhangblog.com?left?intact
<html>抓包信息[root@iZ28xbsfvc4Z?tcpdump]#?tcpdump?-i?any?port?9000?-A?-s?0指定請求方法curl?-vs?-X?POST?https://www.baidu.com?|?head?-n1curl?-vs?-X?PUT?https://www.baidu.com?|?head?-n1保存訪問網(wǎng)頁使用linux的重定向功能保存curl?www.baidu.com?>>?baidu.html使用curl的大O選項通過 -O, --remote-name 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190712]#?curl?-O?https://www.baidu.com???#?使用了?-O?選項,必須指定到具體的文件??錯誤使用curl:?Remote?file?name?has?no?length!curl:?try?'curl?--help'?or?'curl?--manual'?for?more?information
[root@iZ28xbsfvc4Z?20190712]#?curl?-O?https://www.baidu.com/index.html???#?使用了?-O?選項,必須指定到具體的文件??正確使用
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100??2443??100??2443????0?????0??13289??????0?--:--:--?--:--:--?--:--:--?13349使用curl的小o選項通過 -o, --output 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190713]#?curl?-o?sina.txt?https://www.sina.com.cn/???#?單個操作
[root@iZ28xbsfvc4Z?20190713]#?ll
-rw-r--r--?1?root?root???154?Jul?13?21:06?sina.txt
[root@iZ28xbsfvc4Z?20190703]#?curl?"http://www.{baidu,douban}.com"?-o?"site_#1.txt"??#?批量操作,注意curl?的地址需要用引號括起來
[1/2]:?http://www.baidu.com?-->?site_baidu.txt
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100??2381??100??2381????0?????0??46045??????0?--:--:--?--:--:--?--:--:--?46686
[2/2]:?http://www.douban.com?-->?site_douban.txt100???162??100???162????0?????0???3173??????0?--:--:--?--:--:--?--:--:--??3173
[root@iZ28xbsfvc4Z?20190703]#?
[root@iZ28xbsfvc4Z?20190703]#?ll
total?220
-rw-r--r--?1?root?root??2381?Jul??4?16:53?site_baidu.txt
-rw-r--r--?1?root?root???162?Jul??4?16:53?site_douban.txt允許不安全訪問當(dāng)我們使用curl進行https訪問訪問時,如果SSL證書是我們自簽發(fā)的證書,那么這個時候需要使用 -k, --insecure 選項,允許不安全的訪問。[root@iZ28xbsfvc4Z?~]#?curl?https://140.205.16.113/??#?被拒絕
curl:?(51)?Unable?to?communicate?securely?with?peer:?requested?domain?name?does?not?match?the?server's?certificate.
[root@iZ28xbsfvc4Z?~]#?
[root@iZ28xbsfvc4Z?~]#?curl?-k?https://140.205.16.113/??#?允許執(zhí)行不安全的證書連接HTML?PUBLIC?"-//IETF//DTD?HTML?2.0//EN"><html><head><title>403?Forbiddentitle>head><body?bgcolor="white"><h1>403?Forbiddenh1><p>You?don't?have?permission?to?access?the?URL?on?this?server.<hr/>Powered?by?Tenginebody>html>獲取HTTP響應(yīng)狀態(tài)碼在腳本中,這是很常見的測試網(wǎng)站是否正常的用法。通過 -w, --write-out 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190713]#?curl?-o?/dev/null?-s?-w?%{http_code}?https://baidu.com302[root@iZ28xbsfvc4Z?20190713]#?
[root@iZ28xbsfvc4Z?20190713]#?
[root@iZ28xbsfvc4Z?20190713]#?curl?-o?/dev/null?-s?-w?%{http_code}?https://www.baidu.com200[root@iZ28xbsfvc4Z?20190713]#指定proxy服務(wù)器以及其端口很多時候上網(wǎng)需要用到代理服務(wù)器(比如是使用代理服務(wù)器上網(wǎng)或者因為使用curl別人網(wǎng)站而被別人屏蔽IP地址的時候),幸運的是curl通過使用 -x, --proxy 選項來支持設(shè)置代理。curl?-x?192.168.100.100:1080?https://www.baidu.com模仿瀏覽器訪問有些網(wǎng)站需要使用特定的瀏覽器去訪問他們,有些還需要使用某些特定的瀏覽器版本。我們可以通過 -A, --user-agent 或者 -H, --header 選項實現(xiàn)模擬瀏覽器訪問。curl?-A?"Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?Chrome/75.0.3770.999"?http://www.zhangblog.com/2019/06/24/domainexpire/?
或者
curl?-H?'User-Agent:?Mozilla/5.0'?http://www.zhangblog.com/2019/06/24/domainexpire/偽造referer(盜鏈)有些網(wǎng)站的網(wǎng)頁對http訪問的鏈接來源做了訪問限制,這些限制幾乎都是通過referer來實現(xiàn)的。比如:要求是先訪問首頁,然后再訪問首頁中的郵箱頁面,這時訪問郵箱的referer地址就是訪問首頁成功后的頁面地址。如果服務(wù)器發(fā)現(xiàn)對郵箱頁面訪問的referer地址不是首頁的地址,就斷定那是個盜連了。可以通過 -e, --referer 或則 -H, --header 實現(xiàn)偽造 referer 。curl?-e?'https://www.baidu.com'?http://www.zhangblog.com/2019/06/24/domainexpire/
或者
curl?-H?'Referer:?https://www.baidu.com'?http://www.zhangblog.com/2019/06/24/domainexpire/?構(gòu)造HTTP請求頭可以通過 -H, --header 實現(xiàn)構(gòu)造http請求頭。curl?-H?'Connection:?keep-alive'?-H?'Referer:?https://sina.com.cn'?-H?'User-Agent:?Mozilla/1.0'?http://www.zhangblog.com/2019/06/24/domainexpire/?保存響應(yīng)頭信息可以通過 -D, --dump-header 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190703]#?curl?-D?baidu_header.info?www.baidu.com?
………………[root@iZ28xbsfvc4Z?20190703]#?lltotal?4-rw-r--r--?1?root?root?400?Jul??3?10:11?baidu_header.info??#?生成的頭文件限時訪問--connect-timeout 連接服務(wù)端的超時時間。這只限制了連接階段,一旦curl連接了此選項就不再使用了。#?當(dāng)前?https://www.zhangXX.com?是國外服務(wù)器,訪問受限
[root@iZ28xbsfvc4Z?~]#?curl?--connect-timeout?10?https://www.zhangXX.com?|?head
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed0?????0????0?????0????0?????0??????0??????0?--:--:--??0:00:10?--:--:--?????0curl:?(28)?Connection?timed?out?after?10001?milliseconds-m, --max-time 允許整個操作花費的最大時間(以秒為單位)。這對于防止由于網(wǎng)絡(luò)或鏈接變慢而導(dǎo)致批處理作業(yè)掛起數(shù)小時非常有用。[root@iZ28xbsfvc4Z?~]#?curl?-m?10?--limit-rate?5?http://www.baidu.com/?|?head??#?超過10秒后,斷開連接
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed
??2??2381????2????50????0?????0??????4??????0??0:09:55??0:00:10??0:09:45?????4
curl:?(28)?Operation?timed?out?after?10103?milliseconds?with?50?out?of?2381?bytes?receivedhtml><html>?<head><met
###?或
[root@iZ28xbsfvc4Z?~]#?curl?-m?10?https://www.zhangXX.com?|?head???#?超過10秒后,斷開連接
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??CurrentDload??Upload???Total???Spent????Left??Speed0?????0????0?????0????0?????0??????0??????0?--:--:--??0:00:10?--:--:--?????0curl:?(28)?Connection?timed?out?after?10001?milliseconds顯示抓取錯誤當(dāng)我們請求訪問失敗時或者沒有該網(wǎng)頁時,網(wǎng)站一般都會給出一個錯誤的提示頁面。如果我們不需要這個錯誤頁面,只想得到簡潔的錯誤信息。那么可以通過 -f, --fail 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190713]#?curl?http://www.zhangblog.com/201912312<html><head><title>404?Not?Foundtitle>head><body?bgcolor="white"><center><h1>404?Not?Foundh1>center><hr><center>nginx/1.14.2center>body>html>
[root@iZ28xbsfvc4Z?20190713]#?curl?-f?http://www.zhangblog.com/201912312??#?得到更簡潔的錯誤信息
curl:?(22)?The?requested?URL?returned?error:?404?Not?Found表單登錄與cookie使用參見「Linux curl 表單登錄或提交與cookie使用」:http://www.zhangblog.com/2019/07/20/curl03/文件上傳與下載涉及 FTP 服務(wù),簡單快速搭建可參考:《CentOS7下安裝FTP服務(wù)》「https://www.cnblogs.com/zhi-leaf/p/5983550.html」文件下載網(wǎng)頁文件下載#?以進度條展示,而不是進度表展示
[root@iZ28xbsfvc4Z?20190715]#?curl?-#?-o?tmp.data2?http://www.zhangblog.com/uploads/tmp/tmp.data########################################################################?100.0%FTP文件下載說明1:其中 ftp1 用戶是ftp服務(wù)端的賬號,具體家目錄是:/mnt/ftp1說明2:當(dāng)我們使用 curl 通過 FTP 進行下載時,后面跟的路徑都是:當(dāng)前使用的 ftp 賬號家目錄為基礎(chǔ)的相對路徑,然后找到的目標(biāo)文件。示例1#?其中 tmp.data 的絕對路徑是:/mnt/ftp1/tmpdata/tmp.data ;ftp1 賬號的家目錄是:/mnt/ftp1#?說明:/tmpdata/tmp.data 這個路徑是針對 ftp1 賬號的家目錄而言的
[yun@nginx_proxy01?20190715]$?curl?-O?ftp://ftp1:123456@172.16.1.195:21/tmpdata/tmp.data??#?或者
[yun@nginx_proxy01?20190715]$?curl?-O?-u?ftp1:123456?ftp://172.16.1.195:21/tmpdata/tmp.data
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100?2048M??100?2048M????0?????0??39.5M??????0??0:00:51??0:00:51?--:--:--??143M示例2#?其中 nginx-1.14.2.tar.gz 的絕對路徑是:/tmp/nginx-1.14.2.tar.gz ;ftp1 賬號的家目錄是:/mnt/ftp1#?說明:/../../tmp/nginx-1.14.2.tar.gz 這個路徑是針對 ftp1 賬號的家目錄而言的
[yun@nginx_proxy01?20190715]$?curl?-O?ftp://ftp1:123456@172.16.1.195:21/../../tmp/nginx-1.14.2.tar.gz??#?或者
[yun@nginx_proxy01?20190715]$?curl?-O?-u?ftp1:123456?ftp://172.16.1.195:21/../../tmp/nginx-1.14.2.tar.gz
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100??991k??100??991k????0?????0??5910k??????0?--:--:--?--:--:--?--:--:--?5937k文件上傳FTP文件上傳可以通過 -T, --upload-file 選項實現(xiàn)。說明1:其中 ftp1 用戶是ftp服務(wù)端的賬號,具體家目錄是:/mnt/ftp1#?其中 tmp_client.data 是客戶端本地文件;?#?/tmpdata/?這個路徑是針對 ftp1 賬號的家目錄而言的,且上傳時該目錄必須是存在的,否則上傳失敗。#?因此上傳后文件在ftp服務(wù)端的絕對路徑是:/mnt/ftp1/tmpdata/tmp_client.data
[yun@nginx_proxy01?20190715]$?curl?-T?tmp_client.data?ftp://ftp1:123456@172.16.1.195:21/tmpdata/#?或者
[yun@nginx_proxy01?20190715]$?curl?-T?tmp_client.data?-u?ftp1:123456?ftp://172.16.1.195:21/tmpdata/
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100?2048M????0?????0??100?2048M??????0??95.4M??0:00:21??0:00:21?--:--:--?49.3M斷點續(xù)傳使用 -C, --continue-at 選項實現(xiàn)。其中使用 “-C -”「注意有空格和無空格的情況」,告訴curl自動找出在哪里/如何恢復(fù)傳輸。網(wǎng)頁端斷點續(xù)傳下載curl?-C?-?-o?tmp.data?http://www.zhangblog.com/uploads/tmp/tmp.data???#?下載一個?2G?的文件FTP斷點續(xù)傳下載細節(jié)就不多說了,可參見上面的「FTP文件下載」curl?-C?-?-o?tmp.data1?ftp://ftp1:123456@172.16.1.195:21/tmpdata/tmp.data??#?下載一個?2G?的文件#?或則
curl?-C?-?-o?tmp.data1?-u?ftp1:123456?ftp://172.16.1.195:21/tmpdata/tmp.data??#?下載一個?2G?的文件分段下載有時文件比較大,或者難以迅速傳輸,而利用分段傳輸,可以實現(xiàn)穩(wěn)定、高效并且有保障的傳輸,更具有實用性,同時容易對差錯文件進行更正。可使用 -r, --range 選項實現(xiàn)。如下示例使用了同一張圖片,大小為 18196 字節(jié)。網(wǎng)頁端分段下載分段下載[root@iZ28xbsfvc4Z?20190715]#?curl?-I?http://www.zhangblog.com/uploads/hexo/00.jpg???#?查看文件大小
HTTP/1.1?200?OKServer:?nginx/1.14.2Date:?Mon,?15?Jul?2019?03:23:44?GMTContent-Type:?image/jpegContent-Length:?18196???#?文件大小Last-Modified:?Fri,?05?Jul?2019?08:04:58?GMTConnection:?keep-aliveETag:?"5d1f04aa-4714"Accept-Ranges:?bytes###?分段下載一個文件
[root@iZ28xbsfvc4Z?20190715]#?curl?-r?0-499???-o?00-jpg.part1?http://www.zhangblog.com/uploads/hexo/00.jpg
[root@iZ28xbsfvc4Z?20190715]#?curl?-r?500-999?-o?00-jpg.part2?http://www.zhangblog.com/uploads/hexo/00.jpg
[root@iZ28xbsfvc4Z?20190715]#?curl?-r?1000-???-o?00-jpg.part3?http://www.zhangblog.com/uploads/hexo/00.jpg查看下載文件[root@iZ28xbsfvc4Z?20190715]#?lltotal?36-rw-r--r--?1?root?root???500?Jul?15?11:25?00-jpg.part1-rw-r--r--?1?root?root???500?Jul?15?11:25?00-jpg.part2-rw-r--r--?1?root?root?17196?Jul?15?11:26?00-jpg.part3文件合并[root@iZ28xbsfvc4Z?20190715]#?cat?00-jpg.part1?00-jpg.part2?00-jpg.part3?>?00.jpg[root@iZ28xbsfvc4Z?20190715]#?ll?00.jpgtotal?56-rw-r--r--?1?root?root?18196?Jul?15?11:29?00.jpgFTP分段下載分段下載[yun@nginx_proxy01?20190715]$?curl?-r?0-499???-o?00-jpg.part1?ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg
[yun@nginx_proxy01?20190715]$?curl?-r?500-999?-o?00-jpg.part2?ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg
[yun@nginx_proxy01?20190715]$?curl?-r?1000-???-o?00-jpg.part3?ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg查看下載文件[yun@nginx_proxy01?20190715]$?ll?00-jpg.part*-rw-rw-r--?1?yun?yun???500?Jul?15?17:59?00-jpg.part1-rw-rw-r--?1?yun?yun???500?Jul?15?18:00?00-jpg.part2-rw-rw-r--?1?yun?yun?17196?Jul?15?18:00?00-jpg.part3文件合并[yun@nginx_proxy01?20190715]$?cat?00-jpg.part1?00-jpg.part2?00-jpg.part3?>?00.jpg
[yun@nginx_proxy01?20190715]$?ll?00.jpg?
-rw-rw-r--?1?yun?yun?18196?Jul?15?18:02?00.jpg聲明:本文為CSDN博主「LightZhang666」的原創(chuàng)文章,版權(quán)歸作者所有,如需轉(zhuǎn)載請聯(lián)系作者。原文:https://blog.csdn.net/woshizhangliang999/article/details/98946071【End】
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed
100??2443??100??2443????0?????0??11662??????0?--:--:--?--:--:--?--:--:--?11688html>
[root@iZ28xbsfvc4Z?20190713]#?curl?-#?https://www.baidu.com?|?head?-n1??#?進度條顯示
########################################################################?100.0%html>靜默模式與錯誤信息打印當(dāng)我們做一些操作時,可能會出現(xiàn)進度表。這時我們可以使用 -s, --silent 靜默模式去掉這些不必要的信息。如果使用 -s, --silent 時,還需要打印錯誤信息,那么還需要使用 -S, --show-error 選項。靜默模式示例[root@iZ28xbsfvc4Z?~]#?curl?https://www.baidu.com?|?head?-n1
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed
100??2443??100??2443????0?????0??11874??????0?--:--:--?--:--:--?--:--:--?11859html>
[root@iZ28xbsfvc4Z?~]#?curl?-s?https://www.baidu.com?|?head?-n1html>靜默模式結(jié)合錯誤信息打印[root@iZ28xbsfvc4Z?20190713]#?curl?-s?https://140.205.16.113/?
[root@iZ28xbsfvc4Z?20190713]#?
[root@iZ28xbsfvc4Z?20190713]#?curl?-sS?https://140.205.16.113/?
curl:?(51)?Unable?to?communicate?securely?with?peer:?requested?domain?name?does?not?match?the?server's?certificate.顯示詳細操作信息使用 -v, --verbose 選項實現(xiàn)。以 > 開頭的行表示curl發(fā)送的"header data";< 表示curl接收到的通常情況下隱藏的"header data";而以 * 開頭的行表示curl提供的附加信息。[root@iZ28xbsfvc4Z?20190712]#?curl?-v?https://www.baidu.com
*?About?to?connect()?to?www.baidu.com?port?443?(#0)
*???Trying?180.101.49.12...
*?Connected?to?www.baidu.com?(180.101.49.12)?port?443?(#0)
*?Initializing?NSS?with?certpath:?sql:/etc/pki/nssdb
*???CAfile:?/etc/pki/tls/certs/ca-bundle.crt
??CApath:?none
*?SSL?connection?using?TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
*?Server?certificate:
*?????subject:?CN=baidu.com,O="Beijing?Baidu?Netcom?Science?Technology?Co.,?Ltd",OU=service?operation?department,L=beijing,ST=beijing,C=CN
*?????start?date:?May?09?01:22:02?2019?GMT
*?????expire?date:?Jun?25?05:31:02?2020?GMT
*?????common?name:?baidu.com
*?????issuer:?CN=GlobalSign?Organization?Validation?CA?-?SHA256?-?G2,O=GlobalSign?nv-sa,C=BE
>?GET?/?HTTP/1.1
>?User-Agent:?curl/7.29.0
>?Host:?www.baidu.com
>?Accept:?*/*
>?
1.1?200?OK
private,?no-cache,?no-store,?proxy-revalidate,?no-transform
2443
text/html
Date:?Fri,?12?Jul?2019?08:26:23?GMT
"588603eb-98b"
23?Jan?2017?13:23:55?GMT
1.0.8.18
Set-Cookie:?BDORZ=27315;?max-age=86400;?domain=.baidu.com;?path=/
html>
………………??#?curl?網(wǎng)頁的具體信息指定訪問的請求方法當(dāng)然curl默認使用GET方式訪問。使用了 -d, --data 選項,那么會默認為 POST方法訪問。如果此時還想實現(xiàn) GET 訪問,那么可以使用 -G, --get 選項強制curl 使用GET方法訪問。同時 -X, --request 選項也可以指定訪問方法。POST請求和數(shù)據(jù)傳輸為了抓包查看信息所以使用了 --local-port [-num] 選項,在實際應(yīng)用中不需要該選項。[root@iZ28xbsfvc4Z?~]#?curl?-sv?--local-port?9000?-X?POST?-d?'user=zhang&pwd=123456'?http://www.zhangblog.com/2019/06/24/domainexpire/?|?head?-n1?##?或者
[root@iZ28xbsfvc4Z?~]#?curl?-sv?--local-port?9000?-d?'user=zhang&pwd=123456'?http://www.zhangblog.com/2019/06/24/domainexpire/?|?head?-n1*?About?to?connect()?to?www.zhangblog.com?port?80?(#0)*???Trying?120.27.48.179...*?Connected?to?www.zhangblog.com?(120.27.48.179)?port?80?(#0)>?POST?/2019/06/24/domainexpire/?HTTP/1.1??#?POST?請求方法>?User-Agent:?curl/7.29.0>?Host:?www.zhangblog.com>?Accept:?*/*>?Content-Length:?21>?Content-Type:?application/x-www-form-urlencoded>?
}?[data?not?shown]*?upload?completely?sent?off:?21?out?of?21?bytesHTTP/1.1?405?Not?Allowed
Server:?nginx/1.14.2
Date:?Thu,?18?Jul?2019?07:56:23?GMT
Content-Type:?text/html
Content-Length:?173
Connection:?keep-alive
{?[data?not?shown]
*?Connection?#0?to?host?www.zhangblog.com?left?intact
<html>抓包信息[root@iZ28xbsfvc4Z?tcpdump]#?tcpdump?-i?any?port?9000?-A?-s?0指定請求方法curl?-vs?-X?POST?https://www.baidu.com?|?head?-n1curl?-vs?-X?PUT?https://www.baidu.com?|?head?-n1保存訪問網(wǎng)頁使用linux的重定向功能保存curl?www.baidu.com?>>?baidu.html使用curl的大O選項通過 -O, --remote-name 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190712]#?curl?-O?https://www.baidu.com???#?使用了?-O?選項,必須指定到具體的文件??錯誤使用curl:?Remote?file?name?has?no?length!curl:?try?'curl?--help'?or?'curl?--manual'?for?more?information
[root@iZ28xbsfvc4Z?20190712]#?curl?-O?https://www.baidu.com/index.html???#?使用了?-O?選項,必須指定到具體的文件??正確使用
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100??2443??100??2443????0?????0??13289??????0?--:--:--?--:--:--?--:--:--?13349使用curl的小o選項通過 -o, --output 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190713]#?curl?-o?sina.txt?https://www.sina.com.cn/???#?單個操作
[root@iZ28xbsfvc4Z?20190713]#?ll
-rw-r--r--?1?root?root???154?Jul?13?21:06?sina.txt
[root@iZ28xbsfvc4Z?20190703]#?curl?"http://www.{baidu,douban}.com"?-o?"site_#1.txt"??#?批量操作,注意curl?的地址需要用引號括起來
[1/2]:?http://www.baidu.com?-->?site_baidu.txt
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100??2381??100??2381????0?????0??46045??????0?--:--:--?--:--:--?--:--:--?46686
[2/2]:?http://www.douban.com?-->?site_douban.txt100???162??100???162????0?????0???3173??????0?--:--:--?--:--:--?--:--:--??3173
[root@iZ28xbsfvc4Z?20190703]#?
[root@iZ28xbsfvc4Z?20190703]#?ll
total?220
-rw-r--r--?1?root?root??2381?Jul??4?16:53?site_baidu.txt
-rw-r--r--?1?root?root???162?Jul??4?16:53?site_douban.txt允許不安全訪問當(dāng)我們使用curl進行https訪問訪問時,如果SSL證書是我們自簽發(fā)的證書,那么這個時候需要使用 -k, --insecure 選項,允許不安全的訪問。[root@iZ28xbsfvc4Z?~]#?curl?https://140.205.16.113/??#?被拒絕
curl:?(51)?Unable?to?communicate?securely?with?peer:?requested?domain?name?does?not?match?the?server's?certificate.
[root@iZ28xbsfvc4Z?~]#?
[root@iZ28xbsfvc4Z?~]#?curl?-k?https://140.205.16.113/??#?允許執(zhí)行不安全的證書連接HTML?PUBLIC?"-//IETF//DTD?HTML?2.0//EN"><html><head><title>403?Forbiddentitle>head><body?bgcolor="white"><h1>403?Forbiddenh1><p>You?don't?have?permission?to?access?the?URL?on?this?server.<hr/>Powered?by?Tenginebody>html>獲取HTTP響應(yīng)狀態(tài)碼在腳本中,這是很常見的測試網(wǎng)站是否正常的用法。通過 -w, --write-out 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190713]#?curl?-o?/dev/null?-s?-w?%{http_code}?https://baidu.com302[root@iZ28xbsfvc4Z?20190713]#?
[root@iZ28xbsfvc4Z?20190713]#?
[root@iZ28xbsfvc4Z?20190713]#?curl?-o?/dev/null?-s?-w?%{http_code}?https://www.baidu.com200[root@iZ28xbsfvc4Z?20190713]#指定proxy服務(wù)器以及其端口很多時候上網(wǎng)需要用到代理服務(wù)器(比如是使用代理服務(wù)器上網(wǎng)或者因為使用curl別人網(wǎng)站而被別人屏蔽IP地址的時候),幸運的是curl通過使用 -x, --proxy 選項來支持設(shè)置代理。curl?-x?192.168.100.100:1080?https://www.baidu.com模仿瀏覽器訪問有些網(wǎng)站需要使用特定的瀏覽器去訪問他們,有些還需要使用某些特定的瀏覽器版本。我們可以通過 -A, --user-agent 或者 -H, --header 選項實現(xiàn)模擬瀏覽器訪問。curl?-A?"Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?Chrome/75.0.3770.999"?http://www.zhangblog.com/2019/06/24/domainexpire/?
或者
curl?-H?'User-Agent:?Mozilla/5.0'?http://www.zhangblog.com/2019/06/24/domainexpire/偽造referer(盜鏈)有些網(wǎng)站的網(wǎng)頁對http訪問的鏈接來源做了訪問限制,這些限制幾乎都是通過referer來實現(xiàn)的。比如:要求是先訪問首頁,然后再訪問首頁中的郵箱頁面,這時訪問郵箱的referer地址就是訪問首頁成功后的頁面地址。如果服務(wù)器發(fā)現(xiàn)對郵箱頁面訪問的referer地址不是首頁的地址,就斷定那是個盜連了。可以通過 -e, --referer 或則 -H, --header 實現(xiàn)偽造 referer 。curl?-e?'https://www.baidu.com'?http://www.zhangblog.com/2019/06/24/domainexpire/
或者
curl?-H?'Referer:?https://www.baidu.com'?http://www.zhangblog.com/2019/06/24/domainexpire/?構(gòu)造HTTP請求頭可以通過 -H, --header 實現(xiàn)構(gòu)造http請求頭。curl?-H?'Connection:?keep-alive'?-H?'Referer:?https://sina.com.cn'?-H?'User-Agent:?Mozilla/1.0'?http://www.zhangblog.com/2019/06/24/domainexpire/?保存響應(yīng)頭信息可以通過 -D, --dump-header 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190703]#?curl?-D?baidu_header.info?www.baidu.com?
………………[root@iZ28xbsfvc4Z?20190703]#?lltotal?4-rw-r--r--?1?root?root?400?Jul??3?10:11?baidu_header.info??#?生成的頭文件限時訪問--connect-timeout 連接服務(wù)端的超時時間。這只限制了連接階段,一旦curl連接了此選項就不再使用了。#?當(dāng)前?https://www.zhangXX.com?是國外服務(wù)器,訪問受限
[root@iZ28xbsfvc4Z?~]#?curl?--connect-timeout?10?https://www.zhangXX.com?|?head
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed0?????0????0?????0????0?????0??????0??????0?--:--:--??0:00:10?--:--:--?????0curl:?(28)?Connection?timed?out?after?10001?milliseconds-m, --max-time 允許整個操作花費的最大時間(以秒為單位)。這對于防止由于網(wǎng)絡(luò)或鏈接變慢而導(dǎo)致批處理作業(yè)掛起數(shù)小時非常有用。[root@iZ28xbsfvc4Z?~]#?curl?-m?10?--limit-rate?5?http://www.baidu.com/?|?head??#?超過10秒后,斷開連接
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed
??2??2381????2????50????0?????0??????4??????0??0:09:55??0:00:10??0:09:45?????4
curl:?(28)?Operation?timed?out?after?10103?milliseconds?with?50?out?of?2381?bytes?receivedhtml><html>?<head><met
###?或
[root@iZ28xbsfvc4Z?~]#?curl?-m?10?https://www.zhangXX.com?|?head???#?超過10秒后,斷開連接
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??CurrentDload??Upload???Total???Spent????Left??Speed0?????0????0?????0????0?????0??????0??????0?--:--:--??0:00:10?--:--:--?????0curl:?(28)?Connection?timed?out?after?10001?milliseconds顯示抓取錯誤當(dāng)我們請求訪問失敗時或者沒有該網(wǎng)頁時,網(wǎng)站一般都會給出一個錯誤的提示頁面。如果我們不需要這個錯誤頁面,只想得到簡潔的錯誤信息。那么可以通過 -f, --fail 選項實現(xiàn)。[root@iZ28xbsfvc4Z?20190713]#?curl?http://www.zhangblog.com/201912312<html><head><title>404?Not?Foundtitle>head><body?bgcolor="white"><center><h1>404?Not?Foundh1>center><hr><center>nginx/1.14.2center>body>html>
[root@iZ28xbsfvc4Z?20190713]#?curl?-f?http://www.zhangblog.com/201912312??#?得到更簡潔的錯誤信息
curl:?(22)?The?requested?URL?returned?error:?404?Not?Found表單登錄與cookie使用參見「Linux curl 表單登錄或提交與cookie使用」:http://www.zhangblog.com/2019/07/20/curl03/文件上傳與下載涉及 FTP 服務(wù),簡單快速搭建可參考:《CentOS7下安裝FTP服務(wù)》「https://www.cnblogs.com/zhi-leaf/p/5983550.html」文件下載網(wǎng)頁文件下載#?以進度條展示,而不是進度表展示
[root@iZ28xbsfvc4Z?20190715]#?curl?-#?-o?tmp.data2?http://www.zhangblog.com/uploads/tmp/tmp.data########################################################################?100.0%FTP文件下載說明1:其中 ftp1 用戶是ftp服務(wù)端的賬號,具體家目錄是:/mnt/ftp1說明2:當(dāng)我們使用 curl 通過 FTP 進行下載時,后面跟的路徑都是:當(dāng)前使用的 ftp 賬號家目錄為基礎(chǔ)的相對路徑,然后找到的目標(biāo)文件。示例1#?其中 tmp.data 的絕對路徑是:/mnt/ftp1/tmpdata/tmp.data ;ftp1 賬號的家目錄是:/mnt/ftp1#?說明:/tmpdata/tmp.data 這個路徑是針對 ftp1 賬號的家目錄而言的
[yun@nginx_proxy01?20190715]$?curl?-O?ftp://ftp1:123456@172.16.1.195:21/tmpdata/tmp.data??#?或者
[yun@nginx_proxy01?20190715]$?curl?-O?-u?ftp1:123456?ftp://172.16.1.195:21/tmpdata/tmp.data
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100?2048M??100?2048M????0?????0??39.5M??????0??0:00:51??0:00:51?--:--:--??143M示例2#?其中 nginx-1.14.2.tar.gz 的絕對路徑是:/tmp/nginx-1.14.2.tar.gz ;ftp1 賬號的家目錄是:/mnt/ftp1#?說明:/../../tmp/nginx-1.14.2.tar.gz 這個路徑是針對 ftp1 賬號的家目錄而言的
[yun@nginx_proxy01?20190715]$?curl?-O?ftp://ftp1:123456@172.16.1.195:21/../../tmp/nginx-1.14.2.tar.gz??#?或者
[yun@nginx_proxy01?20190715]$?curl?-O?-u?ftp1:123456?ftp://172.16.1.195:21/../../tmp/nginx-1.14.2.tar.gz
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100??991k??100??991k????0?????0??5910k??????0?--:--:--?--:--:--?--:--:--?5937k文件上傳FTP文件上傳可以通過 -T, --upload-file 選項實現(xiàn)。說明1:其中 ftp1 用戶是ftp服務(wù)端的賬號,具體家目錄是:/mnt/ftp1#?其中 tmp_client.data 是客戶端本地文件;?#?/tmpdata/?這個路徑是針對 ftp1 賬號的家目錄而言的,且上傳時該目錄必須是存在的,否則上傳失敗。#?因此上傳后文件在ftp服務(wù)端的絕對路徑是:/mnt/ftp1/tmpdata/tmp_client.data
[yun@nginx_proxy01?20190715]$?curl?-T?tmp_client.data?ftp://ftp1:123456@172.16.1.195:21/tmpdata/#?或者
[yun@nginx_proxy01?20190715]$?curl?-T?tmp_client.data?-u?ftp1:123456?ftp://172.16.1.195:21/tmpdata/
??%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??Current
?????????????????????????????????Dload??Upload???Total???Spent????Left??Speed100?2048M????0?????0??100?2048M??????0??95.4M??0:00:21??0:00:21?--:--:--?49.3M斷點續(xù)傳使用 -C, --continue-at 選項實現(xiàn)。其中使用 “-C -”「注意有空格和無空格的情況」,告訴curl自動找出在哪里/如何恢復(fù)傳輸。網(wǎng)頁端斷點續(xù)傳下載curl?-C?-?-o?tmp.data?http://www.zhangblog.com/uploads/tmp/tmp.data???#?下載一個?2G?的文件FTP斷點續(xù)傳下載細節(jié)就不多說了,可參見上面的「FTP文件下載」curl?-C?-?-o?tmp.data1?ftp://ftp1:123456@172.16.1.195:21/tmpdata/tmp.data??#?下載一個?2G?的文件#?或則
curl?-C?-?-o?tmp.data1?-u?ftp1:123456?ftp://172.16.1.195:21/tmpdata/tmp.data??#?下載一個?2G?的文件分段下載有時文件比較大,或者難以迅速傳輸,而利用分段傳輸,可以實現(xiàn)穩(wěn)定、高效并且有保障的傳輸,更具有實用性,同時容易對差錯文件進行更正。可使用 -r, --range 選項實現(xiàn)。如下示例使用了同一張圖片,大小為 18196 字節(jié)。網(wǎng)頁端分段下載分段下載[root@iZ28xbsfvc4Z?20190715]#?curl?-I?http://www.zhangblog.com/uploads/hexo/00.jpg???#?查看文件大小
HTTP/1.1?200?OKServer:?nginx/1.14.2Date:?Mon,?15?Jul?2019?03:23:44?GMTContent-Type:?image/jpegContent-Length:?18196???#?文件大小Last-Modified:?Fri,?05?Jul?2019?08:04:58?GMTConnection:?keep-aliveETag:?"5d1f04aa-4714"Accept-Ranges:?bytes###?分段下載一個文件
[root@iZ28xbsfvc4Z?20190715]#?curl?-r?0-499???-o?00-jpg.part1?http://www.zhangblog.com/uploads/hexo/00.jpg
[root@iZ28xbsfvc4Z?20190715]#?curl?-r?500-999?-o?00-jpg.part2?http://www.zhangblog.com/uploads/hexo/00.jpg
[root@iZ28xbsfvc4Z?20190715]#?curl?-r?1000-???-o?00-jpg.part3?http://www.zhangblog.com/uploads/hexo/00.jpg查看下載文件[root@iZ28xbsfvc4Z?20190715]#?lltotal?36-rw-r--r--?1?root?root???500?Jul?15?11:25?00-jpg.part1-rw-r--r--?1?root?root???500?Jul?15?11:25?00-jpg.part2-rw-r--r--?1?root?root?17196?Jul?15?11:26?00-jpg.part3文件合并[root@iZ28xbsfvc4Z?20190715]#?cat?00-jpg.part1?00-jpg.part2?00-jpg.part3?>?00.jpg[root@iZ28xbsfvc4Z?20190715]#?ll?00.jpgtotal?56-rw-r--r--?1?root?root?18196?Jul?15?11:29?00.jpgFTP分段下載分段下載[yun@nginx_proxy01?20190715]$?curl?-r?0-499???-o?00-jpg.part1?ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg
[yun@nginx_proxy01?20190715]$?curl?-r?500-999?-o?00-jpg.part2?ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg
[yun@nginx_proxy01?20190715]$?curl?-r?1000-???-o?00-jpg.part3?ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg查看下載文件[yun@nginx_proxy01?20190715]$?ll?00-jpg.part*-rw-rw-r--?1?yun?yun???500?Jul?15?17:59?00-jpg.part1-rw-rw-r--?1?yun?yun???500?Jul?15?18:00?00-jpg.part2-rw-rw-r--?1?yun?yun?17196?Jul?15?18:00?00-jpg.part3文件合并[yun@nginx_proxy01?20190715]$?cat?00-jpg.part1?00-jpg.part2?00-jpg.part3?>?00.jpg
[yun@nginx_proxy01?20190715]$?ll?00.jpg?
-rw-rw-r--?1?yun?yun?18196?Jul?15?18:02?00.jpg聲明:本文為CSDN博主「LightZhang666」的原創(chuàng)文章,版權(quán)歸作者所有,如需轉(zhuǎn)載請聯(lián)系作者。原文:https://blog.csdn.net/woshizhangliang999/article/details/98946071【End】
?熱 文?推 薦?
?沒有光芯片,何談 5G 與 AI !
?華為方舟編譯器開源!前華為人重磅解讀!
?華為鴻蒙為什么非要碰物聯(lián)網(wǎng)?
?換臉軟件 ZAO 刷屏:你在玩換臉,別人想要你的臉!
?Dropout、梯度消失/爆炸、Adam優(yōu)化算法,神經(jīng)網(wǎng)絡(luò)優(yōu)化算法看這一篇就夠了
?只給測試集不給訓(xùn)練集,要怎么做自己的物體檢測器?
?mysql表設(shè)計要注意什么?
?別讓分析公司賣了你:一文讀懂比特幣的私密性及隱私保護
?她說:行!沒事別嫁程序員!
你點的每個“在看”,我都認真當(dāng)成了喜歡總結(jié)
以上是生活随笔為你收集整理的curl get请求_Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android socket 长连接_p
- 下一篇: python 排序_Python 排序了