curl

模拟网络请求和传输

curl [options] [URL...]

URL说明

url 支持 glob 通配符的形式

http://site.{one,two,three}.com
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numericals.com/file[001-100].txt
ftp://ftp.letters.com/file[a-z].txt
http://www.numericals.com/file[1-100:10].txt
http://www.letters.com/file[a-z:2].txt

选项说明

普通选项

选项 说明
-#, --progress-bar 显示一个简单的进度条来代替标准的输出
-0, --http1.0 使用 HTTP 1.0
-4, --ipv4 只解析 ipv4
-6, --ipv6 只解析 ipv6
-b, --cookie < name=data > 指定Cookie键值或文件(只有name部分时)
-c, --cookie-jar < file > 保存返回结果的Cookie到指定的文件
--compressed 指定返回结果是解压后的
--connect-timeout < seconds > 指定连接超时,重复指定时最后一个生效
-D, --dump-header < file > 保存返回结果的请求头
-f, --fail 忽略服务器导致的错误
-i, --include 在输出结果中显示头信息
-I, --head 只请求HTTP头信息
--interface < name > 指定网络接口
-j, --junk-session-cookies 从文件读取Cookie时忽略会话Cookie
--keepalive-time 指定发送keepalive的时间间隔
--limit-rate 限制传输速率
--local-port 指定请求时本地使用的端口
-m, --max-time < seconds > 指定整个操作的超时时间
--no-keepalive 不使用keepalive
--raw 显示返回结果未解码的内容
-s 不显示进度条和错误信息
-S -s 一起显示错误信息
--tcp-nodelay 使用TCP_NODELAY选项
-w, --write-out < format > 指定输出格式

keepalive

详情参考这里

tcp-nodelay

详情参考这里

参数选项

选项 说明
-A, --user-agen 设置用户代理标识
-B, --use-ascii 使用ASCII编码传输
-d, --data < data > HTTP POST 方式指定请求参数,和 --data-ascii 一样
--data-ascii < data > 使用ascii的方式传递请求参数
--data-binary < data >  使用二进制的方式传递请求参数
--data-urlencode 对请求参数进行url编码
-e, --referer URL 指定请求来源url
-F, --form HTTP FORM 方式指定请求参数
--form-string --form,只是' @ '、' < '、' ;type= ' 会失去特殊的含义
-g, --globoff 关闭url部分的glob解析
-G, --get 使得-d类参数变为Get请求的参数,重复指定时第一个生效
-H, --header
指定HTTP头信息
--ignore-content-length 忽略 Content-Length 头信息
-K, --config 指定读取请求参数的配置文件
-X, --request < command > 指定请求方法类型

用户代理标识

详情参考这里

浏览器的编码

详情参考这里

http post

  1. -dContent-Typeapplication/x-www-form-urlencoded
  2. -FContent-Typemultipart/form-data
  3. -F 支持使用分号分割多个参数,值的@前缀代表上传文件

POST提交数据方式请参考这里

http header

详情参考这里

http method

详情参考这里

加密选项

选项 说明
-1, --tlsv1 使用 TLS 1
--tlsv1.0 使用 TLS 1.0
--tlsv1.1 使用 TLS 1.1
--tlsv1.2 使用 TLS 1.2
-2, --sslv2 使用 SSL 2
-3, --sslv3 使用 SSL 3
--ciphers < list of ciphers > 指定SSL通信使用的密钥
-E, --cert < certificate[:password] > 指定SSL证书文件和密码
--cert-type < type> > 指定SSL证书文件类型 (DER/PEM/ENG)
--cacert < CA certificate > 指定CA证书
--capath < CA certificate directory > 指定CA证书目录
-k, --insecure 允许不使用证书访问SSL站点
--key < key > 指定SSL私钥文件
--key-type < key > 指定SSL私钥文件类型(DER/PEM/ENG)
--pass 指定SSL私钥文件的密码

TLS和SSL

详情参考这里

认证选项

选项 说明
-anyauth 由curl来决定最好的身份验证方式
--basic 使用 HTTP basic 验证身份
--digest 使用 HTTP digest 验证身份
-u, --user < user:password > 指定认证使用的用户名和密码
--krb < level > FTP指定Kerberos认证级别

http认证

详情参考这里

Kerberos认证

详情参考这里

代理选项

选项 说明
--noproxy 指定访问不需要使用代理的主机列表
--proxy-anyauth 在代理中由curl来决定最好的身份验证方式
--proxy-basic 在代理中使用 HTTP basic 验证身份
--proxy-digest 在代理中使用 HTTP digest 验证身份
-U, --proxy-user < user:password > 指定代理使用的用户名和密码
--socks4 < host[:port] > 使用socks4代理
--socks5 < host[:port] > 使用socks5代理

http代理

详情参考这里

socks代理

详情参考这里

文件选项

选项 说明
-a, --append (FTP/SFTP)上传文件时使用追加模式
-C, --continue-at < offset > 指定断点续传位置
--create-dirs 保存下载时创建不存在的目录
--crlf 上传时将 LF(换行) 转换为CRLF(回车换行)
-J, --remote-header-name 保存下载时使用Content-Disposition头来决定文件名
-o, --output 将结果保存到指定的文件中
-O, --remote-name 将结果保存到指定的文件中
-l, --list-only FTP只列出文件和目录

调试选项

选项 说明
--trace < file > 记录所有的输入输出数据
--trace-ascii < file > 记录所有的输入输出数据的ASCII部分
--trace-time 在记录中显示时间



参考

Linux curl命令详解
curl网站开发指南
HTTP Keep-Alive是什么?
TCP_NODELAY 和 TCP_NOPUSH的解释
总结整理时下流行的浏览器User-Agent大全
说说http协议中的编码和解码
四种常见的 POST 提交数据方式
HTTP头部详解
HTTP的请求方法
TLS和SSL详解
SSL与TLS的区别以及介绍
WEB 中的认证方式
Kerberos认证流程详解
什么是代理服务器
http请求细节和代理
HttpTunnel技术介绍
tcp和udp包穿透防火墙-Httptunnel
Shadowsocks原理和搭建
SOCKS5代理原理探索

Copyright © zhujipeng 2017 all right reserved,powered by Gitbook 该文件修订时间: 2017-11-04 14:57:24

results matching ""

    No results matching ""