RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

cURL的使用方法

xCb1_yikoulinux ? 來源:一口Linux ? 作者:一口Linux ? 2022-08-05 11:54 ? 次閱讀

認識 cURL

A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP. libcurl offers a myriad of powerful features

curl 是常用的開源命令行工具,用來請求 Web 服務(wù)器。它的名字就是客戶端(client)的 URL 工具的意思。它的功能非常強大,命令行參數(shù)多達幾十種。它支持包括 FTP、HTTP、HTTPS、FTP、SCP,SFTP 數(shù)十種協(xié)議。如能熟練使用,可以在很多應(yīng)用場景下,發(fā)揮巨大的價值。

cURL 的使用

代替 Postman ?

curlhttps://www.baidu.com

如上命令,不帶有任何參數(shù)時,curl 就是發(fā)出 GET 請求,服務(wù)器返回的內(nèi)容會在命令行輸出。當(dāng)然,你還可以為其添加各種參數(shù)(如 -A、-b、-c、-d、-e、-F、-H 等等),使得可以完成更多復(fù)雜任務(wù);

其實,如果只是簡單的 Post、Get 請求,用 cURL 做像接口測試的工作是非常方便的。

有人說了,Postman 它不香嗎?

是的,挺香的,但是當(dāng)你在環(huán)境受限的情況下,比如 在 linux 服務(wù)器上想測試一下接口通不通沒有 Postman 怎么辦?

這時候 cURL 就體現(xiàn)出它的價值了。此外貼心的 Postman,還為我們提供了各種語言和 cURL 的 snippet,方便你在 Postman 編輯完成后直接拿走開發(fā)和調(diào)試使用。

db97bf1c-1471-11ed-ba43-dac502259ad0.jpg

如上圖,你直接 copy 內(nèi)容,然后在命令行執(zhí)行就可以了。

dbbf1eae-1471-11ed-ba43-dac502259ad0.jpg

小工具了解一下

jsonplaceholder http://jsonplaceholder.typicode.com/

免費的 HTTP 請求假數(shù)據(jù)接口,前端同學(xué)可以了解一下

  • 不需引入外部 js 文件。
  • 同時支持 http 和 https 請求。
  • 同時支持 post 請求和 get 請求。

看看 cookie?

curl-bcookies.txthttps://www.youku.com

上面命令將服務(wù)器的 HTTP 回應(yīng)所設(shè)置 Cookie 寫入文本文件 cookies.txt。

上傳個文件?

網(wǎng)站中上傳文件功能很普遍,然而你是怎么調(diào)試的呢?

打開頁面,選擇文件后再點擊上傳按鈕?然后 F12 看看 Request、Response? 或者打開 Postman 進行類似步驟?

可真夠麻煩的。用 cURL 一行命令搞定

這里先介紹一下 -v 參數(shù):

使用 -v 參數(shù)使 curl 打印有關(guān)請求和響應(yīng)的詳細信息。以 > 為前綴的行是發(fā)送給服務(wù)器的數(shù)據(jù),以 < 為前綴的行是從服務(wù)器接收的數(shù)據(jù),以 * 開頭的行是雜項信息,如連接信息、SSL 握手信息、協(xié)議信息等。

我們看個例子,搞下百度:

?curl-vhttps://www.baidu.com
*Trying110.242.68.3:443...
*Connectedtowww.baidu.com(110.242.68.3)port443(#0)
*ALPN:offersh2
*ALPN:offershttp/1.1
*TLSv1.3(OUT),TLShandshake,Clienthello(1):
*TLSv1.3(IN),TLShandshake,Serverhello(2):
*TLSv1.2(IN),TLShandshake,Certificate(11):
*TLSv1.2(IN),TLShandshake,Serverkeyexchange(12):
*TLSv1.2(IN),TLShandshake,Serverfinished(14):
*TLSv1.2(OUT),TLShandshake,Clientkeyexchange(16):
*TLSv1.2(OUT),TLSchangecipher,Changecipherspec(1):
*TLSv1.2(OUT),TLShandshake,Finished(20):
*TLSv1.2(IN),TLShandshake,Finished(20):
*SSLconnectionusingTLSv1.2/ECDHE-RSA-AES128-GCM-SHA256
*ALPN:serveracceptedhttp/1.1
*Servercertificate:
*subject:C=CN;ST=beijing;L=beijing;OU=serviceoperationdepartment;O=BeijingBaiduNetcomScienceTechnologyCo.,Ltd;CN=baidu.com
*startdate:Jul505022022GMT
*expiredate:Aug605012023GMT
*subjectAltName:host"www.baidu.com"matchedcert's"*.baidu.com"
*issuer:C=BE;O=GlobalSignnv-sa;CN=GlobalSignRSAOVSSLCA2018
*SSLcertificateverifyok.
>GET/HTTP/1.1
>Host:www.baidu.com
>User-Agent:curl/7.83.1
>Accept:*/*
>
*Markbundleasnotsupportingmultiuse

百度一下,你就知道
新聞hao123地圖視頻貼吧更多產(chǎn)品
關(guān)于百度AboutBaidu

©2017Baidu使用百度前必讀意見反饋京ICP證030173號

*Connection#0tohostwww.baidu.comleftintact

可以看到,包括握手過程、請求、響應(yīng)信息一應(yīng)俱全。

加 -v 參數(shù)的作用就是就是為了跟蹤(trace)一下請求,看看具體細節(jié),這跟你 F12 的目的是一樣的。此外,如果你想看到具體的請求、響應(yīng)時間點可以加入 --trace-time 參數(shù),最后的命令如下:

curl-v--trace-timehttps://www.baidu.com

效果是這樣的:

?curl-v--trace-timehttps://www.baidu.com
1850.680025*Trying110.242.68.4:443...
1850.692744*Connectedtowww.baidu.com(110.242.68.4)port443(#0)
1850.693142*ALPN:offersh2
1850.693165*ALPN:offershttp/1.1
1850.706507*TLSv1.3(OUT),TLShandshake,Clienthello(1):
1850.723346*TLSv1.3(IN),TLShandshake,Serverhello(2):
1850.723509*TLSv1.2(IN),TLShandshake,Certificate(11):
1850.724242*TLSv1.2(IN),TLShandshake,Serverkeyexchange(12):
1850.724370*TLSv1.2(IN),TLShandshake,Serverfinished(14):
1850.724572*TLSv1.2(OUT),TLShandshake,Clientkeyexchange(16):
1850.724628*TLSv1.2(OUT),TLSchangecipher,Changecipherspec(1):
1850.724727*TLSv1.2(OUT),TLShandshake,Finished(20):
1850.740045*TLSv1.2(IN),TLShandshake,Finished(20):
1850.740086*SSLconnectionusingTLSv1.2/ECDHE-RSA-AES128-GCM-SHA256
1850.740105*ALPN:serveracceptedhttp/1.1
1850.740129*Servercertificate:
1850.740160*subject:C=CN;ST=beijing;L=beijing;OU=serviceoperationdepartment;O=BeijingBaiduNetcomScienceTechnologyCo.,Ltd;CN=baidu.com
1850.740182*startdate:Jul505022022GMT
1850.740200*expiredate:Aug605012023GMT
1850.740256*subjectAltName:host"www.baidu.com"matchedcert's"*.baidu.com"
1850.740298*issuer:C=BE;O=GlobalSignnv-sa;CN=GlobalSignRSAOVSSLCA2018
1850.740317*SSLcertificateverifyok.
1850.740391>GET/HTTP/1.1
1850.740391>Host:www.baidu.com
1850.740391>User-Agent:curl/7.83.1
1850.740391>Accept:*/*
1850.740391>
1850.753580*Markbundleasnotsupportingmultiuse
1850.753605

接下來就是上傳的部分了,-F 參數(shù)用來向服務(wù)器上傳二進制文件。

?curl-v--trace-time'https://postman-echo.com/post'-F'fileName=@"/Users/xiaobox/Desktop/cookies.txt"'

解釋一下這行命令:

-F 參數(shù)可以指定 MIME 類型,也可以改文件名。

curl-v--trace-time'https://postman-echo.com/post'-F'fileName=@/Users/xiaobox/Desktop/cookies.txt;type=text/plain;filename=me.txt'

最后總結(jié),如果你想用一條 cURL 命令測試上傳接口,可以利用類似下面的參數(shù)組合:

curl-v--trace-time'https://postman-echo.com/post'-F'fileName=@/Users/xiaobox/Desktop/cookies.txt;type=text/plain;filename=me.txt'

弱網(wǎng)測試

顧名思義,就是模擬你的客戶端用戶在網(wǎng)絡(luò)較差的環(huán)境下,比如 網(wǎng)速很低的時候,網(wǎng)絡(luò)請求的情況。

我們還是拿百度舉例子,你可以用以下一組命令在 1k 和 200B 的不同速度下對比看看響應(yīng)情況:

curl-v--trace-time--limit-rate1khttp://www.baidu.com

curl-v--trace-time--limit-rate200Bhttp://www.baidu.com

注意 limit-rate 是同時限制 request 和 response,也就是 請求、響應(yīng)都限制成一樣的速率了。

自動重定向

?curlhttps://www.bilibili.com
Redirectingto"http://www.bilibili.com/?rt=V%2FymTlOu4ow%2Fy4xxNWPUZ91QLE3Z%2BfhZ8P5SQVD30Nw%3D">//www.bilibili.com/?rt=V%2FymTlOu4ow%2Fy4xxNWPUZ91QLE3Z%2BfhZ8P5SQVD30Nw%3D.%

你看到了 B 站給我們重定向了,我們可以利用 -L 參數(shù)讓 cURL 自動重定向。

curl-Lhttsp://www.bilibili.com

注意 是大寫的 L

科學(xué)上網(wǎng)后 cURL 不通?

假設(shè)你已經(jīng)配置了科學(xué)上網(wǎng),我們直接 cURL google 看一下

?curl-vhttps://www.google.com
*Trying74.86.151.167:443...
*connectto74.86.151.167port443failed:Operationtimedout
*Failedtoconnecttowww.google.comport443after75400ms:Operationtimedout
*Closingconnection0
curl:(28)Failedtoconnecttowww.google.comport443after75400ms:Operationtimedout

一般情況下是失敗的

再假設(shè)你用的 VPN 客戶端是 clashX 因為我用的是這個,就用這個舉例。

dbd1e494-1471-11ed-ba43-dac502259ad0.jpg

點擊 “復(fù)制終端代理命令”,然后在你的終端執(zhí)行一下:

?exporthttps_proxy=http://127.0.0.1:7890http_proxy=http://127.0.0.1:7890all_proxy=socks5://127.0.0.1:7890

再用 cURL, 你會發(fā)現(xiàn)就可以成功了。如果你用的不是 clashX 其他的 VPN 客戶端應(yīng)該也有類似功能

保存響應(yīng)內(nèi)容 ?

可以利用 -o 參數(shù)將響應(yīng)的結(jié)果保存到文件中:

curl-ogoogle.txthttps://www.google.com

下載文件并顯示進度?

cURL 可以當(dāng) wget 用

-o 參數(shù)將服務(wù)器的回應(yīng)保存成文件,等同于 wget 命令

下載文件的同時顯示進度可以使用類似下面的命令:

?curl-#-opic.jpghttps://w.wallhaven.cc/full/pk/wallhaven-pk6993.png

參數(shù)太多,不想拼?

cURL 是好用,但如果我是個 web 應(yīng)用,需要拼接一堆參數(shù),那太麻煩了,簡直勸退。

是的,所以 瀏覽器也想到了,你可以在瀏覽器先正常發(fā)出請求,然后利用瀏覽器的工具將 cURL 的命令復(fù)制出來。

dbfb7142-1471-11ed-ba43-dac502259ad0.jpg

可以復(fù)制單個請求,也可以是頁面的所有請求。然后你就可以粘貼到終端執(zhí)行了。

是不是很方便 ?

獲取所在地 IP

curl-Ltool.lu/ip
#or
curl-Lip.tool.lu
dc2a585e-1471-11ed-ba43-dac502259ad0.jpg

獲取天氣預(yù)報?

我們看看北京的:

curl'wttr.in/Beijing?lang=zh'
dc5544a6-1471-11ed-ba43-dac502259ad0.jpg

吐槽蘋果

這是一則去年關(guān)于 cURL 的舊新聞:https://www.163.com/dy/article/GTOGN8D20544B1XD.html

curl 作者吐槽蘋果把他當(dāng)做免費工具人

了解這樣的新聞可以幫助你更深刻地認識開源、商業(yè)以及整個軟件的生態(tài)情況。
審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標(biāo)題:妙用 cURL

文章出處:【微信號:yikoulinux,微信公眾號:一口Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Tiny4412下CURL安裝與使用

    CURL是一個利用URL語法在命令行下工作的文件傳輸工具,1997年首次發(fā)行。它支持文件上傳和下載,所以是綜合傳輸工具,但按傳統(tǒng),習(xí)慣稱CURL為下載工具。CURL還包含了用于程序開發(fā)的libcurl。
    的頭像 發(fā)表于 05-31 17:20 ?1453次閱讀
    Tiny4412下<b class='flag-5'>CURL</b>安裝與使用

    使用curl+wget抓取網(wǎng)頁方法

    Linux抓取網(wǎng)頁,簡單方法是直接通過 curl 或 wget 兩種命令。curl 和 wget 命令,目前已經(jīng)支持Linux和Windows平臺,后續(xù)將介紹。curl 和 wget支
    發(fā)表于 02-25 09:54

    curl文件下載工具的使用方法

    curl文件下載工具的使用方法 curl是一個利用URL語法在命令行方
    發(fā)表于 12-04 13:03 ?1748次閱讀

    示波器的使用方法

    示波器的使用方法 1 示波器使用        本節(jié)介紹示波器的使用方法。示波器種類、型號很多,功能也不同。
    發(fā)表于 01-14 13:06 ?1.8w次閱讀

    Matlab使用方法和程序設(shè)計

    Matlab使用方法和程序設(shè)計 實驗一 Matlab使用方法和程序設(shè)計一、
    發(fā)表于 10-17 00:18 ?5392次閱讀
    Matlab<b class='flag-5'>使用方法</b>和程序設(shè)計

    示波器的使用方法

    數(shù)字萬用表使用方法和示波器的使用方法詳解。
    發(fā)表于 03-14 10:38 ?32次下載

    xilinx 原語使用方法

    xilinx 原語使用方法
    發(fā)表于 10-17 08:57 ?11次下載
    xilinx 原語<b class='flag-5'>使用方法</b>

    CC debuger的使用方法

    CC debuger的使用方法
    發(fā)表于 10-18 10:07 ?5次下載

    ORCAD PSPICE 使用方法

    ORCAD PSPICE 使用方法
    發(fā)表于 10-18 14:52 ?39次下載
    ORCAD PSPICE <b class='flag-5'>使用方法</b>

    xilinx原語使用方法

    xilinx原語使用方法
    發(fā)表于 10-19 08:50 ?15次下載
    xilinx原語<b class='flag-5'>使用方法</b>

    git使用方法

    git使用方法
    發(fā)表于 10-24 09:45 ?19次下載
    git<b class='flag-5'>使用方法</b>

    示波器的使用方法(三):示波器的使用方法詳解

    示波器的使用方法并非很難,重點在于正確使用示波器的使用方法。往期文章中,小編對模擬示波器的使用方法和數(shù)字示波器的使用方法均有所介紹。為增進大家對示波器的
    的頭像 發(fā)表于 12-24 20:37 ?3256次閱讀

    simple curl操作類

    ./oschina_soft/curl.zip
    發(fā)表于 05-30 11:02 ?1次下載
    simple <b class='flag-5'>curl</b>操作類

    Linux系統(tǒng)如何安裝curl

    `curl`是用于在本地計算機與遠程服務(wù)器之間傳輸數(shù)據(jù)的命令行工具。使用curl時您可以使用HTTP,HTTPS, SCP , SFTP和FTP等協(xié)議下載或上傳數(shù)據(jù)。
    的頭像 發(fā)表于 12-06 16:53 ?1.7w次閱讀

    curl命令接入onenet簡單使用

    上一篇帖子講解了用fiddler軟件生成http報文然后上傳數(shù)據(jù)點到onenet,恰好在網(wǎng)上搜索到了cuel命令也可以,所以在這里就想發(fā)一篇帖子記錄下吧。用curl命令十分簡單快捷,但是需要
    發(fā)表于 10-20 17:11 ?0次下載
    <b class='flag-5'>curl</b>命令接入onenet簡單使用
    RM新时代网站-首页