curl(http命令行工具):Linux下最强大的网络数据传输工具

简介: curl(http命令行工具):Linux下最强大的网络数据传输工具

Linux curl(概要)

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。


语法

curl [option] [url]

常见参数

  • -A/–user-agent 设置用户代理发送给服务器
  • -b/–cookie  cookie字符串或文件读取位置
  • -c/–cookie-jar 操作结束后把cookie写入到这个文件中
  • -C/–continue-at 断点续转
  • -D/–dump-header 把header信息写入到该文件中
  • -e/–referer 来源网址
  • -f/–fail 连接失败时不显示http错误
  • -o/–output 把输出写到该文件中
  • -O/–remote-name 把输出写到该文件中,保留远程文件的文件名
  • -r/–range 检索来自HTTP/1.1或FTP服务器字节范围
  • -s/–silent 静音模式。不输出任何东西
  • -T/–upload-file 上传文件
  • -u/–user  设置服务器的用户和密码
  • -w/–write-out [format] 什么输出完成后
  • -x/–proxy  在给定的端口上使用HTTP代理
  • -#/–progress-bar 进度条显示当前的传送状态
  • -a/–append 上传文件时,附加到目标文件
  • –anyauth 可以使用“任何”身份验证方法
  • –basic 使用HTTP基本验证
  • -B/–use-ascii 使用ASCII文本传输
  • -d/–data HTTP POST方式传送数据
  • –data-ascii 以ascii的方式post数据
  • –data-binary 以二进制的方式post数据
  • –negotiate 使用HTTP身份验证
  • –digest 使用数字身份验证
  • –disable-eprt 禁止使用EPRT或LPRT
  • –disable-epsv 禁止使用EPSV
  • –egd-file 为随机数据(SSL)设置EGD socket路径
  • –tcp-nodelay 使用TCP_NODELAY选项
  • -E/–cert  客户端证书文件和密码 (SSL)
  • –cert-type 证书文件类型 (DER/PEM/ENG) (SSL)
  • –key 私钥文件名 (SSL)
  • –key-type 私钥文件类型 (DER/PEM/ENG) (SSL)
  • –pass 私钥密码 (SSL)
  • –engine 加密引擎使用 (SSL). “–engine list” for list
  • –cacert CA证书 (SSL)
  • –capath CA目 (made using c_rehash) to verify peer against (SSL)
  • –ciphers SSL密码
  • –compressed 要求返回是压缩的形势 (using deflate or gzip)
  • –connect-timeout 设置最大请求时间
  • –create-dirs 建立本地目录的目录层次结构
  • –crlf 上传是把LF转变成CRLF
  • –ftp-create-dirs 如果远程目录不存在,创建远程目录
  • –ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
  • –ftp-pasv 使用 PASV/EPSV 代替端口
  • –ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
  • –ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输
  • –ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输
  • -F/–form  模拟http表单提交数据
  • -form-string  模拟http表单提交数据
  • -g/–globoff 禁用网址序列和范围使用{}和[]
  • -G/–get 以get的方式来发送数据
  • -h/–help 帮助
  • -H/–header 自定义头信息传递给服务器
  • –ignore-content-length 忽略的HTTP头信息的长度
  • -i/–include 输出时包括protocol头信息
  • -I/–head 只显示文档信息
  • -j/–junk-session-cookies 读取文件时忽略session cookie
  • –interface 使用指定网络接口/地址
  • –krb4 使用指定安全级别的krb4
  • -k/–insecure 允许不使用证书到SSL站点
  • -K/–config 指定的配置文件读取
  • -l/–list-only 列出ftp目录下的文件名称
  • –limit-rate 设置传输速度
  • –local-port 强制使用本地端口号
  • -m/–max-time 设置最大传输时间
  • –max-redirs 设置最大读取的目录数
  • –max-filesize 设置最大下载的文件总量
  • -M/–manual 显示全手动
  • -n/–netrc 从netrc文件中读取用户名和密码
  • –netrc-optional 使用 .netrc 或者 URL来覆盖-n
  • –ntlm 使用 HTTP NTLM 身份验证
  • -N/–no-buffer 禁用缓冲输出
  • -p/–proxytunnel 使用HTTP代理
  • –proxy-anyauth 选择任一代理身份验证方法
  • –proxy-basic 在代理上使用基本身份验证
  • –proxy-digest 在代理上使用数字身份验证
  • –proxy-ntlm 在代理上使用ntlm身份验证
  • -P/–ftp-port 使用端口地址,而不是使用PASV
  • -Q/–quote 文件传输前,发送命令到服务器
  • –range-file 读取(SSL)的随机文件
  • -R/–remote-time 在本地生成文件时,保留远程文件时间
  • –retry 传输出现问题时,重试的次数
  • –retry-delay 传输出现问题时,设置重试间隔时间
  • –retry-max-time 传输出现问题时,设置最大重试时间
  • -S/–show-error 显示错误
  • –socks4  用socks4代理给定主机和端口
  • –socks5  用socks5代理给定主机和端口
  • -t/–telnet-option  Telnet选项设置
  • –trace 对指定文件进行debug
  • –trace-ascii Like --跟踪但没有hex输出
  • –trace-time 跟踪/详细输出时,添加时间戳
  • –url Spet URL to work with
  • -U/–proxy-user  设置代理用户名和密码
  • -V/–version 显示版本信息
  • -X/–request 指定什么命令
  • -y/–speed-time 放弃限速所要的时间。默认为30
  • -Y/–speed-limit 停止传输速度的限制,速度时间’秒
  • -z/–time-cond 传送时间设置
  • -0/–http1.0 使用HTTP 1.0
  • -1/–tlsv1 使用TLSv1(SSL)
  • -2/–sslv2 使用SSLv2的(SSL)
  • -3/–sslv3 使用的SSLv3(SSL)
  • –3p-quote like -Q for the source URL for 3rd party transfer
  • –3p-url 使用url,进行第三方传送
  • –3p-user 使用用户名和密码,进行第三方传送
  • -4/–ipv4 使用IP4
  • -6/–ipv6 使用IP6

访问的URL

你可以在命令行上指定任意数量的url。它们将按指定的顺序依次获取。

你可以指定多个url,或url的部分通过在花括号内编写部分集,如:

#http://site.{one,two,three}.com
curl http://www.zhangblog.com/2019/06/16/hexo{04,05,06}/ -I  # 查看信息

或者可以使用[]得到字母数字序列的序列,如:

#ftp://ftp.numericals.com/file[1-100].txt
#ftp://ftp.numericals.com/file[001-100].txt   # 前导用零
#ftp://ftp.letters.com/file[a-z].txt 
curl http://www.zhangblog.com/2019/06/16/hexo[04-06]/ -I     # 查看信息

不支持嵌套序列,但可以使用几个相邻的序列:

http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html

你可以指定一个步长计数器的范围,以获得每第n个数字或字母:

http://www.numericals.com/file[1-100:10].txt 
http://www.letters.com/file[a-z:2].txt

如果指定URL而没有protocol:// prefix,默认为HTTP。


示例

#执行后,www.linux.com 的html就会显示在屏幕上
curl http://www.linux.com
#指定proxy服务器以及其端口
curl -x 192.168.100.100:1080 http://www.linux.com
#模仿浏览器
curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com
#伪造referer(盗链)
curl -e "www.linux.com" http://mail.linux.com
#显示抓取错误
curl -f http://www.linux.com/error
#指定要使用curl的最大传输速率。
#单位:默认字节,除非添加后缀。附加 “k” 或 “K” 表示千字节, “m” 或 “M” 表示兆字节,而 “g” 或 “G” 表示千兆字节。例如:200K, 3m和1G。
curl --limit-rate 500 http://www.baidu.com/
curl --limit-rate 2k http://www.baidu.com/
#指定本地的一个端口或端口范围去连接。
#请注意,端口号本质上是一种稀缺资源,有时会很忙,因此将此范围设置为太窄可能会导致不必要的连接失败。
curl --local-port 9000 http://www.baidu.com/
curl --local-port 9000-9999 http://www.baidu.com/

保存访问的网页

#使用linux的重定向功能保存
curl http://www.linux.com >> linux.html
#使用curl的内置option:-o(小写)保存网页
curl -o linux.html http://www.linux.com
#使用curl的内置option:-O(大写)保存网页中的文件,要注意这里后面的url要具体到某个文件,不然抓不下来.
curl -O http://www.linux.com/hello.sh
#测试网页返回值
curl -o /dev/null -s -w %{http_code} www.linux.com\

cookie

#保存http的response里面的cookie信息。内置option:-c(小写),执行后cookie信息就被存到了cookiec.txt里面了
curl -c cookiec.txt  http://www.linux.com
#保存http的response里面的header信息。内置option: -D
curl -D cookied.txt http://www.linux.com
#使用保存的cookie信息。内置option: -b
curl -b cookiec.txt http://www.linux.com

下载上传文件

#使用内置option:-o(小写)
curl -o dodo1.jpg http:www.linux.com/dodo1.JPG
#使用内置option:-O(大写),这样就会以服务器上的名称保存文件到本地
curl -O http://www.linux.com/dodo1.JPG
#循环下载,有时候下载图片可以能是前面的部分名称是一样的,就最后的尾椎名不一样,这样就会把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下来
curl -O http://www.linux.com/dodo[1-5].JPG
#下载重命名
curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG
curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG
#分块下载
curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
cat dodo1_part* > dodo1.JPG
#指定要下载的文件的最大大小(以字节为单位)。
 curl --max-filesize 1000 -I http://www.zhangblog.com/uploads/hexo/00.jpg 
#通过ftp下载文件,curl提供两种从ftp中下载的语法
curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG
curl -O ftp://用户名:密码@www.linux.com/dodo1.JPG
#显示下载进度条
curl -# -O http://www.linux.com/dodo1.JPG
#不会显示下载进度信息
curl -s -O http://www.linux.com/dodo1.JPG
#断点续传
curl -C -O http://www.linux.com/dodo1.JPG
#上传文件
curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/   

提交表单

#-F, --form <name=content>
#模拟用户按下submit按钮后填充的表单。
#该情况让curl 可使用Content-Type multipart/form-data POST数据。也可以上传二进制文件等。
# @文件名:使一个文件作为文件上传附加在post中。
# <文件名:从文件中获取该文本字段的内容。
#将密码文件发送到服务器,其中“password”是表单字段的名称,/etc/passwd将作为输入:
curl -F password=@/etc/passwd www.mypasswords.com
#可以使用 ‘type=’ 告诉curl使用什么 Content-Type ,方法类似于:
curl -F "web=@index.html;type=text/html" url.com
curl -F "name=daniel;type=text/foo" url.com
#可以通过设置 filename= 更改本地上传的文件名,如下:
curl -F "file=@localfile;filename=nameinpost" url.com
#如果文件名/路径包括 ‘,’ 或 ‘;’ ,必须用双引号括起来:最外层可用单引号或双引号,这个选项可以多次使用。
curl -F "file=@\"localfile\";filename=\"nameinpost\"" url.com
curl -F 'file=@"localfile";filename="nameinpost"' url.com
#--form-string <name=string>
#(HTTP)类似于 --form,只是命名参数的value字符串按字面意思使用。
#在值中以 ‘@’ 和 ‘<’ 开头的字符,以及 ‘;type=’ 字符串没有特殊的含义。
#如果字符串值有可能意外触发 --form 的 “@” 或 “<” 特性,请优先使用此选项。
#GET提交 直接写url里面
curl "http://test.com/a.php?param1=aaa¶m2=bbb"
#POST提交    通过 --data/-d 方式指定使用POST方式传递数据
#(注意:如果键值对只有一个的话,可以不写双引号,但是如果有多个键值对,必须加上双引号,键值对之间用&连接)
curl -d "key=value&key=value" "url"
curl --data "key=value&key=value" "url"


目录
相关文章
|
9天前
|
JavaScript 前端开发 网络安全
【网络安全 | 信息收集】JS文件信息收集工具LinkFinder安装使用教程
【网络安全 | 信息收集】JS文件信息收集工具LinkFinder安装使用教程
22 4
|
9天前
|
JavaScript 前端开发 UED
在 JavaScript 中,异步编程和回调函数是处理非阻塞操作(如网络请求、文件读写等)的重要工具
【5月更文挑战第10天】JavaScript中的异步编程和回调函数用于处理非阻塞操作,提高应用响应性和吞吐量。异步编程通过回调函数、Promises和async/await等方式实现,避免程序因等待操作完成而阻塞。回调函数是异步操作完成后调用的函数,常用于处理网络请求等。然而,回调函数存在嵌套问题和错误处理困难,因此出现了Promises和async/await等更优解决方案。
16 3
|
2天前
|
IDE Linux 测试技术
Linux项目自动化构建工具-make/Makefile
Linux项目自动化构建工具-make/Makefile
|
9天前
|
安全 Linux Python
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
|
9天前
|
数据可视化 小程序 Linux
【Linux】自动化构建工具make/Makefile和git介绍
【Linux】自动化构建工具make/Makefile和git介绍
17 0
|
9天前
|
缓存 Linux
linux性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)
这些工具可以帮助你监视系统的内存使用情况、识别内存泄漏、找到高内存消耗的进程等。根据具体的问题和需求,你可以选择使用其中一个或多个工具来进行内存性能分析。注意,内存分析通常需要综合考虑多个指标和工具的输出,以便更好地理解系统的行为并采取相应的优化措施。
36 6
|
9天前
|
Linux
Linux课程四课---Linux开发环境的使用(自动化构建工具-make/Makefile的相关)
Linux课程四课---Linux开发环境的使用(自动化构建工具-make/Makefile的相关)
|
9天前
|
弹性计算 运维 Shell
自动化网络扫描工具发现活跃主机
【4月更文挑战第30天】
12 0
|
9天前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。