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语法在命令行方式下工作的文件传输工具。

阅读剩余
THE END