–abstract-unix-socket
通过抽象的Unix域套接字连接 1
–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压缩)
1
-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"–connect-timeout
连接允许的最长时间 –connect-to HOST1:PORT1:HOST2:PORT2 连接到主机
1
@todo
-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 -vb, –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 -bc, –cookie-jar
操作后将cookie写入 1
@todo
–create-dirs 创建必要的本地目录层次结构
–crlf 上载时将 LF 转换为 CRLF
–crlfile从给定的文件获取PEM格式的CRL列表 d, –data HTTP Post 数据(H)
–data-ascii HTTP POST ASCII 数据(H)
–data-binary HTTP POST 二进制数据(H)
–data-raw HTTP POST data, 允许 ‘@’ 字符(H)
–data-urlencode HTTP 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服务器地址
- -dns-servers
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代理协议头
1
@TODO
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) 1
@todo
-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
2curl --output >(cat >> file) http://url #追加写入同一个文件(file)中
–pass
私钥的密码短语
–path-as-is 不要挤压……URL路径中的序列
–pinnedpubkey文件/哈希 用于验证对等机的公钥
–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
```blades, –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
1, –tlsv1 使用TLSV1.0或更高版本(SSL)
–tlsv1.0 使用TLSv1.0(SSL)
–tlsv1.1 使用TLSv1.1(SSL)
–tlsv1.2 使用TLSv1.2(SSL)
–tlsv1.3 使用TLSv1.3(SSL)
–tr-encoding 请求压缩传输编码(H)
–trace将调试跟踪写入文件
–trace-ascii如 –trace,但无十六进制输出
–trace-time 向跟踪/详细输出添加时间戳
–unix-socket通过这个Unix域套接字连接 T, –upload-file
将本地文件传输到目标 –url
要使用的URL 1
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-069o 访问一个需要下载的文件,需要把返回的数据流,保存到本地,需要配置路径+名称
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
13curl 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-v 打印访问的整个交互过程
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
32curl -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–trace 更加详细的输出整个访问过程(包含ASIC码)
–data-urlencode 让curl工具,自动给你的入参添加urlencode处理
1
自动断点续传(自动寻找断点位置)
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"
原文作者:Neo Anderson
原文链接:https://www.neofaster.cc/archives/579ba85.html
发表日期:November 27th 2018, 10:06:36 am
更新日期:August 27th 2021, 7:06:04 pm
版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可
-
Next PostDDD(Domain Driven Design)
-
Previous PostPython相关tip