Curl命令详解

204 阅读2分钟

文章缘由

最近在进行调试时,我多次使用 curl 命令来测试和调试自己的抓包程序。为了方便日后查询和使用,我决定整理一篇笔记类型的文章,记录常用的 curl 命令和技巧。


常用的 curl 命令及其解释

  1. 基本用法

    发送一个简单的 HTTP 请求并显示返回的内容:

    curl <http://example.com>
    

    这个命令会从 http://example.com 获取网页内容并在终端上显示。

  2. 保存到文件

    将返回的内容保存到一个文件中:

    curl -o filename.html <http://example.com>
    
    • o 选项指定输出文件名,将内容保存到 filename.html
  3. 跟踪重定向

    如果请求的 URL 有重定向,curl 默认不会跟随重定向。使用 -L 可以启用跟随重定向:

    curl -L <http://example.com>
    
  4. 显示请求头

    显示请求的响应头信息(例如,HTTP 状态码、内容类型等):

    curl -I <http://example.com>
    
    • I 选项告诉 curl 只获取头部信息。
  5. POST 请求

    发送一个 POST 请求,通常用于提交数据:

    curl -X POST -d "name=John&age=30" <http://example.com>
    
    • X POST 指定请求方法为 POST,d 后面跟随要提交的数据。
  6. 发送 JSON 数据

    使用 POST 请求发送 JSON 数据:

    curl -X POST -H "Content-Type: application/json" -d '{"name": "John", "age": 30}' <http://example.com>
    
    • H 用于设置 HTTP 请求头,d 用于传递数据,Content-Type 指定数据格式。
  7. 上传文件

    上传文件到服务器:

    curl -X POST -F "file=@filename.txt" <http://example.com/upload>
    
    • F 用于指定文件上传,@filename.txt 表示要上传的文件。
  8. 使用代理服务器

    如果需要通过代理服务器发送请求,可以使用 -x 选项指定代理:

    curl -x <http://proxy.example.com:8080> <http://example.com>
    
  9. 显示详细信息

    如果需要调试请求过程,使用 -v 选项来显示详细的请求和响应信息:

    curl -v <http://example.com>
    
  10. 使用基本认证

    使用 HTTP 基本认证(用户名和密码)进行请求:

    curl -u username:password <http://example.com>
    
  11. 使用 Cookie

    发送包含 cookies 的请求:

    curl -b "name=value" <http://example.com>
    

    或者将 cookies 保存到文件中并在后续请求中使用:

    curl -c cookies.txt <http://example.com>
    curl -b cookies.txt <http://example.com>
    
  12. 限速

    限制下载速度:

    curl --limit-rate 100k <http://example.com>
    

    这个命令将下载速度限制为 100 KB/s。

  13. 发送多次请求

    如果你需要同时发送多个请求,可以使用 -Z 来实现:

    curl -Z <http://example.com> -Z <http://example2.com>
    

常见 curl 选项

  • X <request_type>: 指定 HTTP 请求类型(如 GET、POST、PUT、DELETE 等)。
  • d <data>: 发送 POST 请求时携带的数据。
  • H <header>: 添加 HTTP 头部信息。
  • I: 获取响应头部信息。
  • o <file>: 将响应内容输出到指定文件。
  • L: 跟随重定向。
  • u <user:password>: 使用 HTTP 基本认证。
  • v: 显示请求和响应的详细信息。
  • x <proxy>: 使用代理服务器。
  • b <cookie>: 发送 Cookie。
  • c <cookie_file>: 保存 Cookie 到文件。