cURL 入门:10 分钟学会用命令行发 HTTP 请求
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: /’:表示客户端能接受任意类型的响应内容。
执行效果