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




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

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。" n; ?4 U/ X( f; G. |/ H4 j
7 `) P8 X: Q  N, @* L3 J$ Y2 t" _

# D% I& ^% H& D5 D  W0 L! Y) Q: m7 ]) n& D- W  I2 V6 [
. d+ M( O9 [6 v" N
一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。
$ l& L; B) E/ ~0 h$ P3 I: m9 t3 _
4 r0 ^: R6 [0 \5 K( q8 L5 Z% V$ S. G: s3 n' v2 R8 V! {8 F7 ^
-a/--append 上传文件时,附加到目标文件
% A, [9 @' b5 z% Q -A/--user-agent <string>  设置用户代理发送给服务器3 \# C. ~6 j0 }/ p1 ~
- anyauth   可以使用“任何”身份验证方法
7 Q8 J( `* J0 u -b/--cookie <name=string/file> cookie字符串或文件读取位置2 O) x& Y# K  r$ R6 V
- basic 使用HTTP基本验证% V; V" r4 V' ]6 S
-B/--use-ascii 使用ASCII /文本传输
% {9 V+ z$ n! I0 v% w' P4 H9 f. \ -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
( E7 \4 m% J* @4 w, _5 l -C/--continue-at <offset>  断点续转4 R7 D% H8 w+ k2 S4 }) g" U9 {
-d/--data <data>   HTTP POST方式传送数据
* \0 Y) |1 |% V! S% p' S --data-ascii <data>  以ascii的方式post数据
4 b, N& _5 W4 _! g: I+ |0 q --data-binary <data> 以二进制的方式post数据
/ S8 a" y: n" p --negotiate     使用HTTP身份验证
. t8 Q4 s% c; w --digest        使用数字身份验证; _3 K% j" F5 D5 A1 r
--disable-eprt  禁止使用EPRT或LPRT( n. ]2 v! C. N. s. m
--disable-epsv  禁止使用EPSV, p: E# g: p! ~: ^
-D/--dump-header <file> 把header信息写入到该文件中% S% n1 I0 ~& D  z3 z, g
--egd-file <file> 为随机数据(SSL)设置EGD socket路径& i6 f7 X2 S( s2 ~$ I
--tcp-nodelay   使用TCP_NODELAY选项0 [% l# H+ V; W, ?6 T8 i1 [
-e/--referer 来源网址; {; U) u5 P* Y0 W4 b
-E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
. x3 u- s$ N1 X  _, d* x0 \$ W( a2 w --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL), w. s' H, k  Q6 k& Z* _0 V9 y
--key <key>     私钥文件名 (SSL)/ A: s( e0 s2 K( K7 D& P
--key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
, F& G, S' Q" k --pass  <pass>  私钥密码 (SSL)
! F; n+ }* {# t1 A) d --engine <eng>  加密引擎使用 (SSL). "--engine list" for list
" q  @  q& A* A/ m  w0 _" ?( v --cacert <file> CA证书 (SSL)
6 C* g. `+ Y! L4 D2 B  n --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
( \& Q$ i; X4 T: u% L --ciphers <list>  SSL密码
$ J# L9 S' ~; h6 n --compressed    要求返回是压缩的形势 (using deflate or gzip)- W# Q6 d3 p; _% M3 e5 ?6 j  w
--connect-timeout <seconds> 设置最大请求时间* z8 x) Y3 L" v. d
--create-dirs   建立本地目录的目录层次结构
, h( n. X0 f1 G& X3 r- s2 @ --crlf          上传是把LF转变成CRLF
/ s% h: g' o6 ]6 a -f/--fail          连接失败时不显示http错误
, O" M2 q) V* O, q9 l' D4 W' j) I --ftp-create-dirs 如果远程目录不存在,创建远程目录/ P. |, H/ f& l/ M- h' n
--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
3 D8 Q' P! n- q! c% e8 l- A7 @ --ftp-pasv      使用 PASV/EPSV 代替端口
( t" _7 e2 |7 s% ]9 j1 S0 t --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址* s- T$ _) y* |) P% I/ s- b) ~
--ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输
6 u5 }8 V$ m  ~' L0 u% b. o --ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输8 A1 n) N' m* m' v; }# t. W
-F/--form <name=content> 模拟http表单提交数据. N: Y  ~) E( Y8 W" r6 i
-form-string <name=string> 模拟http表单提交数据
3 R. b6 f; L4 y* K0 e2 W) B8 H -g/--globoff 禁用网址序列和范围使用{}和[]
( L5 I$ `4 _) E3 S) ^ -G/--get 以get的方式来发送数据; F1 m3 g. o$ `2 X
-h/--help 帮助
: m& @: W7 e' F5 ^( r -H/--header <line>自定义头信息传递给服务器
; ~6 I, q; l. p --ignore-content-length  忽略的HTTP头信息的长度! y9 C& C, y7 d8 q2 E: Q% W' s
-i/--include 输出时包括protocol头信息# A: q1 ~6 ?  O  E' n
-I/--head  只显示文档信息9 V, e- @, ^0 M. ~$ x5 E8 Z! f
从文件中读取-j/--junk-session-cookies忽略会话Cookie; W3 C5 y4 x9 ?& a- N; U, j4 y! _
- 界面<interface>指定网络接口/地址使用
7 s" ^7 j0 O' G5 r - krb4 <级别>启用与指定的安全级别krb4
% O9 y) p; N% r+ U0 p -j/--junk-session-cookies 读取文件进忽略session cookie
8 o3 z/ @2 U$ h$ f8 ~- `/ e) [ --interface <interface> 使用指定网络接口/地址
7 I- e% B/ D/ S9 _7 D3 Q0 _ --krb4 <level>  使用指定安全级别的krb49 o1 }4 {+ P- g2 ?+ T, V. D
-k/--insecure 允许不使用证书到SSL站点- I, G# d% {0 v; z6 [1 {* j
-K/--config  指定的配置文件读取6 {( a7 X9 Y; Z, {& a' a# c1 `% z. l3 ~
-l/--list-only 列出ftp目录下的文件名称
  g3 [7 d3 r! m9 F8 O --limit-rate <rate> 设置传输速度
. Q' O) |  Q! S) e- j --local-port<NUM> 强制使用本地端口号
% z* D5 ^" f, x4 k+ o -m/--max-time <seconds> 设置最大传输时间
) F: z" ?7 ]: P" v' A/ x --max-redirs <num> 设置最大读取的目录数
6 q  l5 J0 C1 i --max-filesize <bytes> 设置最大下载的文件总量7 Q: b  O4 ]/ o
-M/--manual  显示全手动
, R; T# }; k: F, M( j: Q+ [3 Y -n/--netrc 从netrc文件中读取用户名和密码
% N+ b$ J7 g; n3 Y* R' i% M9 e --netrc-optional 使用 .netrc 或者 URL来覆盖-n3 j8 A% ~; W6 f3 k0 ~/ W3 _
--ntlm          使用 HTTP NTLM 身份验证
: C, p& M1 K% C -N/--no-buffer 禁用缓冲输出( i! J( T  Y/ `! e, X
-o/--output 把输出写到该文件中: \6 Y3 W, a% q
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名# c8 o( V8 y( U; ~: F
-p/--proxytunnel   使用HTTP代理
! ~% l7 V0 k2 A9 u9 X+ } --proxy-anyauth 选择任一代理身份验证方法  P9 X- w; l( v9 ^3 Z1 ~4 q" B
--proxy-basic   在代理上使用基本身份验证
/ r. }9 W6 P6 w* M/ L/ i --proxy-digest  在代理上使用数字身份验证
. N# T3 w/ C& z( z0 m% p --proxy-ntlm    在代理上使用ntlm身份验证8 [$ U/ q  o" }$ s3 q! R  j8 T
-P/--ftp-port <address> 使用端口地址,而不是使用PASV
# c$ O6 c2 l" I! E2 L) \ -Q/--quote <cmd>文件传输前,发送命令到服务器- I. z! m( P9 G6 E! J( c
-r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围" U! h. F0 a/ E. s' W- K
--range-file 读取(SSL)的随机文件! C) x* Z- [* i' H. |3 Q1 }
-R/--remote-time   在本地生成文件时,保留远程文件时间
$ B' H5 M' H( Z( R+ B --retry <num>   传输出现问题时,重试的次数
& v# f3 j0 J* Z. C --retry-delay <seconds>  传输出现问题时,设置重试间隔时间
5 M: D/ f% G1 ?0 A  m --retry-max-time <seconds> 传输出现问题时,设置最大重试时间- c7 @" Q* a# b4 z3 m4 i. U7 S
-s/--silent静音模式。不输出任何东西
% K# r- j' A( G+ O$ t -S/--show-error   显示错误( r7 l6 h  q# o% }9 S8 i+ S" V
--socks4 <host[:port]> 用socks4代理给定主机和端口
. d6 l+ ^% ]: d& H1 T --socks5 <host[:port]> 用socks5代理给定主机和端口2 @: U" u* _2 ?6 M
--stderr <file>
$ j0 |; ]- _: k! D+ l* R -t/--telnet-option <OPT=val> Telnet选项设置1 R# Q" r' ?8 x! K* Q3 K8 g
--trace <file>  对指定文件进行debug8 h! E% I8 B* i7 ~
--trace-ascii <file> Like --跟踪但没有hex输出
, B# [# a" F; \2 V/ B- v --trace-time    跟踪/详细输出时,添加时间戳, a+ j% v# Z) `
-T/--upload-file <file> 上传文件, O! M1 m( s$ r) `8 w
--url <URL>     Spet URL to work with* g0 E+ p9 u* B) r5 [: `: n4 ?# C- T3 V
-u/--user <user[:password]>设置服务器的用户和密码
: @% ~7 E( h7 x+ u" [ -U/--proxy-user <user[:password]>设置代理用户名和密码
* N7 |. s* r& l9 L* { -v/--verbose8 ?, L. |- n6 Q5 ^! n
-V/--version 显示版本信息6 j% X4 D+ p& x5 L$ b
-w/--write-out [format]什么输出完成后
6 B# L0 w: T3 z. z+ l3 p -x/--proxy <host[:port]>在给定的端口上使用HTTP代理
, x2 }8 z: g! i, {0 k" [ -X/--request <command>指定什么命令+ r( g& Y0 i8 S1 N' S1 ?- D7 U
-y/--speed-time 放弃限速所要的时间。默认为300 h9 w8 H- Z( o+ f9 P
-Y/--speed-limit 停止传输速度的限制,速度时间'秒  C6 q' g' O& R& E. E6 \
-z/--time-cond  传送时间设置+ e; y& ~6 z* ?
-0/--http1.0  使用HTTP 1.0
1 ]; I1 j: Z% o; s -1/--tlsv1  使用TLSv1(SSL)
8 ]1 V& X9 y" R% w* |! } -2/--sslv2 使用SSLv2的(SSL)% F* v9 Q% t- Q- W2 F1 [. U+ F
-3/--sslv3         使用的SSLv3(SSL)) \6 |4 Y+ U6 L$ w+ `
--3p-quote      like -Q for the source URL for 3rd party transfer  \4 I# c: z1 h, ]
--3p-url        使用url,进行第三方传送" B% H. G2 j( i& v& [
--3p-user       使用用户名和密码,进行第三方传送
" E  z1 |( D0 {$ d! B -4/--ipv4   使用IP4
6 c$ N: i0 b2 V4 O; y  y* |5 r- J -6/--ipv6   使用IP6
7 F* g+ ]1 ]3 Z' E -#/--progress-bar 用进度条显示当前的传送状态9 v% }, p6 S! C
二,常用curl实例
2 O9 \6 U, ^/ C/ Z) z5 o
6 I( I" v1 x" D
: e  p" c% h% }6 \6 d1,抓取页面内容到一个文件中- a! M/ ?& E6 V. |1 u" k
% C* n4 y2 P8 x! v
# E- [0 E2 J8 F  c: N& y: R
[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net# \5 I* v4 k+ L6 Y
2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西. _. U+ q9 X" M6 j1 O) }
% E% k& K3 I1 l

7 Y" c7 N+ @8 r( l2 V/ ^5 j[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg8 _6 S: X# {3 K0 z  P3 |
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg
: I% M2 V5 k; x$ i3,模拟表单信息,模拟登录,保存cookie信息; Q; n. ~! O6 v" R

7 `+ ]! B: Q6 D: q4 O" v/ y3 K2 h7 Z% m* o( t+ a
[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php( [5 ]' W, P- a! I' I
4,模拟表单信息,模拟登录,保存头信息
) c) m$ J, `- t4 A2 @  y, Y
3 N- G' g8 `; O
8 j9 x  n6 T# [9 ?/ y[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
9 X$ R* i/ ?6 E6 X) Q+ E% _-c(小写)产生的cookie和-D里面的cookie是不一样的。0 ^3 [! \1 S$ Z; |0 R. J

1 @# X8 z8 {! [) Q2 y& n4 u. G
+ \: x7 h/ ^1 c# D5 u" s$ d5,使用cookie文件  n' M" ~  o5 s
+ G) D' X9 r5 ]( {' L
! @% c4 R6 U/ s  y
[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin
' E" d* J% v; |( j9 O6 y: a$ S0 |6,断点续传,-C(大写的)
0 D9 p! _  L2 V) |$ A
- J& l7 s( e- f- D# T1 W: X; O+ S3 k8 l/ M
[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg9 _# S4 A/ s; h
7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功
& a' x! \- Q1 b5 [  k8 d' R5 T1 {" l7 J1 {9 H+ s# t* I# U$ d: W
8 r7 N- k, a" d- \$ Q; m
[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php- ?: _, }" I) m
8,显示抓取错误,下面这个例子,很清楚的表明了。8 j' f# r6 j: s. z) [

( O$ t# b, u/ X& O/ m6 S$ k
" X; F1 N1 F2 K7 f# R. F+ v[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf
# \  s, C. e9 K9 j, Ocurl: (22) The requested URL returned error: 404
5 Q, v6 _0 s% u; D+ J# U[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf
; a$ {$ x+ E% M2 |<HTML><HEAD><TITLE>404,not found</TITLE>
. ~3 g6 [7 \, ^& G* R9 L。。。。。。。。。。。。2 W9 E7 c2 _# J. _4 ^
9,伪造来源地址,有的网站会判断,请求来源地址。
2 e7 w. N" y$ g6 \  L" j
1 A8 a4 d. }/ E8 x( D* ^- u$ p& t- S
[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php
* W6 ?4 K, ?  ?8 D, e5 h10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理* i$ |: X: U/ j; f* r- q
( r7 n& \  w3 [  d) F/ \- F0 B' f

' b0 A% a: h5 j[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net& Z) F8 }* x/ T7 p6 P  z# I& ?
11,比较大的东西,我们可以分段下载# A% |1 ^8 D& @
: w2 b# {4 S# U" P/ O/ B

, ^) ?. U2 R$ J4 ]# ?- I[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-
0 ~+ {* t) ?, \2 T& zcontent/uploads/2010/09/compare_varnish.jpg
1 r! \$ F) N1 P) p9 K+ C % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
$ h/ F6 L; f/ F( K  Z Dload  Upload   Total   Spent    Left  Speed
5 S# R1 g7 W+ p+ G1 l100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
) q) l- k# k9 i( |& q[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-
  J+ A+ x3 G; x- _" p3 ?content/uploads/2010/09/compare_varnish.jpg
- m7 H( Q( M0 v" p1 { % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current% @* a& _6 h; i0 o- v4 S& S: s
Dload  Upload   Total   Spent    Left  Speed
3 b' `7 k+ k5 _" S" Y* B4 {100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0! C5 `% N# Y/ g
[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-/ n$ f  [& v5 D" F
content/uploads/2010/09/compare_varnish.jpg
2 W$ c: c- g7 i. J/ B % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
0 V# R2 n0 |# N) v4 Y# I Dload  Upload   Total   Spent    Left  Speed0 l5 `( m, Z. l5 W! A
100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
+ X5 ^( E8 {2 N. F; b% w6 _[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh- q! y* c" K5 S0 i$ B
4.0K    one.part1; _8 b0 J  j; W; S
112K    three.part3& q, w6 \4 _6 b! R1 M/ g
4.0K    two.part2+ q; [% _' s. c) K; W: O. i! e
用的时候,把他们cat一下就OK了,cat img.part* >img.jpg( |% P0 Q, k7 ^+ a

. w2 U% l2 U- r: ~' t& d6 H
8 w9 g, p) O; }: K; Y12,不会显示下载进度信息
. q# H2 L" y- m* H5 V
$ {# ~" Q- ]7 r" X$ x5 C7 u, d
# W; |6 r7 v8 E! U. K' V5 \[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg# v0 G* ]' [+ U" w
13,显示下载进度条& {  g! H$ R) p+ V( {
, F- F  I: X; O) S& W
: P% t& P( |. v7 u
[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
" S/ C, e2 H8 T  B7 N4 ]######################################################################## 100.0%
/ z4 e5 z" P9 F3 h! _; X5 ]14,通过ftp下载文件
+ F$ j3 ]$ {0 [5 K7 v" E0 T! ?
3 l0 X  N1 l$ m  x$ ~- V) k2 {5 K3 H
[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css* J" U$ ~* W1 I7 d! z
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current( Q1 c; D6 U. K3 l) J  Q
Dload  Upload   Total   Spent    Left  Speed% u1 q$ c7 A8 y0 g0 b# E
101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
/ `3 M; u: l9 M4 D% H& l& L5 O$ ]或者用下面的方式
# i7 x% ]" W* s2 T. ][zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css4 Z( @2 |9 v# ^) J* [( e% m' U
15,通过ftp上传* ~/ f$ l0 e5 b* D8 S6 `; }

' k2 _9 A$ f0 O- [2 l5 V1 M; E8 k' Z  \, O2 D0 ~8 ^& {8 |2 _
[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/
3 q5 D% V' Q6 T: d7 s; M5 j, I参考:http://www.codesky.net/article/201010/170043.html

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