curl初識
- curl
- 通過 URL 傳輸數據的命令行工具和庫
- 是一個非常強大的命令行工具,用于在網絡上傳輸數據。它支持眾多的協議,像 dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss等
常用指令
- curl 的用法指南
用法: curl [options...] <url>
-d, --data <data> HTTP POST data 用于在 HTTP POST 請求里發送數據,數據格式通常為表單數據(key1=value1&key2=value2)或者 JSON 數據
-f, --fail Fail fast with no output on HTTP errors 若 HTTP 請求返回的狀態碼是 4xx 或 5xx,curl 會立即失敗,且不輸出響應內容
-h, --help <category> Get help for commands 顯示 curl 命令的通用幫助信息
-i, --include Include response headers in output 在輸出中包含響應的 HTTP 頭信息
-o, --output <file> Write to file instead of stdout 把響應內容寫入指定的文件,而非輸出到標準輸出
-O, --remote-name Write output to file named as remote file 把響應內容寫入一個文件名和遠程文件相同的文件
-s, --silent Silent mode 靜音模式,不顯示進度條和錯誤信息。
-T, --upload-file <file> Transfer local FILE to destination 將本地文件傳輸到指定的遠程目標
-u, --user <user:password> Server user and password 指定服務器的用戶名和密碼,用于身份驗證
-A, --user-agent <name> Send User-Agent <name> to server 在請求頭中設置用戶代理信息
-v, --verbose Make the operation more talkative 詳細模式,顯示更多的操作信息,如請求頭、響應頭、連接信息等
-V, --version Show version number and quit 顯示 curl 的版本號并退出
常用功能
- curl 常用功能,它還有很多其他的選項和用法,你可以通過 curl --help / curl --help all 或者 man curl 命令查看詳細的幫助文檔。
獲取網頁內容
若要獲取某個網頁的 HTML 內容,可使用以下命令:
curl https://www.example.com
此命令會向 https://www.example.com 發送一個 GET 請求,并且把響應內容輸出到終端。
下載文件
若要下載文件,可使用 -O 選項:
curl -O https://example.com/file.zip
該命令會把 https://example.com/file.zip 文件下載到當前目錄,并且文件名保持不變。
發送 POST 請求
若要發送一個 POST 請求,可使用 -X POST 選項,同時使用 -d 選項來指定請求體:
curl -X POST -d "key1=value1&key2=value2" https://example.com/api
此命令會向 https://example.com/api 發送一個包含表單數據的 POST 請求
攜帶請求頭
若要在請求中攜帶自定義的請求頭,可使用 -H 選項:
curl -H "Content-Type: application/json" -H "Authorization: Bearer your_token" https://example.com/api
這個命令會在請求中添加 Content-Type 和 Authorization 請求頭。
顯示響應頭
若要顯示響應的 HTTP 頭信息,可使用 -i 選項:
curl -i https://www.example.com
這樣,響應的 HTTP 頭和內容都會顯示在終端。
示例
curl可以用來復現某個請求的場景,可以通過network右鍵請求,以cURL格式復制,在聯調階段提供給后端復現異常case
cURL格式復制
- 控制臺網絡右鍵,以cURL格式復制
curl 'https://bizapi.csdn.net/blog-console-api/v3/editor/getArticle?id=147578947&model_type=' \-H 'accept: */*' \-H 'accept-language: zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6' \-b $'uuid_tt_dd=10_20886590480-1715581486529-199232; UN=Sheng_zhenzhen; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22Sheng_zhenzhen%22%2C%22scope%22%3A1%7D%7D; __gpi=UID=00000e1a492850fb:T=1715590181:RT=1715839707:S=ALNI_MY8mypwNtf_Kj4GFL4esXQyjSOqqw; chat-version=2.1.1; cf_clearance=ITQEWw5z1YDm8Ze.0oxq0dDpsWkei6LjewH6KXUGLNI-1716793341-1.0.1.1-qlOvY2p_zmqgE_r7zm1eAid8o1f8Mkn56.JnPangSDHNvBP7eOd3Hk1mBoBf7HL5_7Kl4Yw597wVVuri1jPI_g; pluginId=kfkdboecolemdjodhmhmcibjocfopejo; pluginVersion=3.0.6; pluginUUID=10_79336979949-1717050176275-846154; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_20886590480-1715581486529-199232\u00215744*1*Sheng_zhenzhen; fid=20_82651201800-1723170159863-555732; _ga=GA1.2.1578275584.1715592580; _ga_7W1N0GEY1P=GS1.1.1730258945.16.1.1730259669.60.0.0; UserName=Sheng_zhenzhen; UserInfo=f99197ef9c784558bd56392ed10ea1b0; UserToken=f99197ef9c784558bd56392ed10ea1b0; UserNick=%E5%AD%A4%E5%BD%B1_ls; AU=6DB; BT=1731318494288; p_uid=U010000; csdn_newcert_Sheng_zhenzhen=1; historyList-new=%5B%5D; ssxmod_itna=eqRxnQi=oGqDq0KGQDXinxBKWSQQoDu7W=Gx0v4PGzDAxn40iDtrZ8liogYpB0mgmXi7YjdcN5EQfm0AWKGm3weK7ADAoDhx7QDox0=DnxAQDjhE4GGIxBYDQxAYDGDDPcDGqXORD7Otk0r5FmoIFI=5DbrK7DiKODYHmDAqGS2yC7o2CDDPmDl9sDWP7DQ5zm2PDExGOfbFwuxGarFffs4KDECbks/oDvhO7CxGd9pyzmpLtKC+eKihqS7a4EeRDQCGqhDxnOe+qqDxqmT2Yheb4OiG9Ho6otYD; tfstk=gDin20jl751jMalA9frBkA6nC5YTR9ZS4bI8wuFy75PsJ0eKU7VrGfUzypN-s7lEtuE8YbKorxHUTu3KegWz6-QFYuSU_PyunwJQ87rar-2Hd6zUzajaEbGuPpN8a7c-U2p9DnHIduZzqIKvDO-3WPi3a_EzAlo-YcVyDnHIL-vB51-xvqg8TWPz4yzz7GP_K8rzaWJg_82fz6lz4dvgEJ5P4MrPQhy43uPrauJiQ5wr63szi0osbClYILvtkxogKyVqKEsPqcjY-SkUsgRqjJjzgvPG4gPdhnZSUbRl2oujs04qN3j_vx0abJ0MUNPUo2lLCbxcYWoiLDPKYCILTDMZk0hwUgPo7qzYTVO6Vyuj9qziXBj_gVkieP06FwF-l8l7l0dfAWkrhmgYm3XuIqDajg7l7Z7sNgwwec75Pyy_ISHl-EHXIij76dvGleaUCJdvIdbSiyy_dspMIZr38RwpM; c_dl_prid=1740649897648_864214; c_dl_rid=1742281686650_772730; c_dl_fref=https://so.csdn.net/so/search; c_dl_fpage=/download/qq_38334677/86036480; c_dl_um=-; c_segment=0; HMACCOUNT=ED4D3BE6510A9B63; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1745380057; dc_sid=a08809d45b2f461665e7b45d90a82006; c_ab_test=1; c_first_ref=default; creative_btn_mp=3; is_advert=1; c_utm_source=cknow_so_nontop_query; fe_request_id=1745742732533_5850_4056531; _clck=13wupaw%7C2%7Cfvg%7C0%7C1594; __gads=ID=fe72fa3892ac6714:T=1715590181:RT=1745809122:S=ALNI_MZqCAlmtjYUiq6y2U8l7MnIUe9Jlg; __eoi=ID=b59f0837bf8979e7:T=1731227900:RT=1745809122:S=AA-AfjZJvIGf_IEkWgWEjLcXhNEO; FCNEC=%5B%5B%22AKsRol_hZnRk3OSTXRkf8v9YwrMBJ7vSLML0MCqwwXkl8fxQjmyxyDuWVhga8YSqEKbq_XXLmkViw2c1POZuF2vRu5sL5KzLMcEfJLj-hTldXI5USMJ5rm09P5N0T_dDk3yLRDQ_lR-DU2S0GAe78YJt3TN39FbYFA%3D%3D%22%5D%5D; dc_session_id=10_1745764966337.725197; c_first_page=https%3A//www.csdn.net/; c_dsid=11_1745810721238.604193; c-sidebar-collapse=0; c_page_id=default; creativeSetApiNew=%7B%22toolbarImg%22%3A%22https%3A//img-home.csdnimg.cn/images/20230921102607.png%22%2C%22publishSuccessImg%22%3A%22https%3A//img-home.csdnimg.cn/images/20240229024608.png%22%2C%22articleNum%22%3A195%2C%22type%22%3A2%2C%22oldUser%22%3Atrue%2C%22useSeven%22%3Afalse%2C%22oldFullVersion%22%3Atrue%2C%22userName%22%3A%22Sheng_zhenzhen%22%7D; log_Id_click=12; c_pref=https%3A//editor.csdn.net/; c_ref=https%3A//mpbeta.csdn.net/; log_Id_pv=16; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1745811569; dc_tos=svestt; log_Id_view=558' \-H 'origin: https://editor.csdn.net' \-H 'priority: u=1, i' \-H 'referer: https://editor.csdn.net/' \-H 'sec-ch-ua: "Google Chrome";v="135", "Not-A.Brand";v="8", "Chromium";v="135"' \-H 'sec-ch-ua-mobile: ?0' \-H 'sec-ch-ua-platform: "macOS"' \-H 'sec-fetch-dest: empty' \-H 'sec-fetch-mode: cors' \-H 'sec-fetch-site: same-site' \-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36' \-H 'x-ca-key: 203803574' \-H 'x-ca-nonce: e2186239-0495-49a9-8c05-02dd677772cf' \-H 'x-ca-signature: fIpNPDiIfxK5lYtg8bA/kjasew4xr8by8Ve9GxdqjHc=' \-H 'x-ca-signature-headers: x-ca-key,x-ca-nonce'
命令解釋
- 請求 URL
- curl ‘https://bizapi.csdn.net/blog-console-api/v3/editor/getArticle?id=147578947&model_type=’
- 此 URL 指向 CSDN 的文章獲取 API,id=147578947 表明要獲取的文章 ID 是 147578947。
- curl ‘https://bizapi.csdn.net/blog-console-api/v3/editor/getArticle?id=147578947&model_type=’
- 請求頭參數
- -H ‘accept: /’:表示客戶端能接受任意類型的響應內容。
-H ‘accept-language: zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6’:指明客戶端期望的語言順序,優先是中文(中國大陸、中國臺灣),其次是英文。
-b:用于傳遞 Cookie 信息,其中包含了用戶的登錄狀態、用戶信息、會話 ID 等。
-H ‘origin: https://editor.csdn.net’:表示請求的來源頁面是 https://editor.csdn.net。
-H ‘referer: https://editor.csdn.net/’:表明請求是從 https://editor.csdn.net/ 頁面發起的。
-H ‘user-agent: …’:模擬瀏覽器的用戶代理信息,這里模擬的是 Chrome 瀏覽器在 macOS 系統上的請求。
-H ‘x-ca-key: …’、-H ‘x-ca-nonce: …’、-H ‘x-ca-signature: …’、-H ‘x-ca-signature-headers: …’:這些是自定義的請求頭。
- -H ‘accept: /’:表示客戶端能接受任意類型的響應內容。
執行效果