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等

常用指令

bash 复制代码
用法: 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 内容,可使用以下命令:

bash 复制代码
curl https://www.example.com

此命令会向 https://www.example.com 发送一个 GET 请求,并且把响应内容输出到终端。

下载文件

若要下载文件,可使用 -O 选项:

bash 复制代码
curl -O https://example.com/file.zip

该命令会把 https://example.com/file.zip 文件下载到当前目录,并且文件名保持不变。

发送 POST 请求

若要发送一个 POST 请求,可使用 -X POST 选项,同时使用 -d 选项来指定请求体:

bash 复制代码
curl -X POST -d "key1=value1&key2=value2" https://example.com/api

此命令会向 https://example.com/api 发送一个包含表单数据的 POST 请求

携带请求头

若要在请求中携带自定义的请求头,可使用 -H 选项:

bash 复制代码
curl -H "Content-Type: application/json" -H "Authorization: Bearer your_token" https://example.com/api

这个命令会在请求中添加 Content-Type 和 Authorization 请求头。

显示响应头

若要显示响应的 HTTP 头信息,可使用 -i 选项:

bash 复制代码
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'

命令解释

  1. 请求 URL
  2. 请求头参数
    • -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: ...':这些是自定义的请求头。

执行效果

相关推荐
passerby606112 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了12 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅12 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅12 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅13 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment13 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅13 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊13 小时前
jwt介绍
前端
爱敲代码的小鱼13 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Cobyte13 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc