Curl是Linux下一个很强大的http命令行工具,其功能十分强大。

1)读取网页

$ curl linuxidc.com">http://www.linuxidc.com

2)保存网页

$ curl http://www.linuxidc.com > page.html $ curl -o page.html http://www.linuxidc.com

3)使用的proxy服务器及其端口:-x

$ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com

4)使用cookie来记录session信息

$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com这个option: -D 是把http的response里面的cookie信息存到一个特别的文件中去,这样,当页面被存到page.html的同时,cookie信息也被存到了cookie0001.txt里面了5)那么,下一次访问的时候,如何继续使用上次留下的cookie信息呢?

使用option来把上次的cookie信息追加到http request里面去:-b

$ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.linuxidc.com

6)浏览器信息

$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txthttp://www.linuxidc.com

7)referer

$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -e "mail.linuxidc.com" -o page.html -D cookie0001.txt http://www.linuxidc.com这样就可以骗对方的服务器,你是从mail.linuxidc.com点击某个链接过来的

8)下载文件

$ curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG $ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG -O 可以按照服务器上的文件名,自动存在本地$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG

9)批量下载

$ curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG这样产生的下载,就是~zzh/001.JPG ~zzh/002.JPG

……

~zzh/201.JPG ~nick/001.JPG ~nick/002.JPG

……

~nick/201.JPG

$自定义文件名的下载

curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG这样,自定义出来下载下来的文件名,就变成了这样:原来: ~zzh/001.JPG —-> 下载后: 001-zzh.JPG 原来: ~nick/001.JPG —-> 下载后: 001-nick.JPG

这样一来就不怕文件重名啦

9)断点续传

$ curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG分块下载,我们使用这个option就可以了: -r

举例说明

比如我们有一个http://cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 要下载(赵老师的电话朗诵 :D )我们就可以用这样的命令:$ curl -r 0-10240 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 $ curl -r 10241-20480 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 $ curl -r 20481-40960 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 $ curl -r 40961- -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3这样就可以分块下载啦。不过你需要自己把这些破碎的文件合并起来如果你用UNIX或苹果,用 cat zhao.part* > zhao.MP3就可以如果用的是Windows,用copy /b 来解决吧,呵呵上面讲的都是http协议的下载,其实ftp也一样可以用。用法嘛,

$ curl -u name:passwd ftp://ip:port/path/file

或者大家熟悉的

$ curl ftp://namepasswd@ip:port/path/file

10)上传的option是-T

比如我们向ftp传一个文件:

$ curl -T localfile -u name:passwd ftp://upload_site:port/path/

当然,向http服务器上传文件也可以比如$ curl -T localfile http://cgi2.tky.3web.ne.jp/~zzh/abc.cgi注意,这时候,使用的协议是HTTP的PUT method刚才说到PUT,嘿嘿,自然让老服想起来了其他几种methos还没讲呢! GET和POST都不能忘哦。

11)POST和GET模式

$ curl http://www.linuxidc.com/login.cgi?user=nickwolfe

而POST模式的option则是-d

比如,$ curl -d "user=nickwolfe http://www.linuxidc.com/login.cgi

一点需要注意的是,POST模式下的文件上的文件上传,比如

这样一个HTTP表单,我们要用curl进行模拟,就该是这样的语法:$ curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi

https本地证书

$ curl -E localcert.pem https://remote_server再比如,你还可以用curl通过dict协议去查字典$ curl dict://dict.org/d:computer

---------------------------

Curl是Linux下一个很强大的http命令行工具,其功能十分强大。

1) 二话不说,先从这里开始吧!

$ curl http://www.linuxidc.com

回车之后,www.linuxidc.com 的html就稀里哗啦地显示在屏幕上了    ~

2) 嗯,要想把读过来页面存下来,是不是要这样呢?

$ curl http://www.linuxidc.com > page.html

当然可以,但不用这么麻烦的!

用curl的内置option就好,存下http的结果,用这个option: -o

$ curl -o page.html http://www.linuxidc.com

这样,你就可以看到屏幕上出现一个下载页面进度指示。等进展到100%,自然就 OK咯

3) 什么什么?!访问不到?肯定是你的proxy没有设定了。

使用curl的时候,用这个option可以指定http访问所使用的proxy服务器及其端口: -x

$ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com

4) 访问有些网站的时候比较讨厌,他使用cookie来记录session信息。

像IE/NN这样的浏览器,当然可以轻易处理cookie信息,但我们的curl呢?.....

我们来学习这个option: -D <— 这个是把http的response里面的cookie信息存到一个特别的文件中去

$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com

这样,当页面被存到page.html的同时,cookie信息也被存到了cookie0001.txt里面了

5)那么,下一次访问的时候,如何继续使用上次留下的cookie信息呢?要知道,很多网站都是靠监视你的cookie信息,来判断你是不是不按规矩访问他们的网站的。

这次我们使用这个option来把上次的cookie信息追加到http request里面去: -b

$ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.linuxidc.com

这样,我们就可以几乎模拟所有的IE操作,去访问网页了!

6)稍微等等    ~我好像忘记什么了    ~

对了!是浏览器信息

有些讨厌的网站总要我们使用某些特定的浏览器去访问他们,有时候更过分的是,还要使用某些特定的版本     NND,哪里有时间为了它去找这些怪异的浏览器呢!?

好在curl给我们提供了一个有用的option,可以让我们随意指定自己这次访问所宣称的自己的浏览器信息: -A

$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com

这样,服务器端接到访问的要求,会认为你是一个运行在Windows 2000上的 IE6.0,嘿嘿嘿,其实也许你用的是苹果机呢!

而"Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686"则可以告诉对方你是一台 PC上跑着的Linux,用的是Netscape 4.73,呵呵呵

7)另外一个服务器端常用的限制方法,就是检查http访问的referer。比如你先访问首页,再访问里面所指定的下载页,这第二次访问的 referer地址就是第一次访问成功后的页面地址。这样,服务器端只要发现对下载页面某次访问的referer地址不是首页的地址,就可以断定那是个盗连了    ~

讨厌讨厌 ~我就是要盗连    ~!!

幸好curl给我们提供了设定referer的option: -e

$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -e "mail.linuxidc.com" -o page.html -D cookie0001.txt http://www.linuxidc.com

这样,就可以骗对方的服务器,你是从mail.linuxidc.com点击某个链接过来的了,呵呵呵

8)写着写着发现漏掉什么重要的东西了!——- 利用curl 下载文件

刚才讲过了,下载页面到一个文件里,可以使用 -o ,下载文件也是一样。比如,

$ curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG

这里教大家一个新的option: -O 大写的O,这么用:

$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG

这样,就可以按照服务器上的文件名,自动存在本地了!

再来一个更好用的。

如果screen1.JPG以外还有screen2.JPG、screen3.JPG、....、screen10.JPG需要下载,难不成还要让我们写一个script来完成这些操作?

不干!

在curl里面,这么写就可以了:

$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG

呵呵呵,厉害吧?! ~

9)再来,我们继续讲解下载!

$ curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG

这样产生的下载,就是

~zzh/001.JPG

~zzh/002.JPG

...

~zzh/201.JPG

~nick/001.JPG

~nick/002.JPG

...

~nick/201.JPG

够方便的了吧?哈哈哈

咦?高兴得太早了。

由于zzh/nick下的文件名都是001,002...,201,下载下来的文件重名,后面的把前面的文件都给覆盖掉了 ~

没关系,我们还有更狠的!

$ curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG

—这是.....自定义文件名的下载? —对头,呵呵!

这样,自定义出来下载下来的文件名,就变成了这样:原来: ~zzh/001.JPG —-> 下载后: 001-zzh.JPG 原来: ~nick/001.JPG —-> 下载后: 001-nick.JPG

这样一来,就不怕文件重名啦,呵呵

9)继续讲下载

我们平时在windows平台上,flashget这样的工具可以帮我们分块并行下载,还可以断线续传。curl在这些方面也不输给谁,嘿嘿

比如我们下载screen1.JPG中,突然掉线了,我们就可以这样开始续传

$ curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG

当然,你不要拿个flashget下载了一半的文件来糊弄我    别的下载软件的半截文件可不一定能用哦 ~

分块下载,我们使用这个option就可以了: -r

举例说明

比如我们有一个http://cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 要下载(赵老师的电话朗诵 :D )我们就可以用这样的命令:

$ curl -r 0-10240 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &\

$ curl -r 10241-20480 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &\

$ curl -r 20481-40960 -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &\

$ curl -r 40961- -o "zhao.part1" http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3

这样就可以分块下载啦。不过你需要自己把这些破碎的文件合并起来如果你用UNIX或苹果,用 cat zhao.part* > zhao.MP3就可以如果用的是Windows,用copy /b 来解决吧,呵呵

上面讲的都是http协议的下载,其实ftp也一样可以用。用法嘛,

$ curl -u name:passwd ftp://ip:port/path/file

或者大家熟悉的

$ curl ftp://name:passwd@ip:port/path/file

10) 说完了下载,接下来自然该讲上传咯上传的option是 -T

比如我们向ftp传一个文件:

$ curl -T localfile -u name:passwd ftp://upload_site:port/path/

当然,向http服务器上传文件也可以比如

$ curl -T localfile http://cgi2.tky.3web.ne.jp/~zzh/abc.cgi

注意,这时候,使用的协议是HTTP的PUT method

刚才说到PUT,嘿嘿,自然让老服想起来了其他几种methos还没讲呢! GET和POST都不能忘哦。

http提交一个表单,比较常用的是POST模式和GET模式

GET模式什么option都不用,只需要把变量写在url里面就可以了比如:

$ curl http://www.linuxidc.com/login.cgi?user=nickwolfe&password=12345

而POST模式的option则是 -d

比如,

$ curl -d "user=nickwolfe&password=12345" http://www.linuxidc.com/login.cgi

就相当于向这个站点发出一次登陆申请    ~

到底该用GET模式还是POST模式,要看对面服务器的程序设定。

一点需要注意的是,POST模式下的文件上的文件上传,比如

<form method="POST" enctype="multipar/form-data" action="http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi">

<input type=file name=upload>

<input type=submit name=nick value="go">

</form>

这样一个HTTP表单,我们要用curl进行模拟,就该是这样的语法:

$ curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi

罗罗嗦嗦讲了这么多,其实curl还有很多很多技巧和用法比如 https的时候使用本地证书,就可以这样

$ curl -E localcert.pem https://remote_server

再比如,你还可以用curl通过dict协议去查字典    ~

$ curl dict://dict.org/d:computer
------------------------------------------------------------------

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。

  一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。

  -a/--append 上传文件时,附加到目标文件

  -A/--user-agent <string>  设置用户代理发送给服务器

  - anyauth   可以使用“任何”身份验证方法

  -b/--cookie <name=string/file> cookie字符串或文件读取位置

  - basic 使用HTTP基本验证

  -B/--use-ascii 使用ASCII /文本传输

  -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中

  -C/--continue-at <offset>  断点续转

  -d/--data <data>   HTTP POST方式传送数据

  --data-ascii <data>  以ascii的方式post数据

  --data-binary <data> 以二进制的方式post数据

  --negotiate     使用HTTP身份验证

  --digest        使用数字身份验证

  --disable-eprt  禁止使用EPRT或LPRT

  --disable-epsv  禁止使用EPSV

  -D/--dump-header <file> 把header信息写入到该文件中

  --egd-file <file> 为随机数据(SSL)设置EGD socket路径

  --tcp-nodelay   使用TCP_NODELAY选项

  -e/--referer 来源网址

  -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)

  --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)

  --key <key>     私钥文件名 (SSL)

  --key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)

  --pass  <pass>  私钥密码 (SSL)

  --engine <eng>  加密引擎使用 (SSL). "--engine list" for list

  --cacert <file> CA证书 (SSL)

  --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)

  --ciphers <list>  SSL密码

  --compressed    要求返回是压缩的形势 (using deflate or gzip)

  --connect-timeout <seconds> 设置最大请求时间

  --create-dirs   建立本地目录的目录层次结构

  --crlf          上传是把LF转变成CRLF

  -f/--fail          连接失败时不显示http错误

  --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 <name=content> 模拟http表单提交数据

  -form-string <name=string> 模拟http表单提交数据

  -g/--globoff 禁用网址序列和范围使用{}和[]

  -G/--get 以get的方式来发送数据

  -h/--help 帮助

  -H/--header <line>自定义头信息传递给服务器

  --ignore-content-length  忽略的HTTP头信息的长度

  -i/--include 输出时包括protocol头信息

  -I/--head  只显示文档信息

  从文件中读取-j/--junk-session-cookies忽略会话Cookie

  - 界面<interface>指定网络接口/地址使用

  - krb4 <级别>启用与指定的安全级别krb4

  -j/--junk-session-cookies 读取文件进忽略session cookie

  --interface <interface> 使用指定网络接口/地址

  --krb4 <level>  使用指定安全级别的krb4

  -k/--insecure 允许不使用证书到SSL站点

  -K/--config  指定的配置文件读取

  -l/--list-only 列出ftp目录下的文件名称

  --limit-rate <rate> 设置传输速度

  --local-port<NUM> 强制使用本地端口号

  -m/--max-time <seconds> 设置最大传输时间

  --max-redirs <num> 设置最大读取的目录数

  --max-filesize <bytes> 设置最大下载的文件总量

  -M/--manual  显示全手动

  -n/--netrc 从netrc文件中读取用户名和密码

  --netrc-optional 使用 .netrc 或者 URL来覆盖-n

  --ntlm          使用 HTTP NTLM 身份验证

  -N/--no-buffer 禁用缓冲输出

  -o/--output 把输出写到该文件中

  -O/--remote-name 把输出写到该文件中,保留远程文件的文件名

  -p/--proxytunnel   使用HTTP代理

  --proxy-anyauth 选择任一代理身份验证方法

  --proxy-basic   在代理上使用基本身份验证

  --proxy-digest  在代理上使用数字身份验证

  --proxy-ntlm    在代理上使用ntlm身份验证

  -P/--ftp-port <address> 使用端口地址,而不是使用PASV

  -Q/--quote <cmd>文件传输前,发送命令到服务器

  -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围

  --range-file 读取(SSL)的随机文件

  -R/--remote-time   在本地生成文件时,保留远程文件时间

  --retry <num>   传输出现问题时,重试的次数

  --retry-delay <seconds>  传输出现问题时,设置重试间隔时间

  --retry-max-time <seconds> 传输出现问题时,设置最大重试时间

  -s/--silent静音模式。不输出任何东西

  -S/--show-error   显示错误

  --socks4 <host[:port]> 用socks4代理给定主机和端口

  --socks5 <host[:port]> 用socks5代理给定主机和端口

  --stderr <file>

 -t/--telnet-option <OPT=val> Telnet选项设置

  --trace <file>  对指定文件进行debug

  --trace-ascii <file> Like --跟踪但没有hex输出

  --trace-time    跟踪/详细输出时,添加时间戳

  -T/--upload-file <file> 上传文件

  --url <URL>     Spet URL to work with

  -u/--user <user[:password]>设置服务器的用户和密码

  -U/--proxy-user <user[:password]>设置代理用户名和密码

  -v/--verbose

  -V/--version 显示版本信息

  -w/--write-out [format]什么输出完成后

  -x/--proxy <host[:port]>在给定的端口上使用HTTP代理

  -X/--request <command>指定什么命令

  -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

  -#/--progress-bar 用进度条显示当前的传送状态

  -a/--append 上传文件时,附加到目标文件

  -A/--user-agent <string>  设置用户代理发送给服务器

  - anyauth   可以使用“任何”身份验证方法

  -b/--cookie <name=string/file> cookie字符串或文件读取位置

  - basic 使用HTTP基本验证

  -B/--use-ascii 使用ASCII /文本传输

  -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中

  -C/--continue-at <offset>  断点续转

  -d/--data <data>   HTTP POST方式传送数据

  --data-ascii <data>  以ascii的方式post数据

  --data-binary <data> 以二进制的方式post数据

  --negotiate     使用HTTP身份验证

  --digest        使用数字身份验证

  --disable-eprt  禁止使用EPRT或LPRT

  --disable-epsv  禁止使用EPSV

  -D/--dump-header <file> 把header信息写入到该文件中

  --egd-file <file> 为随机数据(SSL)设置EGD socket路径

  --tcp-nodelay   使用TCP_NODELAY选项

  -e/--referer 来源网址

  -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)

  --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)

  --key <key>     私钥文件名 (SSL)

  --key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)

  --pass  <pass>  私钥密码 (SSL)

  --engine <eng>  加密引擎使用 (SSL). "--engine list" for list

  --cacert <file> CA证书 (SSL)

  --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)

  --ciphers <list>  SSL密码

  --compressed    要求返回是压缩的形势 (using deflate or gzip)

  --connect-timeout <seconds> 设置最大请求时间

  --create-dirs   建立本地目录的目录层次结构

  --crlf          上传是把LF转变成CRLF

  -f/--fail          连接失败时不显示http错误

  --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 <name=content> 模拟http表单提交数据

  -form-string <name=string> 模拟http表单提交数据

  -g/--globoff 禁用网址序列和范围使用{}和[]

  -G/--get 以get的方式来发送数据

  -h/--help 帮助

  -H/--header <line>自定义头信息传递给服务器

  --ignore-content-length  忽略的HTTP头信息的长度

  -i/--include 输出时包括protocol头信息

  -I/--head  只显示文档信息

  从文件中读取-j/--junk-session-cookies忽略会话Cookie

  - 界面<interface>指定网络接口/地址使用

  - krb4 <级别>启用与指定的安全级别krb4

  -j/--junk-session-cookies 读取文件进忽略session cookie

  --interface <interface> 使用指定网络接口/地址

  --krb4 <level>  使用指定安全级别的krb4

  -k/--insecure 允许不使用证书到SSL站点

  -K/--config  指定的配置文件读取

  -l/--list-only 列出ftp目录下的文件名称

  --limit-rate <rate> 设置传输速度

  --local-port<NUM> 强制使用本地端口号

  -m/--max-time <seconds> 设置最大传输时间

  --max-redirs <num> 设置最大读取的目录数

  --max-filesize <bytes> 设置最大下载的文件总量

-M/--manual  显示全手动

  -n/--netrc 从netrc文件中读取用户名和密码

  --netrc-optional 使用 .netrc 或者 URL来覆盖-n

  --ntlm          使用 HTTP NTLM 身份验证

  -N/--no-buffer 禁用缓冲输出

  -o/--output 把输出写到该文件中

  -O/--remote-name 把输出写到该文件中,保留远程文件的文件名

  -p/--proxytunnel   使用HTTP代理

  --proxy-anyauth 选择任一代理身份验证方法

  --proxy-basic   在代理上使用基本身份验证

  --proxy-digest  在代理上使用数字身份验证

  --proxy-ntlm    在代理上使用ntlm身份验证

  -P/--ftp-port <address> 使用端口地址,而不是使用PASV

  -Q/--quote <cmd>文件传输前,发送命令到服务器

  -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围

  --range-file 读取(SSL)的随机文件

  -R/--remote-time   在本地生成文件时,保留远程文件时间

  --retry <num>   传输出现问题时,重试的次数

  --retry-delay <seconds>  传输出现问题时,设置重试间隔时间

  --retry-max-time <seconds> 传输出现问题时,设置最大重试时间

  -s/--silent静音模式。不输出任何东西

  -S/--show-error   显示错误

  --socks4 <host[:port]> 用socks4代理给定主机和端口

  --socks5 <host[:port]> 用socks5代理给定主机和端口

  --stderr <file>

  -t/--telnet-option <OPT=val> Telnet选项设置

  --trace <file>  对指定文件进行debug

  --trace-ascii <file> Like --跟踪但没有hex输出

  --trace-time    跟踪/详细输出时,添加时间戳

  -T/--upload-file <file> 上传文件

  --url <URL>     Spet URL to work with

  -u/--user <user[:password]>设置服务器的用户和密码

  -U/--proxy-user <user[:password]>设置代理用户名和密码

  -v/--verbose

  -V/--version 显示版本信息

  -w/--write-out [format]什么输出完成后

  -x/--proxy <host[:port]>在给定的端口上使用HTTP代理

  -X/--request <command>指定什么命令

  -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

  -#/--progress-bar 用进度条显示当前的传送状态

  二,常用curl实例

  1,抓取页面内容到一个文件中

  [root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com

  [root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com

  2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西

  [root@krlcgcms01 mytest]# curl -O

  [root@krlcgcms01 mytest]# curl -O

  3,模拟表单信息,模拟登录,保存cookie信息

  [root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

  [root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

  4,模拟表单信息,模拟登录,保存头信息

  [root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

  [root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

  -c(小写)产生的cookie和-D里面的cookie是不一样的。

  5,使用cookie文件

  [root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin

  [root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin

  6,断点续传,-C(大写的)

  [root@krlcgcms01 mytest]# curl -C -O

  7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功

  [root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php

  [root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php

  8,显示抓取错误,下面这个例子,很清楚的表明了。

  [root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf

  curl: (22) The requested URL returned error: 404

  [root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf

  <HTML><HEAD><TITLE>404,not found</TITLE>

  。。。。。。。。。。。。

  [root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf

  curl: (22) The requested URL returned error: 404

  [root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf

  <HTML><HEAD><TITLE>404,not found</TITLE>

  。。。。。。。。。。。。

  9,伪造来源地址,有的网站会判断,请求来源地址。

  [root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php

  [root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php

  10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理

  [root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com

  [root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com

11,比较大的东西,我们可以分段下载

  [root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0

  [root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0

  [root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961

  [root@krlcgcms01 mytest]# ls |grep part | xargs du -sh

  4.0K    one.part1

  112K    three.part3

  4.0K    two.part2

  [root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0

  [root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0

  [root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-

  content/uploads/2010/09/compare_varnish.jpg

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961

  [root@krlcgcms01 mytest]# ls |grep part | xargs du -sh

  4.0K    one.part1

  112K    three.part3

  4.0K    two.part2

  用的时候,把他们cat一下就OK了,cat img.part* >img.jpg

  12,不会显示下载进度信息

  [root@krlcgcms01 mytest]# curl -s -o aaa.jpg

  13,显示下载进度条

  [root@krlcgcms01 mytest]# curl -# -O

  ######################################################################## 100.0%

  14,通过ftp下载文件

  [zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136

  [zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

  Dload  Upload   Total   Spent    Left  Speed

  101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136

  或者用下面的方式

  [zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css

  [zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css

  15,通过ftp上传

  [zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/

  [zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/

Linux Curl常用命令使用【转】的更多相关文章

  1. Linux curl 常用命令

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

  2. Linux curl 常用示例

    本篇文章包含了curl的常用案例使用. 如果想了解curl选项的详细说明,请参考前一篇文章「Linux curl 命令详解」. 常见网页访问示例 基本用法 访问一个网页 curl https://ww ...

  3. Linux系统管理常用命令

    Linux系统管理常用命令 分类: Linux2011-01-10 18:26 1538人阅读 评论(0) 收藏 举报 linuxcommandservicenginxuserunix 目录(?)[+ ...

  4. Linux + NodeJS 常用命令

    Linux系统常用命令 1.su 由当前用户切换至root用户: 2. su username 切换至某一用户: 3.chmod u+w /etc/sudoers 为/etc/sudoers文件添加写 ...

  5. Linux GDB常用命令一栏

    Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明: (*** 表示可执行程序名) (2)退出:quit.有的时候输入quit后会出现相关提示:类似 ...

  6. Linux 下常用命令

    linux 下常用命令: 1.删除文件命令为 rm 2.创建目录的命令是:mkdir 3.删除目录的命令是rmdir(空目录) 4.切换到root帐号:su 5.查看所有进程:ps -aux 6.杀死 ...

  7. linux 服务器常用命令整理

    linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...

  8. 计算机硬件基本知识及Linux的常用命令

    ------------------1. 计算机硬件基本知识------------------ CPU - 寄存器 - L1/L2/L3 - 内存 - 硬盘 - 互联网下载/其他存储介质传输 寄存器 ...

  9. 一、Linux概述 二、Linux的安装 三、Linux的常用命令(重点)

    一.Linux概述###<1>操作系统 OS,管理和控制 计算机的 硬件和软件资源的 计算机程序. 最基本的系统软件. 是用户和计算机交互的桥梁,是硬件和软件交互的桥梁. 操作系统:she ...

随机推荐

  1. python读写protobuf

    0.     前期准备 官方protobuf定义 https://code.google.com/p/protobuf/   python使用指南 https://developers.google. ...

  2. WPF专业编程指南 - DispatcherUnhandledException

    WPF的Application类中有一个事件:DispatcherUnhandledException,在应用程序未对其中的异常加以处理的情况下发生,从而为应用程序把好最后的大门 namespace ...

  3. sql基础篇

    再跟SQL谈一谈--基础篇   1.简介 2.DDL & DML 3.SELECT ①DISTINCT ②WHERE ③AND & OR ④ORDER BY 4.INSERT 5.UP ...

  4. Group by Grouping

    玩转数据库之 Group by Grouping 有的时候我们要从数据库里把数据组织成树结构再展现到页面上 像下面这样 今天我们用Group 和Grouping实现它,并总结一下它俩. 先看一下概念, ...

  5. weblogic配置修改java代码后不需要重启热部署方式

    我用的是weblogic8.x 在项目的WEB-INFO中创建weblogic.xml --------以下内容复制到weblogic.xml中------------ <!DOCTYPE we ...

  6. QzzmServer v2.0正式版发布

                                 V2.1升级程序已发布,具体见下文                                首先,感谢网友的热情的测评及反馈,现Qzzm ...

  7. 软件快速开发平台 WebBuilder 6.8

    WebBuilder是一款开源的跨平台.数据库和浏览器的可视化Web应用快速开发平台.WebBuilder使用了多项最新的技术,使Web应用的开发更快捷和简单. 作为一款高效的Web开发工具,WebB ...

  8. 设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用

    设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo ...

  9. U盘读不出+卷标丢失+像读卡器+大小0+无媒体

    U盘读不出+卷标丢失+像读卡器+大小0+无媒体 标题有点怪,原因是我不都不知道该怎样概括这个鸟问题,所以尽可能列出一些主要现象,希望有需要的童鞋搜到.但比标题更怪的是问题本身,且听我道来: 陪伴我若干 ...

  10. python JSON API duckduckgo search engine 使用duckduckgo API 尝试搜索引擎

    The duckduckgo.com's search engine is very neat to use. Acutally it has many things to do with other ...