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




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

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。3 p' ?+ ]4 I1 }0 k
) O: Q) _! I/ S* Q

  g' G. w+ D1 h% n& x0 `4 T# \1 K: b% f  l8 j! u
+ |1 {6 H" \: }& t) t: X3 X8 N
一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。0 Q( p" Y/ W* h

/ t  S( t9 ^! c) u: W" r2 p5 q1 U8 l4 J+ ^0 V( L
-a/--append 上传文件时,附加到目标文件
" b+ l1 u( [: D" a5 @7 y, G6 U -A/--user-agent <string>  设置用户代理发送给服务器
& ?& a" p; r! p - anyauth   可以使用“任何”身份验证方法
8 b; C( J$ t, S, s: s, \ -b/--cookie <name=string/file> cookie字符串或文件读取位置0 @, D/ @" g2 N( q- u
- basic 使用HTTP基本验证
7 y8 c7 m& @. X. U4 ? -B/--use-ascii 使用ASCII /文本传输+ B1 k! K- W2 z6 U1 K6 r
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中  B% c: {9 Y; Y) Z3 n# K1 K
-C/--continue-at <offset>  断点续转% f3 [) ]* h5 A7 j; Q, B1 I
-d/--data <data>   HTTP POST方式传送数据& f' ]5 M+ E7 i  ^/ r7 d7 R
--data-ascii <data>  以ascii的方式post数据
1 S. v6 x; p7 E/ s# o --data-binary <data> 以二进制的方式post数据7 F/ R; ]6 p1 m
--negotiate     使用HTTP身份验证1 v; y; ]& `5 s% P: y; B- ~% m
--digest        使用数字身份验证
  X5 V( S3 T# j& m --disable-eprt  禁止使用EPRT或LPRT# t6 w$ n6 f4 ^/ d/ t+ e5 l
--disable-epsv  禁止使用EPSV
0 j, r. @- b" O, i# N -D/--dump-header <file> 把header信息写入到该文件中
2 Z; a# |' v, k" ~/ Y# ^ --egd-file <file> 为随机数据(SSL)设置EGD socket路径
/ O$ S- z) x3 t7 y4 \ --tcp-nodelay   使用TCP_NODELAY选项, t* ]" E1 F( R: t( m. `' [
-e/--referer 来源网址
+ u  ]# O: h5 S) f. t, x: b+ p -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
& }& k5 v& ]8 `+ L: [; R$ K) J6 c& }7 P$ T --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
- P4 I+ W9 P1 e$ _$ T --key <key>     私钥文件名 (SSL)7 H0 l6 d) f2 ^2 i& }* G, [
--key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
1 _; F* I3 t% Y6 R, u --pass  <pass>  私钥密码 (SSL)
- D5 B0 ]0 x4 S. d: w --engine <eng>  加密引擎使用 (SSL). "--engine list" for list- T/ r2 g4 s, l5 D4 D
--cacert <file> CA证书 (SSL)3 S3 C4 N2 |0 H0 ]
--capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)8 |: W2 ~4 k4 d# f! D
--ciphers <list>  SSL密码
8 U6 X( ~0 y# M- j --compressed    要求返回是压缩的形势 (using deflate or gzip)! g) W9 r/ p6 Z1 b  s/ n) H% V& K) k
--connect-timeout <seconds> 设置最大请求时间& ?0 X: d! X- `9 \$ N
--create-dirs   建立本地目录的目录层次结构
0 }2 r$ h( k" V5 \0 G --crlf          上传是把LF转变成CRLF
; @+ @( T. S8 ^2 F7 @' C8 U4 z -f/--fail          连接失败时不显示http错误
& @4 C0 `( b3 _ --ftp-create-dirs 如果远程目录不存在,创建远程目录5 C& c; g' K0 m5 q5 K" d
--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用- e! f. h: w5 a
--ftp-pasv      使用 PASV/EPSV 代替端口
$ W0 j- w) T9 Z" h+ i --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址, U* n& f4 T- n2 I  [1 r2 n3 t$ p
--ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输$ T3 X- t9 ~, ?1 u5 K
--ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输: J$ W- S% K! d: E& {: i
-F/--form <name=content> 模拟http表单提交数据/ m* F3 |. A2 v) j
-form-string <name=string> 模拟http表单提交数据
, Y+ P& X) |& m- C5 x) p8 T -g/--globoff 禁用网址序列和范围使用{}和[]
9 r8 Y! q/ f7 e3 c. i" r- `  C -G/--get 以get的方式来发送数据
& ?0 S0 ?; G5 X( t! p -h/--help 帮助7 Q0 ~4 n7 U* q
-H/--header <line>自定义头信息传递给服务器% f7 }  z" x( i' V; K
--ignore-content-length  忽略的HTTP头信息的长度5 f2 c; u7 r/ J" y5 b
-i/--include 输出时包括protocol头信息
  a7 H$ _- e1 S3 R  t/ S -I/--head  只显示文档信息5 r% x4 C0 c0 l' Z1 \- y( V  G
从文件中读取-j/--junk-session-cookies忽略会话Cookie6 {+ k' I/ V( }6 K& v* E# Q" X
- 界面<interface>指定网络接口/地址使用( f5 ?# B4 P. y
- krb4 <级别>启用与指定的安全级别krb40 f5 N  b7 z* j& p
-j/--junk-session-cookies 读取文件进忽略session cookie% W, n) }' e6 y
--interface <interface> 使用指定网络接口/地址$ o3 p' b+ O+ W+ ?$ {! X0 n! G
--krb4 <level>  使用指定安全级别的krb4
, H/ w( u3 ?# o9 b% H& |7 R3 v5 ^& s -k/--insecure 允许不使用证书到SSL站点/ y* u9 r5 P! q3 R) k: q9 l
-K/--config  指定的配置文件读取7 z2 J0 u+ \5 `; ?7 k
-l/--list-only 列出ftp目录下的文件名称* z5 a! |8 u6 S" d* ^' i& E! A% X
--limit-rate <rate> 设置传输速度6 o  ], d( W: l4 m4 L- l
--local-port<NUM> 强制使用本地端口号
; G6 t+ Y! e9 x& r. }8 z -m/--max-time <seconds> 设置最大传输时间8 n% L5 o' i6 l4 v5 r3 W
--max-redirs <num> 设置最大读取的目录数" F- f3 |' y2 J2 N% T; `" C; F) p
--max-filesize <bytes> 设置最大下载的文件总量
; d+ m& u" o6 [! ~7 s, m -M/--manual  显示全手动+ i# f4 P, t8 R8 n% d
-n/--netrc 从netrc文件中读取用户名和密码/ U- n: X: Q( Y. Z7 N; X: ]
--netrc-optional 使用 .netrc 或者 URL来覆盖-n, T* m" K/ O6 X6 {
--ntlm          使用 HTTP NTLM 身份验证
" u; N% A% G* H$ c -N/--no-buffer 禁用缓冲输出
" A. ?+ T' K1 z9 M- K  a -o/--output 把输出写到该文件中6 `: ]6 s# u% P8 _3 i0 T9 p
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名
1 V; h/ E  U1 d$ y! Y4 k5 k0 O -p/--proxytunnel   使用HTTP代理
! f: f. O) \$ {. ?$ h --proxy-anyauth 选择任一代理身份验证方法
: Y: D9 L' p, I+ x1 v1 Z --proxy-basic   在代理上使用基本身份验证) Y; r9 X6 v! F3 @% B
--proxy-digest  在代理上使用数字身份验证7 A7 p6 c' \! b/ i" w( K  G$ S$ p
--proxy-ntlm    在代理上使用ntlm身份验证
% v5 M; Z! C3 ] -P/--ftp-port <address> 使用端口地址,而不是使用PASV
: j6 t" y% ~0 g: W4 Q7 m -Q/--quote <cmd>文件传输前,发送命令到服务器
, q9 D' u* H) R1 a- L- ~* d& A -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围( S5 f4 d" k* |  H6 ]' T8 |. I
--range-file 读取(SSL)的随机文件
- ?1 ~! d) w: R -R/--remote-time   在本地生成文件时,保留远程文件时间6 e2 {9 }8 T; a0 C  A2 P
--retry <num>   传输出现问题时,重试的次数
# l' R6 _3 l7 W! l7 y% S7 r --retry-delay <seconds>  传输出现问题时,设置重试间隔时间
- T& q: Z, W- ?+ c --retry-max-time <seconds> 传输出现问题时,设置最大重试时间9 c5 E: v' c; L, U$ Q# ^
-s/--silent静音模式。不输出任何东西6 q9 @" y% g8 l
-S/--show-error   显示错误* m  ]; V) A9 u3 H9 ~  L+ `; m
--socks4 <host[:port]> 用socks4代理给定主机和端口1 ~) V& U3 D9 Z6 i2 Q) I, I. R
--socks5 <host[:port]> 用socks5代理给定主机和端口
4 z( Y* m; f* a7 Y --stderr <file>' V$ j1 p9 D" w  u
-t/--telnet-option <OPT=val> Telnet选项设置
8 e! g% M! m  @+ g" W- `3 f1 p --trace <file>  对指定文件进行debug
2 G4 h( F, s2 y! g) L$ f --trace-ascii <file> Like --跟踪但没有hex输出  r$ M4 j+ E: m7 _
--trace-time    跟踪/详细输出时,添加时间戳
7 L3 p1 S( j' F% h5 |9 q3 V! ~2 O -T/--upload-file <file> 上传文件
0 ]7 R0 l8 ~5 N3 V0 k5 v. L --url <URL>     Spet URL to work with
: l; D$ w$ I' o -u/--user <user[:password]>设置服务器的用户和密码
1 n5 Z- Q/ ]1 e1 t -U/--proxy-user <user[:password]>设置代理用户名和密码
/ u: a' q  O$ t  v* G -v/--verbose1 P1 T* @: i9 J0 Z
-V/--version 显示版本信息
4 C1 J, d6 l1 M; U -w/--write-out [format]什么输出完成后! s% i2 e9 a) J( N6 \5 ^/ K) n) p
-x/--proxy <host[:port]>在给定的端口上使用HTTP代理& C* Q7 |# W: L' V
-X/--request <command>指定什么命令1 Z& {9 Q6 z- n1 G* `4 F
-y/--speed-time 放弃限速所要的时间。默认为30* x# `! N6 W' x. a! H! h/ \# [
-Y/--speed-limit 停止传输速度的限制,速度时间'秒7 d2 z' p$ h+ X2 b. h' O
-z/--time-cond  传送时间设置
$ |# `; [: b( |9 \ -0/--http1.0  使用HTTP 1.0! [5 F- w$ h' c& \& M0 }
-1/--tlsv1  使用TLSv1(SSL)
! P9 V6 `' v8 d5 H/ V -2/--sslv2 使用SSLv2的(SSL)
+ y* u# d: N1 G# U  I6 _ -3/--sslv3         使用的SSLv3(SSL)8 `! p& h5 f# ~  j/ v
--3p-quote      like -Q for the source URL for 3rd party transfer2 D) R& h7 r& ^# A/ l
--3p-url        使用url,进行第三方传送# z3 `# r# o4 R/ s, N
--3p-user       使用用户名和密码,进行第三方传送
+ [* }  y5 b' K) L2 k -4/--ipv4   使用IP4" N9 P9 }( D: y5 L( N! Z% E7 n
-6/--ipv6   使用IP6
& R# G" g( t0 l+ [3 O2 a -#/--progress-bar 用进度条显示当前的传送状态' V9 H8 Y$ w, C7 m! }, I$ m
二,常用curl实例  c# e1 g7 |& x- \$ u

) `! N3 _6 T- A' f) ?1 t6 w8 X- s* B" v/ c# L( I7 j6 G' y9 i8 K
1,抓取页面内容到一个文件中
* [. [! r# @% i0 O3 p# S3 o8 @
) `. ?9 q% `8 B( N  }$ V. h8 M# K6 e0 o# A
[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net
/ W0 ^. E  x' e) q5 v- \! K! T2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西
# G) O' B3 t$ }, f. i: U; p: \
' E. g/ M* T% A. {) k( ~. O$ ?: |) c+ x: ~) z
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg2 p* n3 M, x0 w3 O) W; h% A
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg
. a6 A  ?2 l+ ~3,模拟表单信息,模拟登录,保存cookie信息! `- }/ X' B7 v6 M+ Z  V" Y

9 d0 o4 e. V; N% G+ u7 t$ W( A0 X. R1 v* e. H
[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
. D7 T  h8 a- y9 u/ O6 D, B4,模拟表单信息,模拟登录,保存头信息$ o; x! T# n1 F
4 K! L( i7 T. W0 r) O

/ w- F4 R* T$ w- {, z+ Y) L[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php) u3 b3 x% x3 i+ t
-c(小写)产生的cookie和-D里面的cookie是不一样的。
$ Y0 |4 x9 p8 Q4 Z- h8 ?  P2 M% d; X. s* W# N
# j) N$ a$ M4 X3 |4 m! ^/ x. N
5,使用cookie文件
8 U5 c) ^7 P8 P" S" c; b( K  {' j

% Q) ?) T1 f& G  ]  H, N[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin
* ?9 q, w' R% g* B6,断点续传,-C(大写的)
0 L, Y4 Y( Y& l
' {7 X* m! P, Z) b! Q( Z9 F0 @& l$ u/ H
[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg3 e2 a4 f& g; N6 ]  J2 b
7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功- E: ~4 f- ?0 S. m, S: g% R1 ~+ @5 f

1 _3 j3 Y# y$ v$ u$ Z" h8 f3 ^- N& @7 x; ^- t
[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php
$ M6 t* k& ~' m, K# w8,显示抓取错误,下面这个例子,很清楚的表明了。
% ~- L- }( R8 w9 Y0 ?1 J* {) K2 M- r; s
+ V1 \/ N! f& f
[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf
+ L' E. S- H. U0 Q5 K4 r  G& Qcurl: (22) The requested URL returned error: 404
0 V( i% H( F$ F% K% T% R6 ~; R# G[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf9 }2 e, l9 \7 s2 i8 s3 y7 x
<HTML><HEAD><TITLE>404,not found</TITLE>
5 c) t5 U+ t2 r+ q2 V2 W& Z。。。。。。。。。。。。- u  v- a$ {5 K+ q, d- h' L
9,伪造来源地址,有的网站会判断,请求来源地址。* S% h* I7 b3 F! t# m  w8 Y& u

8 b4 G$ m) ?" C+ A) V1 ?  o% ^; ~/ r
! X4 k4 S/ n+ l# Q# ~[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php
; n5 r7 x- n2 }) S: Q9 T; Y* p5 W- [4 b10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理
' A" e0 R0 o4 L* z0 o9 C5 M# f( H, @% O- x; H: W8 I8 Q
* `5 X' V+ D; g- i* w. d' f2 v2 B
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net& S% F4 y  d* A. b' ~
11,比较大的东西,我们可以分段下载
1 B% z1 T; _8 D; ~( ]0 k# K! t; J
  i# ^- x! w+ {2 o* h, |: m
& [- e" ]# v. `0 P[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-
& ]9 a; X2 C' c) E4 \/ mcontent/uploads/2010/09/compare_varnish.jpg
! U- n  l. D3 n; i+ n& @0 m( ] % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
5 b: v8 X, q' Y- V( A Dload  Upload   Total   Spent    Left  Speed) a, b) s% ^' {+ l
100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
4 h0 g5 ~$ U$ W8 W[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-
* C. K' d3 n- |* O7 fcontent/uploads/2010/09/compare_varnish.jpg
' y. ~; x8 O9 w$ }) e % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current& H& [# w4 _, [
Dload  Upload   Total   Spent    Left  Speed7 j1 q* G+ J+ O/ y+ l/ m$ Q  ^
100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     09 o0 ?7 r# I* G6 z6 o, U1 H
[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-- g; ]; D8 \8 z+ J. |+ S
content/uploads/2010/09/compare_varnish.jpg
( R: y  Q7 T) v) U % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
* }* ]- O, a, ]4 N/ C$ A9 J3 F* M Dload  Upload   Total   Spent    Left  Speed
6 Q4 o* @8 ^+ R5 r+ r! P2 R100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 889613 o- d) K9 i) w) N: A
[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh
$ l1 |  x3 I# T) z) O4 e; ]4.0K    one.part1
, s3 N" f6 V9 D8 Y112K    three.part3
  a% X) e( X+ U4 x' k4.0K    two.part2  R: a. R/ s1 v$ M. W" n
用的时候,把他们cat一下就OK了,cat img.part* >img.jpg( B& j4 I$ [$ Z, h; {: j" a
# h. f$ S# w5 |' Y5 o

' e4 {$ h) |: S- _9 b2 ~4 `12,不会显示下载进度信息
$ p8 A/ c6 t& v2 h6 s# Y/ H- E/ E% O! ?8 N. ~7 _& \# G) R

% p, t# z, R1 i% k" e5 Q[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg: P, }* h* W+ {; t  [; |7 A! U" ~1 p
13,显示下载进度条
) O; {. X, ?! D) R! ?* p; B) ]  O
6 I* y4 }' X9 r7 Z
[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg  t& L% T1 M, ]# d" ?# f
######################################################################## 100.0%8 V" g; E" \* t  V' @* y/ {) l: T
14,通过ftp下载文件
. Z4 X- x) w! [: k) q
' F/ ]) \! u7 {1 L* T* m! P! l' a+ f/ n
[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css
% Y# e. t6 O7 c& m: L6 ^  N % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current( A' r3 |4 y8 c7 n1 a
Dload  Upload   Total   Spent    Left  Speed
" b. H; o( p; n$ {! c& r  ]101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
9 l; V* K) V7 t. T0 N5 {或者用下面的方式- K* Y7 q: q: ^# k0 D: y
[zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css) s, Q" {! P: k' P
15,通过ftp上传8 t; t+ W  y; \4 C4 m

( {! B5 O' m) {1 J) ~) `! Q$ b$ m
[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/  U: |, \) r+ n/ E& W
参考:http://www.codesky.net/article/201010/170043.html




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