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




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

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。
* \, I$ e# `7 j
1 f9 i. s! ~. V( v/ Q; @5 _2 A& K) {  K1 U, o
7 J6 Q; v* @+ I* H

6 l" z' V4 M) ]: @8 w一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。3 l; m" i1 q1 G; \* y. k" I
1 f, @7 F3 |2 J- @5 l; c
- p+ ?' _0 I( ^  b; }
-a/--append 上传文件时,附加到目标文件
4 a: U* n; C# S  G7 ^8 b' V) Q -A/--user-agent <string>  设置用户代理发送给服务器
% ^5 m! }5 e6 x - anyauth   可以使用“任何”身份验证方法
5 D! c- P3 k8 `. @% |. L5 M# s -b/--cookie <name=string/file> cookie字符串或文件读取位置* i0 K/ Z' s' k+ [2 E
- basic 使用HTTP基本验证
+ L+ N9 @7 g7 w" X5 C; T! d/ ~ -B/--use-ascii 使用ASCII /文本传输% c3 s2 R0 S5 i% O1 m( r
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中  G+ M, e- j( \9 |3 d0 G( B5 V
-C/--continue-at <offset>  断点续转) A* }! M% k; k$ U7 k* O
-d/--data <data>   HTTP POST方式传送数据
3 @  U9 D% j9 ? --data-ascii <data>  以ascii的方式post数据
% W; i3 F  k, p# Y1 N; A) g --data-binary <data> 以二进制的方式post数据
: ]% v! B* d4 }3 m) ]! t2 t" e5 K& K --negotiate     使用HTTP身份验证3 v' @. U4 p: U2 T+ s
--digest        使用数字身份验证9 f4 L! i  U: T: M4 [
--disable-eprt  禁止使用EPRT或LPRT) {3 S8 p9 j) J7 {6 X  e
--disable-epsv  禁止使用EPSV
6 s3 Q. p9 p( Q -D/--dump-header <file> 把header信息写入到该文件中
; O; N2 e" O+ K) j& q* P --egd-file <file> 为随机数据(SSL)设置EGD socket路径
& _0 o; M) D3 Y( L2 E7 h --tcp-nodelay   使用TCP_NODELAY选项/ O5 \( C' S% O0 `
-e/--referer 来源网址
& Z3 {- _2 u1 @' W -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
+ H1 R# F" f7 f* U- g. L --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
  q! m8 g5 e0 ]- w/ T( v0 a& f --key <key>     私钥文件名 (SSL)6 \/ z; X( N; N, j' ?  R& M" A
--key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)! @9 d* D- N' C2 p, X2 ]
--pass  <pass>  私钥密码 (SSL)$ y2 i: Q3 F6 n. O6 F0 b: W
--engine <eng>  加密引擎使用 (SSL). "--engine list" for list
0 W. I8 J% m) m- O) a# b --cacert <file> CA证书 (SSL)5 d% a0 j' {+ I& N) A8 k
--capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
! O# D; d! L% n6 F: F  k8 m) s. Q --ciphers <list>  SSL密码
* S& T2 \6 y( |) ~+ |0 g --compressed    要求返回是压缩的形势 (using deflate or gzip)3 j# k' H1 p$ }* k* t+ S
--connect-timeout <seconds> 设置最大请求时间
/ K4 Y9 E* E8 F( Q) V' } --create-dirs   建立本地目录的目录层次结构
# J( F' F1 F6 k  O$ b5 Y' p --crlf          上传是把LF转变成CRLF+ }6 }( y: w; i
-f/--fail          连接失败时不显示http错误
/ B3 @7 G4 w) G! q# r  s% K --ftp-create-dirs 如果远程目录不存在,创建远程目录
- u3 {: ?7 ]2 o5 C1 n! E --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
' ~1 p" S# f$ e4 n/ y( x --ftp-pasv      使用 PASV/EPSV 代替端口
4 T6 C. n8 J  Y! I7 d --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址( y0 M& O% b# W+ Z
--ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输
5 x+ E7 {: i% |( q/ T --ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输) \' F* c! q0 D* P
-F/--form <name=content> 模拟http表单提交数据" N, M4 H5 M) f9 F( E
-form-string <name=string> 模拟http表单提交数据
( T) x5 L# \! n! l* a7 c -g/--globoff 禁用网址序列和范围使用{}和[]
9 Q# S) @7 K4 V5 h# p+ Z) k2 r -G/--get 以get的方式来发送数据
& X6 b' @2 C: H! z -h/--help 帮助5 N1 k$ m8 l. b2 v# `
-H/--header <line>自定义头信息传递给服务器
+ I- X6 B* o# \6 Q1 G --ignore-content-length  忽略的HTTP头信息的长度
* Y1 s" m% k- b5 i. O -i/--include 输出时包括protocol头信息; Y: y; H1 W/ f/ P. @/ m
-I/--head  只显示文档信息( y5 i- m* t" t
从文件中读取-j/--junk-session-cookies忽略会话Cookie
& T+ @/ f% W* b! h$ ]# Z7 R - 界面<interface>指定网络接口/地址使用
9 c; _" A7 n$ H3 t* h - krb4 <级别>启用与指定的安全级别krb4/ H  A; B) T) d: e
-j/--junk-session-cookies 读取文件进忽略session cookie
! j; _9 z8 |( w. K --interface <interface> 使用指定网络接口/地址) x: ]' z& m0 ^  u7 H  O
--krb4 <level>  使用指定安全级别的krb41 w% Q# v+ c+ n' ]
-k/--insecure 允许不使用证书到SSL站点% i3 s4 E  w: T3 t& U
-K/--config  指定的配置文件读取
7 @2 f' l: S% Z/ B! i. P! G* M -l/--list-only 列出ftp目录下的文件名称( @* Q& c8 `! H
--limit-rate <rate> 设置传输速度
. c& g% A; T/ y" p --local-port<NUM> 强制使用本地端口号
& _/ g6 j& w, f -m/--max-time <seconds> 设置最大传输时间6 o/ {& s0 A" w9 k
--max-redirs <num> 设置最大读取的目录数
9 h4 t& @0 o1 }, ` --max-filesize <bytes> 设置最大下载的文件总量
& }# P" [( T# w. i: P+ J# a -M/--manual  显示全手动
. D% I: G7 c( l- U6 B% N4 c  I5 a) M -n/--netrc 从netrc文件中读取用户名和密码
: I3 |* ]  s# U' O --netrc-optional 使用 .netrc 或者 URL来覆盖-n
& O; c6 Z& q' f' @; ^; v4 D8 | --ntlm          使用 HTTP NTLM 身份验证
  j/ L' o" l. n3 k0 Q# E& E' p -N/--no-buffer 禁用缓冲输出
1 o2 i, ~6 p5 B& r" F -o/--output 把输出写到该文件中
" `! W% P8 _, j, ` -O/--remote-name 把输出写到该文件中,保留远程文件的文件名
) G% y9 Z# N  U( S% @4 G3 D/ h -p/--proxytunnel   使用HTTP代理' O4 u3 p7 B. d3 n* }. l6 B( x
--proxy-anyauth 选择任一代理身份验证方法
+ }8 `3 m2 n7 n& j --proxy-basic   在代理上使用基本身份验证% r$ S- G' T. G+ q! Q0 W4 m
--proxy-digest  在代理上使用数字身份验证
7 S& W/ `6 L8 t, d --proxy-ntlm    在代理上使用ntlm身份验证
9 ?! O  W; `6 m6 N -P/--ftp-port <address> 使用端口地址,而不是使用PASV
4 A9 M5 q/ _% w7 c -Q/--quote <cmd>文件传输前,发送命令到服务器, Z; V( S$ J: }  h+ @* C
-r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围
9 @9 {( N1 O0 `" u- P --range-file 读取(SSL)的随机文件7 Y5 k$ `. \3 t0 k- }
-R/--remote-time   在本地生成文件时,保留远程文件时间8 G7 w% \1 G7 ?& E. F
--retry <num>   传输出现问题时,重试的次数
1 l* Y0 ]$ g& b1 M5 a --retry-delay <seconds>  传输出现问题时,设置重试间隔时间
0 v7 K/ }' Y2 b5 M- I3 h --retry-max-time <seconds> 传输出现问题时,设置最大重试时间" L% a2 ^, m! W+ j' h; k( q% {# u' k
-s/--silent静音模式。不输出任何东西
5 g0 @9 o8 B/ `* @9 R# ? -S/--show-error   显示错误# K9 e+ \9 e1 |4 ^* k8 u4 z9 f2 f
--socks4 <host[:port]> 用socks4代理给定主机和端口0 [) [$ w* u. K  a1 f
--socks5 <host[:port]> 用socks5代理给定主机和端口
) V, j/ Q, t; c% Y --stderr <file># g. Y/ T0 m( r8 ?9 f1 q
-t/--telnet-option <OPT=val> Telnet选项设置' ^7 {0 D& s) b/ y4 n8 P5 b: P
--trace <file>  对指定文件进行debug% W7 W; r* ]$ b  y& e
--trace-ascii <file> Like --跟踪但没有hex输出# i" Z# k; z. l9 E- C7 h/ a
--trace-time    跟踪/详细输出时,添加时间戳4 ^# ~8 E1 }9 s6 Z
-T/--upload-file <file> 上传文件: x# X% v. v3 X' v
--url <URL>     Spet URL to work with
/ S( r: O4 x. v: h) m9 V -u/--user <user[:password]>设置服务器的用户和密码
. O0 k0 i# j. A' k5 m -U/--proxy-user <user[:password]>设置代理用户名和密码
9 F. A5 n. H* X2 A7 }$ a -v/--verbose3 g2 J# Q  ^1 P) x4 Z$ Z1 q
-V/--version 显示版本信息" s% W9 q' {0 v: c8 d5 i
-w/--write-out [format]什么输出完成后7 z; O7 s% m+ f, L& Q
-x/--proxy <host[:port]>在给定的端口上使用HTTP代理
& o4 e4 l7 M$ Y. E -X/--request <command>指定什么命令( T6 S% [) A* ?8 h+ K1 k2 K
-y/--speed-time 放弃限速所要的时间。默认为30
0 l6 M$ n6 D9 T% [, ?# Y -Y/--speed-limit 停止传输速度的限制,速度时间'秒
$ W( {/ B: a# c% \ -z/--time-cond  传送时间设置( Q% O( f! m$ b" g2 d. O3 _
-0/--http1.0  使用HTTP 1.02 W6 Z" j2 M: K# K
-1/--tlsv1  使用TLSv1(SSL)
/ U7 u" c; u, O2 w3 A% ]' W -2/--sslv2 使用SSLv2的(SSL)
$ Z7 E7 B# T8 z0 M. J3 a5 w -3/--sslv3         使用的SSLv3(SSL)" n! }$ q: l% B" @) }
--3p-quote      like -Q for the source URL for 3rd party transfer$ O/ m" Y' e& p' R1 y: O/ K& N
--3p-url        使用url,进行第三方传送$ o: V4 x$ n7 _7 Q; l4 `8 Z  H
--3p-user       使用用户名和密码,进行第三方传送  n6 `" [. q7 K) s' Z
-4/--ipv4   使用IP4, K( i  w6 O0 {+ i( t4 J
-6/--ipv6   使用IP61 g6 a& o; U( C9 r. H0 Z
-#/--progress-bar 用进度条显示当前的传送状态+ R9 e3 P' C* f, l( Q# v2 b
二,常用curl实例
+ m) m) x0 C: X; V! U8 c0 `& C& n! o9 q- X& _
9 O' |9 N( A- @
1,抓取页面内容到一个文件中' {& T% E2 D& \) w

0 M9 G; Z& |: u4 d2 s
0 O5 m/ R5 s  L# r# K6 I[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net) c$ X' G& F- m9 ~: |* q/ R% j: U
2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西. b! Q6 o1 }8 O# d& [% Y- _" D" U
9 J/ |0 |& K/ V4 H
8 ?. s, A+ x2 c* B% ]* n7 `
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg5 _. c7 @  m% t2 V8 @, }
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg
1 S* v( t7 ]: y6 c$ h! Q4 i5 X% T3,模拟表单信息,模拟登录,保存cookie信息
9 [: G; h" P/ D  y. R
1 q, s. \! O4 {  H5 G# I
' d; C% j) t7 p/ \+ U[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
4 \. e# c' {% v  G1 ]4,模拟表单信息,模拟登录,保存头信息
& l1 B2 {3 A$ q7 e% g: C. ?
3 r, e- h, ?' I4 E0 Z7 W- ~, [, |) R7 j+ u5 q5 \6 }3 P0 ^
[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
) A4 y3 `1 A0 t7 s2 }, ^1 p$ O-c(小写)产生的cookie和-D里面的cookie是不一样的。' b9 `% [4 W4 F& h5 K
  o2 H6 @2 F5 ?9 z+ c& W
  e+ }1 c$ W! Y+ D4 s
5,使用cookie文件* V0 n$ O2 a% C
6 u: Y8 y! j& |' H" N7 ?
) v$ g! n, |% |# w# E
[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin/ V) I% x# _% t( ^+ N3 K& c0 T
6,断点续传,-C(大写的), B/ J! X( d" `9 q2 m, [6 P1 Y0 i
* E. C* W- ?; K: t) H; W5 F
8 _( ~+ v* A2 [4 j) F
[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg% n! Y+ R. A, A) T; {( `( m: o
7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功
( ~$ e* I) j/ O. v
6 D2 L4 O* A" @2 _
% M' x/ D# L- \; ]6 U! |[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php6 l+ J! ]& ^3 g0 b+ v
8,显示抓取错误,下面这个例子,很清楚的表明了。
+ W4 ?, C5 I( J0 t/ x$ t; X" i# D9 s/ C
* H1 Y7 l$ l9 A' C5 v: u
[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf+ O+ q4 K; c' I2 i. @& d
curl: (22) The requested URL returned error: 404
+ G' t& Q- m: ?- x- F[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf. x. Y/ [1 w: L5 `
<HTML><HEAD><TITLE>404,not found</TITLE>
- H* j7 _- ?: \3 `7 d。。。。。。。。。。。。
2 T; {. P7 @$ F" [; S9,伪造来源地址,有的网站会判断,请求来源地址。4 Z/ Z) e4 ~) C, m1 r. |
: L+ o- ?7 ]: r: G1 P

% ]8 T' R" q5 b. X8 z' L$ f[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php
2 D4 d, F% k6 {; j10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理
% l* M  S# \2 J4 H4 o8 Z8 k% N
. M7 N( ?2 j, x2 T% N* u2 R% l7 v* o) K( b: ?7 T( V" T6 k
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net
8 L) @/ |* W% f& z- y+ O% R$ k11,比较大的东西,我们可以分段下载
' Y8 w% M: k3 `" r  z) G) z* m! D; b# j+ c4 H
7 s. k) ]/ P5 S, u9 Z
[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-$ j& v# s9 ?, Y
content/uploads/2010/09/compare_varnish.jpg! x! f: K8 h/ ]3 `( [
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
0 h7 L9 s2 T& G% H" t' F Dload  Upload   Total   Spent    Left  Speed
3 u9 h: A! @0 p) c( Y  ?100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
9 P1 A4 `1 R( k2 I[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-
3 e/ d+ A; G" s. w: U  }content/uploads/2010/09/compare_varnish.jpg" m7 k2 B. W- Z$ G% T
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current) I3 m% v( L" P( h* W5 |0 x
Dload  Upload   Total   Spent    Left  Speed
$ S" n: ~4 j9 O, x100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0# q2 x% @! a2 j- T3 x$ ^
[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-- l: ]2 e0 n( C1 _: D- _+ j
content/uploads/2010/09/compare_varnish.jpg
, f; e$ s" E+ P/ b, W % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
& ^; a9 M/ X) ~: Y9 z Dload  Upload   Total   Spent    Left  Speed) q: T, j8 N9 J3 _* ^7 r
100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961" I, F& b6 G1 n5 m* R! @; Q
[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh( a- F4 N, o+ g! U& j
4.0K    one.part1, k" Z0 W; N* X
112K    three.part3- x5 w* N$ D4 q5 f) E; y( @
4.0K    two.part2
1 o8 B# {: B6 o* H用的时候,把他们cat一下就OK了,cat img.part* >img.jpg' q- v  }; }# ^& z

: f+ o' U8 f1 A  l! n. A9 ]1 H1 r2 k% b/ S7 j% c- k6 H
12,不会显示下载进度信息
5 r# i- Z9 V, k0 r: f/ x5 v6 n
( C- l; q* p! i- l) o3 L
* v- r7 L# S- ~[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
9 g& D, P% F" ?$ L4 p; f13,显示下载进度条3 }5 z* l# b/ Q7 k  @, D9 E2 k# F

7 N8 w+ S) |, S9 S/ L9 b, B: R6 v% ?# r- V! R- @1 n
[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg0 c5 z" R8 z! {, U8 V% g3 F
######################################################################## 100.0%
2 n7 |7 G9 _' k6 M5 L! x" _' C14,通过ftp下载文件
/ ?- n6 v, G- @0 Y% A% ^8 \$ ~' I5 S6 u

% j" L, ^* Q6 @[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css
* T* f; Y% B/ W2 ?9 H6 K % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
9 D( i5 U8 v0 B. Q Dload  Upload   Total   Spent    Left  Speed
1 Z1 w  X0 p% O! M; v/ B101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
* r2 L5 @  ]6 u6 G; C- g8 A或者用下面的方式
" v1 x0 t0 i; O( D[zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css
- }$ T+ _9 H: J" v1 b15,通过ftp上传
8 ~* v  V* t# ]
9 l. F" ^. A3 k3 k5 {+ U
, p- G% A1 F$ G[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/
; b7 M5 M- c2 V3 g2 r& B参考:http://www.codesky.net/article/201010/170043.html




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