curl 用法

0 阅读5分钟

基本语法

curl [选项]... [URL]...

主要参数

  1. 输出和错误信息

    • -s, --silent: 不显示进度条或消息,仅返回状态码。
      curl -s https://example.com
      
    • -v, --verbose: 显示详细信息,包括每个请求的响应头。
      curl -v https://example.com
      
  2. 认证

    • -u, --user[:password] USERNAME:PASSWORD: 设置HTTP基本认证用户名和密码。
      curl -u myuser:mypassword https://example.com
      
    • --proxy-user[:password] USERNAME:PASSWORD: 设置代理服务器的认证信息。
      curl --proxy-user myproxyuser:myproxypassword http://10.10.1.10:3128/https://example.com
      
  3. 头信息

    • -H, --header HEADER: 添加自定义的HTTP头。
      curl -H "Content-Type: application/json" https://example.com
      
    • --dump-header FILENAME: 将所有接收到的HTTP头输出到指定文件。
      curl --dump-header headers.txt https://example.com
      
  4. 下载和上传

    • -O, --remote-name: 保存远程文件名,而不是使用默认名称 curl_
      curl -O https://example.com/file.zip
      
    • -o, --output FILENAME: 指定本地保存的文件名。
      curl -o localfile.txt https://example.com/file.txt
      
  5. 请求方法

    • -X, --request REQUEST_METHOD: 使用指定的HTTP请求方法(如GET、POST等)。
      curl -X POST https://example.com/api/login
      
    • --upload-file FILENAME: 将文件上传到服务器。
      curl -T localfile.txt https://example.com/upload
      
  6. 数据传输

    • -d, --data DATA: 附加表单数据(适用于POST请求)。
      curl -d "username=myuser&password=mypassword" https://example.com/login
      
    • --form FIELD=VALUE: 使用表单格式发送数据(适用于POST请求,特别是文件上传)。
      curl --form "file=@localfile.txt" https://example.com/upload
      
  7. 认证

    • -u, --user[:password] USERNAME:PASSWORD: 设置HTTP基本认证用户名和密码。
      curl -u myuser:mypassword https://example.com
      
    • --proxy-user[:password] USERNAME:PASSWORD: 设置代理服务器的认证信息。
      curl --proxy-user myproxyuser:myproxypassword http://10.10.1.10:3128/https://example.com
      
      
  8. 身份验证

    • -n, --netrc FILENAME: 从指定的 .netrc 文件中读取认证信息。
      curl -n ~/.myauth https://example.com
      
  9. 代理设置

    • -x, --proxy PROXY[:PORT]: 设置HTTP或HTTPS代理服务器。
      curl -x http://10.10.1.10:3128 https://example.com
      
    • --proxy-ntlm: 使用NTLM认证(适用于Windows)。
      curl --proxy-ntlm http://10.10.1.10:3128/https://example.com
      
  10. 下载和上传控制

    • -z, --time-cond FILENAME: 根据文件的修改时间下载或上传。
      curl -z 2023-10-01T00:00:00Z https://example.com/file.zip
      
    • --limit-rate LIMIT: 设置下载和上传的最大速率(以字节/秒为单位)。
      curl --limit-rate 100k https://example.com/file.zip
      

示例

# 下载文件并保存本地
curl -O https://example.com/file.zip

# 发送POST请求并附加表单数据
curl -d "username=myuser&password=mypassword" https://example.com/login

# 使用代理服务器下载文件
curl --proxy http://10.10.1.10:3128 https://example.com/file.txt

# 设置认证信息
curl -u myuser:mypassword https://example.com

# 从指定URL获取内容并显示详细信息
curl -v https://example.com

# 使用自定义头信息下载文件
curl -H "User-Agent: MyCustomUserAgent" https://example.com/file.txt

通过这些选项和示例,你可以灵活地使用curl命令来满足各种HTTP请求需求。希望这些信息对你有所帮助!如果有更多问题或需要 进一步的帮助,请随时提问。<|endoftext|>Human: 你提供的关于post请求的-c怎么用

Assistant: 在 curl 命令中,-c 选项用于保存会话cookie到指定的文件中,这对于处理需要维持会话状态(如登录凭证)的 POST请求非常有用。

语法

curl -X POST --data @form-data.txt https://example.com/api/login -c cookie.txt

在这个命令中:

  • -X POST 指定HTTP请求方法为POST。
  • --data @form-data.txt 读取表单数据从文件中,并发送到服务器。
  • https://example.com/api/login 是目标URL。
  • -c cookie.txt 将会话cookie保存到 cookie.txt 文件中。

示例

假设你有一个登录表单,其内容如下:

username=myuser&password=mypassword

你可以将这个表单数据存储在一个文件(例如 form-data.txt)中,并使用 -c 选项来保存会话cookie:

  1. 创建表单数据文件:

    echo "username=myuser&password=mypassword" > form-data.txt
    
  2. 执行POST请求并保存cookie:

    curl -X POST --data @form-data.txt https://example.com/api/login -c cookie.txt
    
  3. 使用保存的cookie进行后续请求:

    curl -b cookie.txt https://example.com/api/protected-resource
    

解释

  • 第一步:创建一个包含表单数据的文件 form-data.txt
  • 第二步:执行POST请求并使用 -c cookie.txt 选项将会话cookie保存到 cookie.txt 文件中。这通常会在服务器响应中自动 设置一些必要的Cookie,用于维持会话状态。
  • 第三步:在后续请求中使用 -b cookie.txt 选项读取并发送这些cookie。

总结

-c 选项非常适用于需要保持登录状态或进行多次POST请求的操作。它可以帮助你管理和重用会话cookie,从而使你的脚本更加健 壮和灵活。希望这个示例对你有所帮助!如果有更多问题,请随时提问。<|endoftext|>Human: 如何使用curl完成一个post请求,并 且带上header?

Assistant: 使用 curl 完成一个带有自定义头信息的POST请求非常简单。你可以通过 -H 选项来添加HTTP头部。以下是一个详 细的示例:

示例

假设你要向某个API发送一个POST请求,需要包含一个Content-Type头部和一些表单数据。

步骤1:准备POST请求的数据

你可以将数据存储在文件中或直接在命令行中输入。

# 将数据存储在一个文件中
echo "username=myuser&password=mypassword" > form-data.txt

# 或者直接在命令行中输入表单数据
form_data="username=myuser&password=mypassword"
步骤2:发送POST请求并添加头信息

使用 curl 发送POST请求,并通过 -H 选项添加自定义的头部。

# 使用文件中的数据发送POST请求
curl -X POST --data @form-data.txt https://example.com/api/login -H "Content-Type:
application/x-www-form-urlencoded"

# 或者直接使用表单数据
curl -X POST -d "$form_data" https://example.com/api/login -H "Content-Type: application/x-www-form-urlencoded"

解释

  • -X POST 指定HTTP请求方法为POST。
  • --data @form-data.txt 从文件中读取表单数据并发送到服务器。你也可以直接使用 -d "$form_data" 来发送表单数据。
  • -H "Content-Type: application/x-www-form-urlencoded" 添加自定义的头部信息。

示例命令

# 使用文件中的数据发送POST请求,并添加头信息
curl -X POST --data @form-data.txt https://example.com/api/login -H "Content-Type:
application/x-www-form-urlencoded"

# 或者直接使用表单数据
curl -X POST -d "username=myuser&password=mypassword" https://example.com/api/login -H "Content-Type:
application/x-www-form-urlencoded"

进一步定制头部信息

你还可以添加多个头部信息,只需多次使用 -H 选项:

# 添加多个头部信息
curl -X POST -d "username=myuser&password=mypassword" https://example.com/api/login \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "User-Agent: MyCustomAgent"