$7.49 .com domain with free InstantPage Website Builder$1.99 Web Hosting   捷飞网络官方淘宝店   Godaddy 优惠码
返回列表 发帖
分享到:




[应用&技术] 分享linux curl 命令参数详解,以及操作实例

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。* }! p2 y0 u/ X. I- P# Y

! Q, _( k7 L0 f4 A6 p* r5 D+ F& q. K0 i8 M0 u& z; T: t% v$ j

/ U! i/ h9 Z7 R6 D1 D  z# \( v5 J* a! x2 I3 u6 K0 t, N
一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。+ ]0 K: l  m5 o

7 S, X2 [3 @3 j+ c# A7 Q
6 ~! j) N2 `/ L7 O% g* u-a/--append 上传文件时,附加到目标文件( O' U$ t9 [& \3 I- y0 {1 {
-A/--user-agent <string>  设置用户代理发送给服务器1 _4 E1 F. p+ P0 y: V2 {* b6 C. e3 g
- anyauth   可以使用“任何”身份验证方法" l8 U: ~% i7 ]- O
-b/--cookie <name=string/file> cookie字符串或文件读取位置9 e* I* N0 e' A# e+ ?  ?
- basic 使用HTTP基本验证" X6 q% K% p% l; l5 P8 U
-B/--use-ascii 使用ASCII /文本传输
7 I9 e& K7 r% T5 l -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
) w+ _' x  Z5 _! V; d* Y -C/--continue-at <offset>  断点续转
* L& `& q4 h: F7 W. q -d/--data <data>   HTTP POST方式传送数据
; u6 W) j+ \; ~) S# G( u$ B --data-ascii <data>  以ascii的方式post数据
) Y  d" ~4 g. A2 t* f' F* Y --data-binary <data> 以二进制的方式post数据
$ t; s& Z1 \5 v- X --negotiate     使用HTTP身份验证
/ E' g; j) E. m3 v, n* ` --digest        使用数字身份验证* T6 ?0 P5 ^, x% }, o
--disable-eprt  禁止使用EPRT或LPRT
7 `1 t& p# q. G9 d --disable-epsv  禁止使用EPSV
3 ~6 W3 S) w; c -D/--dump-header <file> 把header信息写入到该文件中
3 D) G" o2 m) i7 X; Y --egd-file <file> 为随机数据(SSL)设置EGD socket路径
7 F7 r4 _' W9 D7 _' Q; [$ Q --tcp-nodelay   使用TCP_NODELAY选项
& }  C5 o; L& U' T# v; E -e/--referer 来源网址1 w- y( ^8 L. q! G. G- H( X
-E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)) J" `% ?# {& v
--cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL); o% v4 v8 i8 J( G% ~; x5 A
--key <key>     私钥文件名 (SSL)# a1 d8 I4 v, K" |$ ]  k, e
--key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)5 F. k% C% k  ^. R- A) b
--pass  <pass>  私钥密码 (SSL)
* W+ S3 L# ~( {$ m6 U --engine <eng>  加密引擎使用 (SSL). "--engine list" for list
$ u+ {% E- f" A( [2 y; X. ] --cacert <file> CA证书 (SSL)7 [$ ^0 x0 _1 ^+ Y, y: ~
--capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
  t& G8 B2 _! H; {' a5 J --ciphers <list>  SSL密码
0 t. o* ~3 G/ Y) H* G. |5 r# M --compressed    要求返回是压缩的形势 (using deflate or gzip)/ w! [& ^( N/ O) F" v6 f
--connect-timeout <seconds> 设置最大请求时间
4 s, ?- \4 X0 a/ s3 ? --create-dirs   建立本地目录的目录层次结构
3 _8 G$ G7 P# b# P --crlf          上传是把LF转变成CRLF
) ^4 ]: F. O3 Q) e' [8 M -f/--fail          连接失败时不显示http错误
; e0 \+ Q! K2 }' d% p --ftp-create-dirs 如果远程目录不存在,创建远程目录
# ~  f- x9 s5 z --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
! Z3 o$ F( y! U* T) N --ftp-pasv      使用 PASV/EPSV 代替端口9 }6 m& X, `3 p6 b
--ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
4 i0 [0 r+ g) h' x' o9 [ --ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输' |" F) B( h2 w  r/ I$ D6 w
--ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输
! `) @" g0 g$ m, o4 i2 @+ e -F/--form <name=content> 模拟http表单提交数据3 h: }' }  R' n# k& X& p9 s
-form-string <name=string> 模拟http表单提交数据
5 i! M5 H' z6 `) S5 S3 F: { -g/--globoff 禁用网址序列和范围使用{}和[]) f& v) `  H. d- L
-G/--get 以get的方式来发送数据
0 {/ ~8 G/ y: w5 g8 u -h/--help 帮助
' @8 _  W# M: Z, x -H/--header <line>自定义头信息传递给服务器& c( ]0 S4 E- p4 ?% c
--ignore-content-length  忽略的HTTP头信息的长度& y8 U! a; m. f  l
-i/--include 输出时包括protocol头信息
( s4 W9 d: q$ M: f% J -I/--head  只显示文档信息
- K# q( t% Q* Y& k# V& R: n 从文件中读取-j/--junk-session-cookies忽略会话Cookie
( Z- r' s8 S% N: c - 界面<interface>指定网络接口/地址使用) b5 \( ~' [7 k' _/ p
- krb4 <级别>启用与指定的安全级别krb4# s  p1 W9 s3 P) U1 c& U
-j/--junk-session-cookies 读取文件进忽略session cookie
5 E  U3 G/ w2 q$ t1 V- G# A/ |; B5 R --interface <interface> 使用指定网络接口/地址0 O" X' j( P1 a" w
--krb4 <level>  使用指定安全级别的krb4
& }, J$ \: V9 V -k/--insecure 允许不使用证书到SSL站点
$ N( B3 @# d1 q) ]7 f -K/--config  指定的配置文件读取# Z5 Y5 z: p$ I( d" u+ M' J
-l/--list-only 列出ftp目录下的文件名称
6 z. v- Z" M5 j5 ~. l# h" w --limit-rate <rate> 设置传输速度
+ L& B- }  o" M+ V --local-port<NUM> 强制使用本地端口号
+ {% ^3 y  ?8 p" [4 x -m/--max-time <seconds> 设置最大传输时间
+ a( Z  k/ G7 h. u: i0 T7 k --max-redirs <num> 设置最大读取的目录数
" i/ g, d& I1 `7 L# o --max-filesize <bytes> 设置最大下载的文件总量9 ~$ K( ^( M  t) x4 ]
-M/--manual  显示全手动) t8 b( d+ T. k; B8 _; q: J
-n/--netrc 从netrc文件中读取用户名和密码
5 n" c( F4 Z+ `& q0 ] --netrc-optional 使用 .netrc 或者 URL来覆盖-n
2 H. b6 f- H9 e  g! J  p( O( K8 I --ntlm          使用 HTTP NTLM 身份验证
1 r" \1 E+ t+ K3 S' c8 _/ e( O -N/--no-buffer 禁用缓冲输出
$ ]0 n( |% K+ f* Q, ] -o/--output 把输出写到该文件中  @! Y9 n+ f# ]3 d/ Q
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名5 [5 }# H$ A( J) C2 p3 c; n$ [
-p/--proxytunnel   使用HTTP代理
8 x" D# Y" V+ r+ f --proxy-anyauth 选择任一代理身份验证方法0 @+ p9 v0 m1 m. V. m- {
--proxy-basic   在代理上使用基本身份验证
: l. x8 g  v4 U; x+ s --proxy-digest  在代理上使用数字身份验证4 l* }, B" a" v
--proxy-ntlm    在代理上使用ntlm身份验证
' q0 c: t/ t4 i9 P, _ -P/--ftp-port <address> 使用端口地址,而不是使用PASV& N2 _& ]" m* Q& S- n5 t( P/ d
-Q/--quote <cmd>文件传输前,发送命令到服务器
( t% X/ f" ^) `4 O9 F; V -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围, i6 \, k+ z3 D7 Z, w
--range-file 读取(SSL)的随机文件' s! T5 c: G% H
-R/--remote-time   在本地生成文件时,保留远程文件时间7 b# g  Y4 k# m7 x6 Y8 X7 H
--retry <num>   传输出现问题时,重试的次数
7 B0 s; a; E  I# f8 @2 R --retry-delay <seconds>  传输出现问题时,设置重试间隔时间( O8 Y4 x' E3 L" U
--retry-max-time <seconds> 传输出现问题时,设置最大重试时间
( U4 Y* o7 A8 U! V -s/--silent静音模式。不输出任何东西
; |0 i( m; l- h1 J -S/--show-error   显示错误( U3 @; d0 }" d' D2 l
--socks4 <host[:port]> 用socks4代理给定主机和端口
& W4 a1 `+ q" T# b5 x" D4 A. X --socks5 <host[:port]> 用socks5代理给定主机和端口
0 e! A9 o4 b5 u! @+ ]" T --stderr <file>
' h9 P' q( V: F/ G6 W+ G: h -t/--telnet-option <OPT=val> Telnet选项设置5 O. b- w" J$ o0 D' g
--trace <file>  对指定文件进行debug. R0 T5 n* V; ^& T
--trace-ascii <file> Like --跟踪但没有hex输出
: o$ c: r' r( C/ { --trace-time    跟踪/详细输出时,添加时间戳  Q/ E+ N2 x9 T, ^
-T/--upload-file <file> 上传文件1 B  X. Q1 G) E- |
--url <URL>     Spet URL to work with' c5 D- i/ {( k9 B+ o( `$ A
-u/--user <user[:password]>设置服务器的用户和密码6 I1 M# q8 M" j
-U/--proxy-user <user[:password]>设置代理用户名和密码* f5 G- i! b5 b: z# z
-v/--verbose
! V% f; y+ o+ ]3 }, X -V/--version 显示版本信息
. p6 c  K8 l  _ -w/--write-out [format]什么输出完成后- u3 G! m5 V4 t
-x/--proxy <host[:port]>在给定的端口上使用HTTP代理( z3 I& ~- Z. q6 W7 R3 z& f
-X/--request <command>指定什么命令
& S: s! ~/ `3 q -y/--speed-time 放弃限速所要的时间。默认为30
+ ~! g9 C3 y! o* q! ` -Y/--speed-limit 停止传输速度的限制,速度时间'秒$ Y3 ]2 C* x2 P# ?. N: e, x
-z/--time-cond  传送时间设置. ~# U' ^, `2 J* [+ Y1 [/ V5 j
-0/--http1.0  使用HTTP 1.00 _8 X# V, R  W2 ?
-1/--tlsv1  使用TLSv1(SSL)
# I& S7 P# |6 _+ e0 N -2/--sslv2 使用SSLv2的(SSL)$ Q' M# I6 ~" q. [- r
-3/--sslv3         使用的SSLv3(SSL)
3 `/ g' E( Q! O: \0 Y --3p-quote      like -Q for the source URL for 3rd party transfer
9 j9 q$ k) L# b% y7 Y  _ --3p-url        使用url,进行第三方传送1 G( d7 z0 H8 p
--3p-user       使用用户名和密码,进行第三方传送
3 Q8 L+ L- @( a -4/--ipv4   使用IP4' @' P% J: j- q6 R+ W! ^. E
-6/--ipv6   使用IP6
& w- G6 g" S. s -#/--progress-bar 用进度条显示当前的传送状态
  U* a0 r% C3 h, b5 e2 O二,常用curl实例
8 f7 r0 l6 i  w' ^
$ V8 [0 x& h5 U2 U* x& v% a$ K+ I) F5 v- x2 O% X
1,抓取页面内容到一个文件中8 R2 f) u3 ?! ]6 g

4 j5 ~8 t+ B& e/ I* p  ^) l- r1 u* V, f2 Q
[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net" c7 P- d  T/ n6 h
2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西
0 E. x/ e  H9 z
; S$ G" S, k: U1 }# X: P; z% |% u" {
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg$ t6 y& G3 s4 R" C% u/ O; [3 k
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg
3 [0 M8 o9 x% l* P% c3,模拟表单信息,模拟登录,保存cookie信息. ^2 p- D- B( x; z8 q, ]

/ w. R) B( s$ w2 b# |# a' J* ]/ {( P# O
# ~' c! [% l, i7 E[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php  c8 S1 X5 h$ ^! ~3 V/ P; Z
4,模拟表单信息,模拟登录,保存头信息- n3 R" X! x# b) t8 S' R6 o, @

! w9 ~; q* i6 ~3 G4 U0 y+ n5 s& z( S- q$ I4 x+ ~& M0 m- U
[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php- n2 C# x, H% [( d5 }& d* u
-c(小写)产生的cookie和-D里面的cookie是不一样的。+ O0 q' h% g8 b) d4 S) D

7 f; a4 a- N1 l/ u% T- m1 Q. [: V/ P9 M) C* {- I
5,使用cookie文件
6 V. z1 W" U2 L+ w
* M1 ^4 n1 A. {6 V+ v0 N
' t- @# j0 t2 ]/ y3 s/ @) Y- U[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin
7 X. X0 x, k% a% i; q; N6,断点续传,-C(大写的)
/ ^+ }" _4 W% Y+ F4 x% k; K4 v/ R
; T6 w' m$ O, G* B7 x" n. b* u9 g
[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg0 N$ {; G' p  ^" F  S3 L* C
7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功
* n* Z% S: v, W. Y. d3 c) n6 z7 f! }+ ?9 F
8 j6 ]' B( r8 Y7 i
[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php' a9 L, j: |% S
8,显示抓取错误,下面这个例子,很清楚的表明了。
2 s6 O. p7 X9 G5 t  P0 S* {8 R. f2 N; \  u$ d; |

2 J+ v, i; c5 T4 T; V! z" N[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf
: `+ C: @" C( ?curl: (22) The requested URL returned error: 404
7 Q- p( m! ?% l+ I0 Y[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf
. A5 w" s8 |) E6 {, ]<HTML><HEAD><TITLE>404,not found</TITLE>
/ L! P* g, `+ E+ T6 _1 o2 x。。。。。。。。。。。。: g5 ?& o# S. E! h2 S; C1 C$ Y
9,伪造来源地址,有的网站会判断,请求来源地址。
1 M3 I% H" w5 M% }1 J9 |) N+ i/ k! }7 R
4 ^" G: H( A) X. n& r& y  {$ E
[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php+ W% F8 s  j6 B
10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理3 ?9 U* L- v2 [- b, a* ?2 l0 e

* _* J2 e# f! c
* G- C* w, {6 Y; q! g[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net8 Q* Z0 t9 ?6 o7 P9 G2 V
11,比较大的东西,我们可以分段下载
0 b4 `7 Z9 u, q6 S! t+ w; _2 z* w- f9 b+ R: g
" Y8 [, p9 M) T$ z+ B4 s$ y% V
[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-
' S+ ]! X4 t& ?4 i6 }0 h/ x' B( Scontent/uploads/2010/09/compare_varnish.jpg
# h# {, e- q5 e$ p % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current1 t4 y9 h+ ]; [! w
Dload  Upload   Total   Spent    Left  Speed
# N1 \9 J. k; m5 f& F+ n. o; t% h100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
% W3 w% T/ J2 L7 @. z5 P+ Q[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-
) M3 X3 |* D2 b2 |content/uploads/2010/09/compare_varnish.jpg
% r# Z! I, H0 D8 ^) i* E2 ~ % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current5 P/ g) i  J+ B
Dload  Upload   Total   Spent    Left  Speed2 H; T# N9 c6 G! D% J( O
100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
0 \6 X0 i0 ~6 I1 K" Y% c* s[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-
) X3 i" S8 O1 N$ y( \content/uploads/2010/09/compare_varnish.jpg& p. r- ^+ A- V& P# \
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
5 r* c8 x) Y9 E: d$ T Dload  Upload   Total   Spent    Left  Speed$ v# [' ]+ j  ^$ m+ \
100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961& L- H0 L! B, l$ `' R
[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh
9 S! u. U7 ^4 t; f8 d2 ^% P4.0K    one.part12 j9 _  q7 a% K: ?1 U; G$ \
112K    three.part31 a1 `* y  O1 j8 Z7 _; K% u/ y' O  Y
4.0K    two.part2* R. X3 s8 d% t9 \, T6 H7 J
用的时候,把他们cat一下就OK了,cat img.part* >img.jpg; B" B/ w& q) `' s: J+ |3 ?

$ {! W* c8 |, r5 S! T/ I2 t1 _2 X0 K* H# ^
12,不会显示下载进度信息+ M1 O4 z3 c- A( H: V

# E  g4 K2 Z$ F; Y( b
& T: C8 M$ z  P[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
$ A& @' f+ w& u7 `0 T: ]+ Q13,显示下载进度条
) O' V6 a+ b. R/ ]* j
, Y+ c4 |  Q! \0 Q8 U; t5 k& W8 h# c
[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg+ U4 C1 r" I9 [; M0 Y
######################################################################## 100.0%
2 o5 S4 N% e! M; B; {8 Q( y1 g* `14,通过ftp下载文件6 S$ G; h5 H, ?5 i( R1 b8 \* Z9 m
! B/ V) D" i& F# g2 c, ?
$ K& o1 P) M/ z
[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css
( f5 k  _3 l* R6 P- n' p# @( \ % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
7 ]) E% ?8 D0 q( G Dload  Upload   Total   Spent    Left  Speed
. F( H3 I9 p) k9 ~101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
5 S" ~6 L% \! K或者用下面的方式& f& F- Q) j3 U
[zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css" b% B' |; O8 n2 n
15,通过ftp上传
! _: ~) J7 {1 g& J" U0 Q1 j+ e/ B( |7 X  ]
+ J% A0 |0 }% @& J
[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/, U9 y; y4 H' Y
参考:http://www.codesky.net/article/201010/170043.html


返回列表
Namecheap
Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting
互联网安全