Administrator
发布于 2026-05-17 / 6 阅读
0

curl

Curl


# 输出参数介绍

curl —s # 省略进度条

curl -S # 省略进度条是出错时显示错误

curl -o 1.txt # 制定输出目录

curl -I # 只输出响应头,小写i:加上body

# 输入参数

curl -A # UA信息

curl -b # cookies k=v

curl -H # 请求头 

curl -L # 跟随3xx重定向

curl -e # 指定referer

curl -u # -u user:passwd http验证

curl -d # 请求参数就是body内容

		# 默认传输方式是 application/json,服务端接收数据-》body-》form数据

		# 若在-H 指定Content-Type:application/json,服务端接受数据-》body-》json data

		# 应该还有file类型的Content-Type,服务端-》body-》file

curl -X # 请求方法 POST GET(默认)

curl -x # 代理  socks5://127.0.0.1:1080

curl -v # 打印调试信息

curl -k # 忽略SSL证书

curl -m # 指定等待时间time-out


# CURL FTP命令

curl ftp://host:port/ -u "user:passwd"

# 查看

curl ftp://host:xxx/ -u "user:password"

# 上传

curl ftp://user:password@host:port/path -T

# 1、列出ftp服务器上的目录列表:

curl ftp://www.xxx.com/ --user name:passwd

curl ftp://www.xxx.com/ –u name:passwd #简洁写法

curl ftp://name:passwd@www.xxx.com #简洁写法2

# 2、只列出目录,不显示进度条

curl ftp://www.xxx.com –u name:passwd -s

# 3、下载一个文件:

curl ftp://www.xxx.com/size.zip –u name:passwd -o size.zip

# 4、上载一个文件:

curl –u name:passwd -T size.mp3 ftp://www.xxx.com/mp3/

# 5、从服务器上删除文件(使用curl传递ftp协议的DELE命令):

curl –u name:passwd ftp://www.xxx.com/ -X 'DELE mp3/size.mp3'

6、另外curl不支持递归下载,不过可以用数组方式下载文件,比如我们要下载1-10.gif连续命名的文件:

# curl –u name:passwd ftp://www.xxx.com/img/[1-10].gif –O #O字母大写

7、要连续下载多个文件:

curl –u name:passwd ftp://www.xxx.com/img/[one,two,three].jpg –O #O字母大写


# 测试代理是否可用 301或200 表示可用

curl -so /dev/null -w "%{http_code}" https://www.google.com -x socks5://127.0.0.1:1080 

# -w 指定输出某项内容,可选项如下所示


curl

url_effective:		%{url_effective}		最终获取的url地址,尤其是当你指定给curl的地址存在301跳转,且通过-L继续追踪的情形。\r\n

http_code: 			%{http_code}			。\r\n

http_connect: 		%{http_connect}			last response (from a proxy) to a curl CONNECT request。\r\n

time_total : 		%{time_total}			总时间,按秒计,精确到小数点后三位。\r\n

time_namelookup: 	%{time_namelookup}		DNS解析时间,从请求开始到DNS解析完毕所用时间。\r\n

time_connect : 		%{time_connect}			从开始到建立TCP连接完成所用时间,包括前边DNS解析时间

time_appconnect: 	%{time_appconnect}		连接建立完成时间,如SSL/SSH等建立连接或者完成三次握手时间。\r\n

time_pretransfer: 	%{time_pretransfer}		从开始到准备传输的时间。\r\n

time_redirect: 		%{time_redirect}		重定向时间,包括到最后一次传输前的几次重定向的DNS解析,连接,预传输,传输时间。\r\n

time_starttransfer:	%{time_starttransfer}	开始传输时间,在发出请求之后,Web 服务器返回数据的第一个字节所用的时间。\r\n

size_download: 		%{size_download}		。\r\n

size_upload: 		%{size_upload}			上传大小。\r\n

size_header: 		%{size_header}			下载的header的大小。\r\n

size_request: 		%{size_request}			请求的大小。\r\n

speed_download: 	%{speed_download}		下载速度,单位-字节每秒。\r\n

speed_upload: 		%{speed_upload}			上传速度,单位-字节每秒。\r\n

content_type: 		%{content_type}			。\r\n

num_connects: 		%{num_connects}			最近的的一次传输中创建的连接数目。\r\n

num_redirects: 		%{num_redirects}		在请求中跳转的次数。\r\n

redirect_url: 		%{redirect_url}			。\r\n

ftp_entry_path: 	%{ftp_entry_path}		当连接到远程的ftp服务器时的初始路径。\r\n

ssl_verify_result: 	%{ssl_verify_result}	ssl认证结果,返回0表示认证成功。\r\n

Wget


wget -c # 端点续传,可以接上次中断处下载,否则会重命名闻见为xxx.1

wget -b # 后台下载

wget -e https_proxy=http://192.168.1.37:10808 https://github.com/1.txt # 代理



测试地址:https://www.httpbin.org/get