- –anyauth 选择任何身份验证方法(H)curl 自主选择最优认证方案
1
| curl https://www.baidu.com --anyauth -v -I
|
- -a, –append 上传时附加到目标文件(F/SFTP)
- –basic 使用HTTP基本身份验证(H)
默认选项
- –cacert用于验证对等端的CA证书(SSL)
- –capath用于验证对等机的CA目录(SSL)
- -E, –cert CERT[:PASSWD] 客户端证书文件和密码(SSL)example
- –cert-type证书文件类型(der/pem/eng)(SSL)
- –ciphers <list of ciphers> 要使用的SSL密码(SSL)
1
| curl https://www.howsmyssl.com/a/check | json_pp # 获取所有支持的密码类型
|
1
| curl https://www.baidu.com --cacert ~/Desktop/charles-ssl-proxying-certificate.pem -v -I --cert-type PEM
|
- –cert-status 验证服务器证书的状态(SSL)
1 2
| ≥ curl https://www.baidu.com --cert-status 15:48 curl: (91) No OCSP response received
|
- –compressed 请求压缩响应(使用deflate或gzip)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ≥ curl https://www.neofaster.cc -I --compressed 16:47 HTTP/2 200 server: marco/2.13 date: Sat, 28 Nov 2020 08:48:24 GMT content-type: text/html vary: Accept-Encoding x-source: C/304 last-modified: Mon, 26 Oct 2020 10:09:39 GMT etag: W/"5f96a063-e4cf" x-frame-options: SAMEORIGIN expires: Sat, 28 Nov 2020 02:35:32 GMT cache-control: max-age=3600 x-request-id: 65f63f2d1ce244cb74647819e9f56871 age: 0 via: T.49.N, V.mix-js-czx2-049, T.61.N, M.ctn-zj-jgh-069 content-encoding: gzip
|
- –compressed-ssh 启用ssh压缩(申请/请求server开启ssh压缩)
- -K, –config指定要读取的配置文件(所有配置选项都写到统一配置文件中)
1 2 3 4 5 6
| > curl https://www.neofaster.cc/archives/a02e0b8d.html -I -K ./curl.config > vim ./curl.config 1 url = "https://www.neofaster.cc/archives/e0d6d4c5.html" 2 user-agent = "superagent/1.0" 3 compressed 4 referer = "https://www.neofaster.cc/archives/19a466d1.html"
|
- -C, –continue-at OFFSET 恢复传输偏移量(断线下载)
1 2
| #从已下载的(424476672位置-包大小)断点下载ubuntu镜像文件 > curl -O https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso --continue-at 424476672 --compressed -v
|
-b, –cookie从 string/file 发送 cookie(H)
1 2 3 4 5
| # 发送字符串的自定义cookie > curl -v -I https://www.example.com -b "UID=abc123;Referer=www.baidu.com" # 发送文件制定自定义的cookie > curl -v -I https://www.example.com -b
|
-c, –cookie-jar操作后将cookie写入
--create-dirs 创建必要的本地目录层次结构
--crlf 上载时将 LF 转换为 CRLF
--crlfile <file> 从给定的文件获取PEM格式的CRL列表
-d, –dataHTTP Post 数据(H)
–data-asciiHTTP POST ASCII 数据(H)
–data-binaryHTTP POST 二进制数据(H)
–data-rawHTTP POST data, 允许 ‘@’ 字符(H)
–data-urlencodeHTTP POST url 编码数据(H)
–delegationGSS-API授权权限
–digest 使用HTTP摘要身份验证(H)
-q, –disable 禁用.currlc
–disable-eprt 禁止使用EPRT或LPRT(F)
–disable-epsv 禁止使用EPSV(F)
–dns-interface用于DNS请求的接口
–dns-ipv4-addr用于DNS请求的IPv4地址
–dns-ipv6-addr用于DNS请求的IPv6地址
- -dns-servers要使用的DNS服务器地址
-D, –dump-header将接收到的头写入
–egd-file随机数据的EGD套接字路径(SSL)
–engine要使用的加密引擎
–expect100-timeout要等多久才能100继续
-f, –fail HTTP错误时不显示(完全没有输出)(H)
–fail-early 第一次传输失败,不继续
–false-start 启动 TLS=False 启动
-F, –form <name=content> 指定HTTP多部分发布数据(H)
–form-string <name=string> 指定多部分MIME数据
–ftp-account帐户数据字符串(F)
–ftp-alternative-to-user替换用户的字符串名称
–ftp-create-dirs 创建远程目录(如果不存在)(F)
–ftp-method控制CWD使用(F)
–ftp-pasv 使用pasv/epsv而不是port(F)
-P, –ftp-port使用 PORT 而不是PASV(F)
–ftp-pret 在pasv之前发送pret(F)
–ftp-skip-pasv-ip 跳过PASV的IP地址(F)
–ftp-ssl-ccc 认证后发送CCC(F)
–ftp-ssl-ccc-mode <active/passive> 设置CCC模式(F)
–ftp-ssl-control ftp登录需要ssl/tls,传输清除(F)
-G, –get 以get的方式来发送数据(H)
-g, –globoff 使用{} 和 [] 禁用URL序列和范围
–happy-eyeballs-timeout-ms 尝试ipv4之前等待ipv6的时间(以毫秒计)
-I, –head 仅显示响应首部信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| > curl -I https://www.neofaster.cc 10:55 HTTP/2 200 date: Tue, 01 Dec 2020 02:55:30 GMT content-type: text/html vary: Accept-Encoding x-source: C/200 cache-control: max-age=3600 etag: "5fc4b851-e428" expires: Tue, 01 Dec 2020 02:56:48 GMT last-modified: Mon, 30 Nov 2020 09:16:01 GMT x-frame-options: SAMEORIGIN x-request-id: 1d0df8b3f0e9b598542ec9dab9223c84; 1a90af0a0c881375c5683951d39a8595 age: 3523 via: T.48.M, V.mix-js-czx2-048, T.61.H, M.ctn-zj-jgh-061
|
- –haproxy-protocol 发送haproxy代理协议头
-H, –header <header/@file> 将自定义头传递到服务器
1 2 3 4 5 6 7
| #传递字符串自定义内容header > curl -I https://www.neofaster.cc/archives/ed852869.html -L --header "User-Agent: neo-curl-3" --header "TID: 123abc" #传递文件内容header > curl -I https://www.neofaster.cc/archives/94aa22a6.html -L --header @./neo.header > cat neo.header User-Agent: neo-file-header TID: 123abc
|
- –hostpubmd5主机公钥的可接受MD5哈希(SSH)
- -0, –http1.0 使用 HTTP 1.0(H)
- –http1.1 使用 HTTP 1.1
- –http2 使用 HTTP 2
1 2
| #指定使用版本协议, 如果配合多个最后一个服务器有效支持的协议版本生效 curl -I https://www.neofaster.cc/archives/94aa22a6.html -L --header @./neo.header --http1.0 --http1.1 --http2 -v
|
- –http2-prior-knowledge 使用HTTP 2而不升级HTTP/1.1
–ignore-content-length 忽略远程资源的大小
-i, –include 在输出中包含协议响应头(H/F)
-k, –insecure 使用SSL时允许不安全的服务器连接(H)
–interface使用网络接口(或地址)
-4, –ipv4 将名称解析为IPv4地址
-6, –ipv6 将名称解析为IPv6地址
-j, –junk-session-cookies 忽略从文件读取的会话cookie(H)
–keepalive-time保持探针的间隔时间
–key私钥文件名(SSL/SSH)
–key-type私钥文件类型 (DER/PEM/ENG)(SSL)
–krb启用具有安全性的Kerberos(F)
–libcurl转储此命令行的libcurl等效代码
–limit-rate限制传输速率
-l, –list-only 仅列出ftp目录的名称(F)
–local-port <num/range> 强制使用本地端口号的范围
-L, –location 跟踪重定向(H)
–location-trusted 像–location样,并将auth发送到其他主机(H)
–login-options服务器登录选项
–mail-auth原始电子邮件的发起人地址
–mail-from来自此地址的邮件
–mail-rcpt邮寄到此地址
-M, –manual 显示curl完整手册
–max-filesize要下载的最大文件大小
–max-redirs允许的最大重定向数
-m, –max-time允许传输的最长时间
–metalink 将给定的URL作为metalink xml文件处理
–negotiate 使用HTTP协商(SPNEGO)身份验证
-n, –netrc 必须读取.netrc以获取用户名和密码
–netrc-file为netrc指定文件
–netrc-optional 使用.netrc或url
-:, –next 使下一个URL使用其单独的选项集
–no-alpn 禁用ALPN TLS扩展
-N, –no-buffer 禁用输出流的缓冲
–no-keepalive 在连接上禁用tcp keepalive
–no-npn 禁用NPN TLS扩展
–no-sessionid 禁用SSL会话ID重用
–noproxy不使用代理的主机列表
–ntlm 使用HTTP NTLM身份验证
–ntlm-wb 对WinBind使用HTTP NTLM身份验证
–oauth2-bearerOAuth 2 Bearer Token - -o | –output写入文件而不是stdout
1 2
| curl --output >(cat >> file) http://url #追加写入同一个文件(file)中
|
--pass <phrase> 私钥的密码短语
--path-as-is 不要挤压……URL路径中的序列
--pinnedpubkey <hashes> 文件/哈希 用于验证对等机的公钥
--post301 在301重定向后不要切换到GET
--post302 在302重定向后不要切换到GET
--post303 在303重定向后不要切换到GET
--preproxy [protocol://]host[:port] 首先使用此代理
-#, –progress-bar 将传输进度显示为条形图
–proto启用/禁用协议
–proto-default对任何缺少方案的URL使用协议
–proto-redir在重定向时启用/禁用协议
-x, –proxy [protocol://]host[:port] 使用此代理
–proxy-anyauth 选择任何代理身份验证方法 (H)
–proxy-basic 在代理上使用基本身份验证(H)
–proxy-cacert用于验证对等代理的CA证书(H)
–proxy-capath用于验证代理对等机的CA目录(H)
–proxy-cert <cert[:passwd]> 设置代理的客户端证书(H)
–proxy-cert-typeHTTS代理的客户端证书类型(H)
–proxy-ciphers用于代理的SSL密码
–proxy-crlfile为代理设置一个CRL列表
–proxy-digest 在代理上使用摘要式身份验证
–proxy-header <header/@file> 将自定义头传递给代理
–proxy-insecure 在不验证代理的情况下执行HTTPS代理连接
–proxy-keyHTTPS代理的私钥
–proxy-key-type代理的私钥文件类型
–proxy-negotiate 在代理上使用HTTP协商(SPNEGO)身份验证
–proxy-ntlm 在代理上使用NTLM身份验证
–proxy-passhttps代理的私钥的密码短语
–proxy-pinnedpubkey用于验证代理的公钥的 文件/哈希
–proxy-service-nameSPNEGO代理服务名称
–proxy-ssl-allow-beast 允许HTTPS代理的互操作存在安全缺陷
–proxy-tlsauthtypeHTTPS代理的TLS身份验证类型
–proxy-tlspasswordHTTPS代理的TLS密码
–proxy-tlsuserHTTPS代理的TLS用户名
–proxy-tlsv1 将tlsv1用于HTTPS代理
-U, –proxy-user user:password 代理用户和密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| ``` --proxy1.0 <host[:port]> 在给定端口上使用HTTP/1.0代理 -p, --proxytunnel 通过HTTP代理隧道操作(使用connect) --pubkey <key> ssh公钥文件名 -Q, --quote <cmd> 传输前将命令发送到服务器 --random-file <file> 从文件中读取随机数据(SSL) -r, --range <range> 仅检索范围内的字节 --raw 执行http“raw”;无传输解码(H) -e, --referer <URL> 引用URL(H) -J, --remote-header-name 使用header提供的文件名 - `-O, --remote-name 将输出写入名为远程文件的文件` - `--remote-name-all 对所有URL使用远程文件名` -R, --remote-time 在本地输出上设置远程文件的时间 -X, --request <command> 指定要使用的请求命令 --request-target 指定此请求的目标 --resolve <host:port:address> 将主机+端口解析为此地址 --retry <num> 如果出现暂时性问题,请重试请求 --retry-connrefused 拒绝连接时重试(与--retry一起使用) --retry-delay <seconds> 两次重试之间的等待时间 --retry-max-time <seconds> 仅在此期间内重试 --sasl-ir 在SASL身份验证中启用初始响应 --service-name <name> SPNEGO服务名称 -S, --show-error 显示错误,即使使用-s ```shell
|
-s, –silent 静音模式
–socks4 <host[:port]> 指定主机+端口上的socks4代理
–socks4a <host[:port]> 指定主机+端口上的socks4a代理
–socks5 <host[:port]> 指定主机+端口上的socks5代理
–socks5-basic 为socks5代理启用用户名/密码验证
–socks5-gssapi 为socks5代理启用GSS-API身份验证
–socks5-gssapi-nec 与NEC Socks5服务器的兼容性
–socks5-gssapi-serviceGSS-API的socks5代理服务名称
–socks5-hostname <host[:port]> socks5代理,将主机名传递给代理
-Y, –speed-limit停止比此慢的传输
-y, –speed-time在此时间后触发“速度限制”中止
–ssl 尝试ssl/tls (FTP, IMAP, POP3, SMTP)
–ssl-allow-beast 允许安全缺陷改进互操作
–ssl-no-revoke 禁用证书吊销检查(WinSL)
–ssl-reqd 需要SSL/TLS(FTP, IMAP, POP3, SMTP)
-2, –sslv2 使用SSLv2(SSL)
-3, –sslv3 使用SSLv3(SSL)
–stderr 重定向stderr的位置
–suppress-connect-headers 禁止代理连接响应头(SSL)
–tcp-fastopen 使用TCP快速打开
–tcp-nodelay 使用tcp_nodelay选项
-t, –telnet-option <opt=val> 设置telnet选项
–tftp-blksize设置tftp blksize选项
–tftp-no-options 不要发送任何TFTP选项
-z, –time-cond
-B, –use-ascii 使用ASCII/文本传输
-u, –user user:password 服务器用户和密码
1
| curl http://xxxx.com.cn -u guest:password
|
-A, –user-agent将用户代理发送到服务器
-v, –verbose 打印操作的详情信息
-V, –version 显示 curl 的版本号
-w, –write-out完成后使用输出格式
–xattr 将元数据存储在扩展文件属性中
case演示
- –progress-bar (花式技巧#进度条告别单调的文字,使用=-等代替)
1
| curl --progress-bar http://xxx.jpg -o xxx.jpg
|
- -L 自动跟踪网站的301,302(有些网站做了域名迁移等)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| # 比如我自己的网站做了https跳转处理 curl www.neofaster.cc -I -L 15:42 HTTP/1.1 301 Moved Permanently Server: marco/2.13 Date: Fri, 27 Nov 2020 07:44:36 GMT Content-Type: text/html Content-Length: 183 Connection: keep-alive Location: https://www.neofaster.cc/ Via: M.ctn-zj-jgh-069 X-Request-Id: a1b38447b844bcdaba9a530c0e6cf783
HTTP/2 200 server: marco/2.13 date: Fri, 27 Nov 2020 07:44:37 GMT content-type: text/html vary: Accept-Encoding x-source: C/304 last-modified: Mon, 26 Oct 2020 10:09:39 GMT etag: "5f96a063-e4cf" x-frame-options: SAMEORIGIN expires: Fri, 27 Nov 2020 08:08:34 GMT cache-control: max-age=3600 x-request-id: ee511f8f0ae00c4e3bc25f1434be0156; bf0a7ea7db394a59f0a339b0f6e3e1fc accept-ranges: bytes age: 2163 via: T.49.M, V.mix-js-czx2-046, T.61.H, M.ctn-zj-jgh-069
|
-o 访问一个需要下载的文件,需要把返回的数据流,保存到本地,需要配置路径+名称
1
| curl --progress-bar http://xxx.jpg -o xxx.jpg
|
-i 额外显示访问地址返回的header 信息(http协议)
-I 只显示访问地址响应的header 信息
1 2 3 4 5 6 7 8 9 10 11 12 13
| curl www.baidu.com -I 15:45 HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform Connection: keep-alive Content-Length: 277 Content-Type: text/html Date: Fri, 27 Nov 2020 08:10:29 GMT Etag: "575e1f6d-115" Last-Modified: Mon, 13 Jun 2016 02:50:21 GMT Pragma: no-cache Server: bfe/1.0.8.18
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| curl -v ftp://ftp.scene.org/music/groups/ -I 15:42 * Trying 145.24.145.107... * TCP_NODELAY set * Connected to ftp.scene.org (145.24.145.107) port 21 (#0) < 220 ftp.scene.org FTP server (SceneOrgFTPD-2.4.4) ready. > USER anonymous < 331 Anonymous login ok, send your complete email address as your password > PASS ftp@example.com < 230- < 230- _________ _________ __________ _______ __________ < 230- / ______/ \_ ___ \ \_ ____/ \ \ \_ ____/ < 230- \_____ \ / \ \/ | _)_ / | \ | _)_ < 230- / \ \ \____ | \ / | \ | \ < 230-/_______ / \______ / /______ / \____|__ / /______ / < 230- \/ \/ \/ \/ \/ . ORG! < 230-'elektronik free art' since 11 March 1996 < 230- Problems? Mail: < 230- ftp@scene.org < 230 Anonymous access granted, restrictions apply > PWD < 257 "/" is the current directory * Entry path is '/' > CWD music * ftp_perform ends with SECONDARY: 0 < 250 CWD command successful > CWD groups < 250 CWD command successful * Remembering we are in dir "music/groups/" * Connection #0 to host ftp.scene.org left intact > QUIT < 221 Goodbye. * Closing connection 0
|
1
| curl --remote-name --continue-at - http://xxxx.iso
|
1
| $ curl "https://example.com/images_00[0-9]/file_[1-4].webp" --output "file_#1-#2.webp"
|