curl
-L
跟随重定向,自动跳转-s
静默模式- 一旦发生错误,不会显示错误信息
-S
如果出错, 则显示错误信息- 一般与
-s
一起使用
- 一般与
curl -sSL <url>
-
-v
输出通信过程- 包括具体链接的IP和端口,HTTPS协议的握手过程
-
-I
只显示首部信息- 发送HEAD请求
-
-i
显示首部和body -
-o
保存数据到文件中- 相当于
wget
命令- 对应的,
wget -O- <url>
相当于curl
命令
- 对应的,
- 相当于
curl -o <path/to/file> <url>
-
-O
按照源文件名自动保存 -
-u
提供用户名和密码
curl -u <name:password> <url>
-H
提供首部信息- 例如设置请求设备
user-agent
参数- 因为返回内容可能根据设备不同而不同
- 例如设置请求设备
curl 'https://ifconfig.me/' -H \
'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
-x
使用代理
curl -x <proxy_addr:port> <url>
- curl默认为GET方法,使用
-X
支持其他方法 -d
提供POST数据body-F "upload=@"
上传文件
curl -X POST http://github.com
curl -X DELETE http://github.com
# 注意-d后的json信息用单引号而不是反引号
curl -X POST localhost:8000/search -H "Content-Type:application/json" -d '{"key":123, "val":456}'
# @用文件代替命令行输入(-d等价--data)
curl -X POST localhost:8000/search -H "Content-Type:application/json" --data @filename.json
# -F "upload=@"上传文件
curl -X POST http://localhost:8000/upload -F "upload=@/Users/ghost/Desktop/pic.jpg" -H "Content-Type: multipart/form-data"
# 上传多个文件
curl -X POST http://localhost:8000/multi/upload -F "upload=@/Users/ghost/Desktop/pic.jpg" -F "upload=@/Users/ghost/Desktop/journey.png" -H "Content-Type: multipart/form-data"
--limit-rate <200k>
用来限制 HTTP 请求和回应的带宽,模拟慢网速的环境--trace-time
显示curl过程每一步的时间戳,用于查看时间耗在哪步--cert <cert_file> --key <key_file>
用来进行mTLS认证-k
跳过检查服务器的 SSL 证书是否正确- 一般用于服务端证书为自签名时
- 一般用于服务端证书为自签名时
--resolve host:port:address
在HTTPS协议下指定访问的IP- https下指定IP不能通过更改Host头部实现,因为TLS握手时拿不到Host
- 一般用于测试CDN加速
- 参考:
dig
-
dig <域名>
查询DNS包括CNAME记录,A记录等相关信息的工具 -
dig @<dns ip> <域名>
指定DNS查询- 例如指定谷歌的
8.8.8.8
DNS服务器 - 如果不指定 DNS 服务器,dig 会依次使用
/etc/resolv.conf
里的地址作为 DNS 服务器
- 例如指定谷歌的
-
dig +short <域名>
只显示CNAME和IP -
dig +trace <域名>
显示递归查询的详细过程 -
dig <域名> [A\CNAME\NS\AAAA]
指定要查询的信息
-
dig命令默认的输出信息可以分为 5 个部分
- 显示 dig 命令的版本和输入的参数
- 显示服务返回的一些技术详情
- 如果
status
的值为NOERROR
则说明本次查询成功结束
- 如果
QUESTION SECTION
显示我们要查询的域名和字段- 默认请求
A
字段
- 默认请求
ANSWER SECTION
是查询到的结果- 第一列为域名
- 第二列为TTL
- 缓存时间,单位秒
- 第三列为要查询信息的类别
- IN代表类别为IP协议,即Internet
- 由于现在都是互联网,所以其它基本不用
- 第四列为要查询的记录类型
- 第五列为域名对应的结果
- IP或另一个域名
- 本次查询的一些统计信息
- 比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等
ping
- 用来探测本机与网络中另一主机之间是否可达的命令, 是定位网络通不通的一个重要手段
- 如果两台主机之间ping不通,则表明这两台主机不能建立起连接
- 还可以检测往返耗时(延迟),往返时间反映连接质量
ping -6 www.google.com
可以使用IPv6来pingping -s 1000 www.google.com
指定发送的数据包大小为1000Byte
- 最大能发送65507byte大小的包,避免DDoS攻击
- 利用了ICMP协议
- 基于IP协议实现,不基于TCP或UDP
- 能ping通不一定tcp或udp通
traceroute
-
可以定位从源主机到目标主机之间经过了哪些路由器,以及到达各个路由器的耗时
-
一般直接使用命令行测试
- 出现星号(
*
)一般是防火墙封掉了 ICMP 的返回信息- 避免DDoS攻击,或者不想暴露IP地址
-n
避免网关IP的DNS解析-q<
- 出现星号(