curl linux linux官网
Linux系统中的curl命令使用教程
命令:curl
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。
语法:# curl [option] [url]
常见参数:
-A/--user-agent设置用户代理发送给服务器
-b/--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
-#/--progress-bar进度条显示当前的传送状态
例子:
1、基本用法
代码如下:
# curl
执行后,www.linux.com的html就会显示在屏幕上了
Ps:由于安装linux的时候很多时候是没有安装桌面的,也意味着没有浏览器,因此这个方法也经常用于测试一台服务器是否可以到达一个网站
2、保存访问的网页
2.1:使用linux的重定向功能保存
代码如下:
# curl linux.html
2.2:可以使用curl的内置option:-o(小写)保存网页
代码如下:
$ curl-o linux.html
执行完成后会显示如下界面,显示100%则表示保存成功
% Total% Received% Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 79684 0 79684 0 0 3437k 0--:--:----:--:----:--:-- 7781k
2.3:可以使用curl的内置option:-O(大写)保存网页中的文件
要注意这里后面的url要具体到某个文件,不然抓不下来
代码如下:
# curl-O
3、测试网页返回值
代码如下:
# curl-o/dev/null-s-w%{http_code} www.linux.com
Ps:在脚本中,这是很常见的测试网站是否正常的用法
4、指定proxy服务器以及其端口
很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用内置option:-x来支持设置代理
代码如下:
# curl-x 192.168.100.100:1080
5、cookie
有些网站是使用cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可以很容易的处理cookie
5.1:保存http的response里面的cookie信息。内置option:-c(小写)
代码如下:
# curl-c cookiec.txt
执行后cookie信息就被存到了cookiec.txt里面了
5.2:保存http的response里面的header信息。内置option:-D
代码如下:
# curl-D cookied.txt
执行后cookie信息就被存到了cookied.txt里面了
注意:-c(小写)产生的cookie和-D里面的cookie是不一样的。
5.3:使用cookie
很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的,因此我们需要使用保存的cookie信息。内置option:-b
代码如下:
# curl-b cookiec.txt
6、模仿浏览器
有些网站需要使用特定的浏览器去访问他们,有些还需要使用某些特定的版本。curl内置option:-A可以让我们指定浏览器去访问网站
代码如下:
# curl-A"Mozilla/4.0(compatible; MSIE 8.0; Windows NT 5.0)"
这样服务器端就会认为是使用IE8.0去访问的
7、伪造referer(盗链)
很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了
curl中内置option:-e可以让我们设定referer
代码如下:
# curl-e"www.linux.com"
这样就会让服务器其以为你是从www.linux.com点击某个链接过来的
8、下载文件
8.1:利用curl下载文件。
代码如下:
#使用内置option:-o(小写)
# curl-o dodo1.jpg http:www.linux.com/dodo1.JPG
#使用内置option:-O(大写)
# curl-O
这样就会以服务器上的名称保存文件到本地
8.2:循环下载
有时候下载图片可以能是前面的部分名称是一样的,就最后的尾椎名不一样
代码如下:
# curl-O [1-5].JPG
这样就会把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下来
8.3:下载重命名
代码如下:
# curl-O {hello,bb}/dodo[1-5].JPG
由于下载的hello与bb中的文件名都是dodo1,dodo2,dodo3,dodo4,dodo5。因此第二次下载的会把第一次下载的覆盖,这样就需要对文件进行重命名。
代码如下:
# curl-o#1_#2.JPG {hello,bb}/dodo[1-5].JPG
这样在hello/dodo1.JPG的文件下载下来就会变成hello_dodo1.JPG,其他文件依此类推,从而有效的避免了文件被覆盖
8.4:分块下载
有时候下载的东西会比较大,这个时候我们可以分段下载。使用内置option:-r
复制代码
代码如下:
# curl-r 0-100-o dodo1_part1.JPG
# curl-r 100-200-o dodo1_part2.JPG
# curl-r 200--o dodo1_part3.JPG
# cat dodo1_part* dodo1.JPG
这样就可以查看dodo1.JPG的内容了
8.5:通过ftp下载文件
curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法
代码如下:
# curl-O-u用户名:密码
# curl-O ftp://用户名:密码@www.linux.com/dodo1.JPG
8.6:显示下载进度条
代码如下:
# curl-#-O
8.7:不会显示下载进度信息
代码如下:
# curl-s-O
9、断点续传
在windows中,我们可以使用迅雷这样的软件进行断点续传。curl可以通过内置option:-C同样可以达到相同的效果
如果在下载dodo1.JPG的过程中突然掉线了,可以使用以下的方式续传
复制代码
代码如下:
# curl-C-O
10、上传文件
curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现
复制代码
代码如下:
# curl-T dodo1.JPG-u用户名:密码
这样就向ftp服务器上传了文件dodo1.JPG
11、显示抓取错误
复制代码
代码如下:
# curl-f
其他参数(此处翻译为转载):
-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
--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
-form-string
-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
--socks5
-t/--telnet-option
--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
使用curl命令获取文件下载速度
使用curl可以下载网络内容,那如何获取curl下载时的下载速度呢,使用下面的命令即可:
复制代码
代码如下:
# curl-Lo/dev/null-skw"%{speed_download}n"
226493.000
当然,还可以获取连接时间、重定向时间等更多的数据:
复制代码
代码如下:
# curl-Lo/dev/null-skw"time_connect:%{time_connect} sntime_namelookup:%{time_namelookup} sntime_pretransfer:%{time_pretransfer} sntime_starttransfer:%{time_starttransfer} sntime_redirect:%{time_redirect} snspeed_download:%{speed_download} B/sntime_total:%{time_total} snn"
time_connect: 0.154 s
time_namelookup: 0.150 s
time_pretransfer: 0.154 s
time_starttransfer: 0.163 s
time_redirect: 0.157 s
speed_download: 324679.000 B/s
time_total: 1.692 s
Linux入门之curl指令详解
在Linux系统中,网络通信是一项基本而重要的技能。curl是一个功能强大的命令行工具,用于数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,使得从命令行与网络服务交互变得简单快捷。本文将详细介绍curl的基本用法和一些高级特性,帮助Linux初学者快速上手。
curl的基本语法非常简单:
其中,[options]是可选的参数,用于定制curl的行为,[URL...]是一个或多个要访问的URL地址。
要获取一个网页的内容,可以直接使用curl命令后跟URL:
这将输出网页的HTML源码。
如果希望将网页内容保存到本地文件中,可以使用-O选项:
这会将内容保存到名为example.com的文件中。如果URL最后包含斜杠(/),则会保存到名为index.html的文件中。
使用-o选项可以指定保存文件的名称:
这样,网页内容就会被保存到mypage.html文件中。
curl提供了许多选项来满足不同的需求。
默认情况下,curl不会跟随服务器的重定向。使用-L选项可以让curl自动跟随重定向:
用户代理可以通过使用-A选项设置,模拟不同的浏览器访问:
如果需要通过代理服务器访问网络,可以使用-x选项:
curl默认会验证SSL证书。如果希望忽略证书验证,可以使用-k或--insecure选项:
curl可以用于提交表单数据。使用-d选项可以发送POST请求:
curl也可以用于文件上传。使用-F选项可以指定要上传的文件:
其中@表示文件路径,localfile.txt是要上传的本地文件名。
curl的高级用法可以帮助用户完成更复杂的任务。
curl可以保存服务器返回的Cookie,并在后续请求中使用。使用-b选项保存Cookie,使用-c选项读取Cookie:
对于文件上传等操作,可以使用-F选项的多部分表单数据格式:
通过-H选项添加自定义的请求头:
curl支持断点续传功能,可以使用-C选项继续未完成的下载:
如果服务器支持断点续传,curl会自动从上次中断的地方开始下载。
curl是一个功能丰富的工具,适合Linux用户进行网络数据传输和自动化脚本编写。通过掌握上述基本用法和高级特性,用户可以更加高效地与网络服务交互。随着实践的深入,用户会发现curl在处理网络请求方面的潜力无限。
curllinux curl命令
在使用curl命令进行网络操作时,可以利用多种选项来满足不同的需求。以下是curl命令中一些常见且重要的选项:
在上传文件时,若希望将文件附加到目标文件,可以使用-a或--append选项。
设置用户代理发送给服务器的选项是-A或--user-agent,参数为自定义的字符串。
curl支持多种身份验证方法,包括“任何”身份验证(-anyauth),HTTP基本验证(-basic),使用ASCII或文本传输(-B或--use-ascii)等。
可以使用-c或--cookie-jar将cookie字符串或文件读取位置设置为操作结束后写入的文件。
断点续转功能通过-C或--continue-at实现,参数为要从文件中继续下载的偏移量。
HTTP POST方式传送数据使用-d或--data选项,可以传入数据内容。
以ASCII方式post数据可通过-data-ascii选项实现,而以二进制方式post数据则使用-data-binary。
HTTP身份验证(-negotiate)和数字身份验证(-digest)可以在指定的命令下使用。
禁止使用EPRT或LPRT选项为-disable-eprt,而-disable-epsv则用于禁止使用EPSV。
将header信息写入文件通过-D或--dump-header选项实现,参数为输出文件路径。
为随机数据(SSL)设置EGD socket路径使用-egd-file选项。
使用TCP_NODELAY选项通过-tcp-nodelay实现。
设置来源网址的选项是-e或--referer。
客户端证书文件和密码通过-E或--cert设置,参数为证书文件路径及密码(对于SSL)。
证书文件类型(--cert-type)及私钥文件名(--key)通过参数设置,支持DER、PEM、ENG等类型。
私钥密码(--pass)和加密引擎使用(--engine)选项可以进行安全配置。
CA证书(--cacert)及CA目录(--capath)用于验证远程站点或代理。
SSL密码通过--ciphers设置,要求返回压缩形式(--compressed)。
最大请求时间设置(-connect-timeout)及最大传输时间(-m或--max-time)允许进行时间控制。
建立本地目录层次结构(-create-dirs)及保留远程文件时间(-R或--remote-time)提供文件操作的便利性。
文件传输前发送命令到服务器使用-Q或--quote选项。
检索文件字节范围(-r或--range)及限制传输速度(-Y或--speed-limit)等功能可以进行更精细的控制。
输出静音模式(-s或--silent),显示错误(-S或--show-error)等提供了更好的控制输出的灵活性。
代理相关选项包括使用HTTP代理(-p或--proxytunnel),指定代理身份验证方法(--proxy-anyauth、--proxy-basic、--proxy-digest、--proxy-ntlm),以及端口指定(-P或--ftp-port)等。
传输命令指定(-X或--request)为更高级的网络操作提供了支持。
最终输出文件路径设置(-o或--output)及保留远程文件名(-O或--remote-name)提供了文件操作的灵活性。
这些选项覆盖了curl命令的基本使用场景,能够满足从简单的文件上传到复杂的网络认证、代理控制、文件传输控制等需求,为用户提供强大的网络操作能力。
扩展资料
curl是利用URL语法在命令行方式下工作的文件传输工具。