|
- [9 Q" G5 {7 q( @6 P% t; N- G
http请求第一部分:动词 +路径+http协议/版本号,其中动词包括 GET POST PUT PATCH DELETE HEAD OPTIONS 等路径包括查询参数如?username=xxxxx但不包括锚点如#1111
; z% [8 O: c: o7 m; O" |7 V M9 G; r 如果不写路径,则默认为/例:GET/ HTTP/1.1POST/ HTTP/1.1第二部分:一堆KEY和一堆value例:Host:http://cxcccc.com" O, X. ?* o8 a3 N
Connection: keep-alive
2 Z- T* M, m* H: ? k! F Upgrade-Insecure-Requests: 1
5 T# Z" ~# \: R% _# w8 T User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36
# m% C l% \& M) Q Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
* _; x8 m; b( Y7 z( o3 y Referer: http://cxcccc.com
* m+ s2 U1 i+ H2 f3 n Accept-Encoding: gzip, deflate, br
9 c9 {" P @, n: M Accept-Language: zh-CN,zh;q=0.9
$ Z8 M% g5 f$ p 注意:如果第四部分有数据,则第二部分需要标注他的格式,如:Content-Type:application/x-www-form-urlencoded第三部分:回车第四部分要上传的数据,可以为空(比如一些get的时候)
' @' r6 r3 V3 Q5 @* E9 ~ 例:当我 curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "http://www.baidu.com"时,第四部分为1234567890查看http请求内容:
. E" A3 W5 U1 ~. D chrome中按F12呼出开发者工具,在network中在request里找个请求,找到request headers,点击viewsource,即可看到请求内容。
" _! M. N- w# Z3 i/ R) V8 F* q 第四部分找到payload或者formdata即可。
. m& |& r9 E @, E" ^ http响应第一部分:协议/版本号 状态码 解释如:http/1.1 200 ok其中状态码需要背下来:1xx 不常用2xx 成功了3xx 不接受你的请求4xx 客户端有问题(地址错了之类的)5xx 服务端有问题
e4 c4 s3 _3 F3 @ 解释可以自己定义,没啥用第二部分:一堆KEY和一堆VALUE(包括Content-Type:啥啥啥)第三部分:回车第四部分:返回的内容查看http响应内容:chrome中按F12呼出开发者工具,在network中在request里找个请求,找到response headers,点击viewsource,即可看到响应内容。 ) y1 C& Q# i% r
第四部分找到Preview或者Response即可。 f: X. N/ z8 X- _+ O
如何使用curl命令:最简单1:用curl查看html:curl http://www.baidu.com最简单2:使用linux的重定向功能保存:curl http://www.baidu.com >> baidu.html $ F N$ Q, N% T$ m4 k% I
常用参数:-A/--user-agent 设置用户代理发送给服务器
4 m* M/ ]2 u9 F3 p- t5 N -b/--cookie cookie字符串或文件读取位置0 N8 g5 L; I/ k% H
-c/--cookie-jar 操作结束后把cookie写入到这个文件中- C o3 U# M% y6 b) }3 G9 \
-C/--continue-at 断点续转3 X- v+ Z: H" b) e5 [
-D/--dump-header 把header信息写入到该文件中$ b+ n+ D! p+ g5 s6 ` Q
-e/--referer 来源网址
5 S; P+ N9 |/ k% ? -f/--fail 连接失败时不显示http错误
; c9 `9 N( U9 B) D -o/--output 把输出写到该文件中
9 Q7 x/ F5 T2 U1 \ -O/--remote-name 把输出写到该文件中,保留远程文件的文件名: v( M" X, l* r: T: P8 _4 a- ^
-r/--range 检索来自HTTP/1.1或FTP服务器字节范围 w* I* E- d; h6 n0 ]) [9 P
-s/--silent 静音模式。 ; R- k* u' l7 i+ o
不输出任何东西
9 R: L2 u# E* o2 ?& D: F -T/--upload-file 上传文件 q2 X% Z* _+ ^6 L% U9 g
-u/--user 设置服务器的用户和密码% N0 x G( q, s0 x+ }# ?9 r1 K' g. W
-w/--write-out [format] 什么输出完成后
4 S3 w5 U& \# b( N G, M+ s& Y -x/--proxy 在给定的端口上使用HTTP代理9 Q% a1 k. Q; J, W
-#/--progress-bar 进度条显示当前的传送状态8 K% f$ t5 J) {3 g4 U- A* b
5 k& `! N5 z r$ e: M6 a3 x
其他参数: G: ]/ p: \7 ~! g- l" ~
-a/--append 上传文件时,附加到目标文件7 p2 m! p- ]. |4 J
--anyauth 可以使用“任何”身份验证方法/ }! N0 x$ |% N" a
--basic 使用HTTP基本验证
1 U1 F; |$ s j( L5 R3 ~* o# [& w8 Y -B/--use-ascii 使用ASCII文本传输" C. q6 H& H3 W% k) W# ?" w1 U
-d/--data HTTP POST方式传送数据/ `1 Y0 Y9 Z2 l' D- q2 D- d
--data-ascii 以ascii的方式post数据
' ]& V- {% C! T. P( s6 m( F+ Y --data-binary 以二进制的方式post数据
' K$ q' A3 N: M. u! b7 ]9 v' N --negotiate 使用HTTP身份验证
& H" g& T" J, {1 e3 m --digest 使用数字身份验证
5 h* ]: x3 D: X0 _. F --disable-eprt 禁止使用EPRT或LPRT0 m. F. M" m0 f* R
--disable-epsv 禁止使用EPSV
% I p+ _/ }* y4 e- V& W/ G* Y --egd-file 为随机数据(SSL)设置EGD socket路径2 q- d K, x' P. v! V
--tcp-nodelay 使用TCP_NODELAY选项- [ E) ~6 ]. e1 Q! p
-E/--cert 客户端证书文件和密码 (SSL)) g( w# O/ W9 g: ]
--cert-type 证书文件类型 (DER/PEM/ENG) (SSL)& l# w/ i- J; S
--key 私钥文件名 (SSL)0 p# l! J* O& \
--key-type 私钥文件类型 (DER/PEM/ENG) (SSL)& @0 l ^& \3 I* s& N [( z
--pass 私钥密码 (SSL)7 G. E" f* g. }" n3 y/ b6 o
--engine 加密引擎使用 (SSL). "--engine list" for list. Z( {2 k" a, }% x# S
--cacert CA证书 (SSL)
2 _# e1 b3 U5 ]1 I --capath CA目 (made using c_rehash) to verify peer against (SSL); k% T3 H# s* |$ x
--ciphers SSL密码9 N* h+ \8 f) q, a
--compressed 要求返回是压缩的形势 (using deflate or gzip)
; \5 \& I- f, j/ \) e4 H8 | --connect-timeout 设置最大请求时间
7 A+ i( X p' s$ Z --create-dirs 建立本地目录的目录层次结构- E6 H5 M. a1 c q
--crlf 上传是把LF转变成CRLF2 ^1 u1 I% Z3 P' d/ F7 o# @
--ftp-create-dirs 如果远程目录不存在,创建远程目录
; c* E" O- [7 [! t --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
9 {+ u% q4 w+ J/ p2 U --ftp-pasv 使用 PASV/EPSV 代替端口
/ Y* T2 q1 \# S0 Z --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址( g6 Q$ R- Q8 a, x% n+ B. i0 z6 [
--ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输
9 ]% z1 b$ T* G' w* M --ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输# @+ r9 S9 W! ]3 P3 C
-F/--form 模拟http表单提交数据+ w$ N) I1 Z/ f8 N9 `% v
-form-string 模拟http表单提交数据/ u2 \. f# F& s c7 I. j* g4 J$ H
-g/--globoff 禁用网址序列和范围使用{}和[]
) l. P7 c2 Z( `, w1 O7 G -G/--get 以get的方式来发送数据 d* e+ ?3 J2 O1 t1 M( G
-h/--help 帮助% ^' p9 M; T- b) q, l
-H/--header 自定义头信息传递给服务器" B& o, I" e( J0 j5 K' {. \% E
--ignore-content-length 忽略的HTTP头信息的长度' I' ]( b* V5 w
-i/--include 输出时包括protocol头信息) J+ ?/ k1 y9 o- ~8 r1 h
-I/--head 只显示文档信息+ [3 ? ^4 g& }" J% v2 C2 R
-j/--junk-session-cookies 读取文件时忽略session cookie# x) c6 C% G3 K* ?0 z: i, J% b3 S
--interface 使用指定网络接口/地址
1 b0 Z. @, D0 O2 A; s4 R" S" f% V- t --krb4 使用指定安全级别的krb4
" {8 H+ _# H7 W/ L -k/--insecure 允许不使用证书到SSL站点
7 |# t D2 X9 | -K/--config 指定的配置文件读取
( ~* Q4 c- w; l# [- G% n' J& c -l/--list-only 列出ftp目录下的文件名称" g7 W- A7 p$ y2 A* @
--limit-rate 设置传输速度$ w/ x4 D/ L! W8 x2 v
--local-port 强制使用本地端口号4 ?8 t3 \# s6 p" A: N
-m/--max-time 设置最大传输时间
$ A, \4 |7 g: [/ b( I --max-redirs 设置最大读取的目录数
6 I2 q' D# Z% T$ F+ e) ~ --max-filesize 设置最大下载的文件总量" B, T) t5 v0 z; D9 V% J/ ^
-M/--manual 显示全手动
" U% }5 V9 q$ T- W V4 E- j -n/--netrc 从netrc文件中读取用户名和密码- r! Z, h8 x) \3 I
--netrc-optional 使用 .netrc 或者 URL来覆盖-n
4 @# q$ w3 a0 z0 l: b% c --ntlm 使用 HTTP NTLM 身份验证
. B$ O& E7 }& V' y -N/--no-buffer 禁用缓冲输出
8 A1 u2 M9 B2 T2 E: Q -p/--proxytunnel 使用HTTP代理4 p8 v p/ l: q& o
--proxy-anyauth 选择任一代理身份验证方法
5 o2 C# X; K7 \8 a --proxy-basic 在代理上使用基本身份验证
+ k3 {. z" u* w( e4 I$ O --proxy-digest 在代理上使用数字身份验证9 a: w1 y. Z. m1 F! w( [
--proxy-ntlm 在代理上使用ntlm身份验证
4 K% i- j( ~8 q! Z6 L+ v7 _$ H5 j -P/--ftp-port 使用端口地址,而不是使用PASV
5 o2 K1 P. p* c: j$ d5 M: E -Q/--quote 文件传输前,发送命令到服务器
- W, s2 h5 _' I6 L --range-file 读取(SSL)的随机文件
9 k1 m- v) Z f: d3 l -R/--remote-time 在本地生成文件时,保留远程文件时间7 t6 G% B" \ W1 b4 }& U
--retry 传输出现问题时,重试的次数
f$ a% t! y+ Y' a --retry-delay 传输出现问题时,设置重试间隔时间) t( L5 L7 d# a" u& T& J
--retry-max-time 传输出现问题时,设置最大重试时间
/ ^/ r8 ?. z9 g* @ -S/--show-error 显示错误, m+ V3 O" B0 V+ G1 I, O5 O! y
--socks4 用socks4代理给定主机和端口
% `+ d3 P& X) ]/ l --socks5 用socks5代理给定主机和端口
0 m1 D" X! `7 x7 Y5 [ -t/--telnet-option Telnet选项设置
1 ]4 R1 M' J; C1 f* q k --trace 对指定文件进行debug
( ]1 y: |! X# e0 { --trace-ascii Like --跟踪但没有hex输出1 D2 g1 u& ]$ F& {6 Q. M- t$ j
--trace-time 跟踪/详细输出时,添加时间戳
/ [7 S- m1 K! V5 j3 ~% o --url Spet URL to work with
0 A- t0 \2 \! l+ W4 o5 R Q ~ -U/--proxy-user 设置代理用户名和密码* |5 b" \$ H5 O: c |# f7 |: U0 ]
-V/--version 显示版本信息
3 T! Y& U! P. a* }- w8 T -X/--request 指定什么命令! L: c' T1 m, g( O
-y/--speed-time 放弃限速所要的时间。
; V% M t( ?3 R- M 默认为30
Q3 A7 M) R( c$ ~4 x# G, N/ | -Y/--speed-limit 停止传输速度的限制,速度时间秒: D- J6 ]- S: ?! \( d
-z/--time-cond 传送时间设置
6 I2 k3 C! i; V' |" q! K" Y -0/--http1.0 使用HTTP 1.0; ?& @; u( R; ?9 ^6 h
-1/--tlsv1 使用TLSv1(SSL)
C0 f8 }/ n! ]# s; z/ F* U" u# R -2/--sslv2 使用SSLv2的(SSL)- k1 o7 ?- K8 |8 E$ ~9 J
-3/--sslv3 使用的SSLv3(SSL)
* K( b; q- |$ ~0 ?$ t+ j --3p-quote like -Q for the source URL for 3rd party transfer
( R: b& ]& {6 J& W. e( P7 F --3p-url 使用url,进行第三方传送- F8 [) [5 \7 m# M
--3p-user 使用用户名和密码,进行第三方传送2 ?& S$ y2 `+ ^) R/ J) ?: F( o
-4/--ipv4 使用IP4
+ G/ e, ~8 l i0 k7 B* H -6/--ipv6 使用IP6。
4 x/ \7 e: }( s9 z6 R; r% v+ q: y
! O$ b& m" ?7 J5 ?
+ b4 v5 u2 X6 y$ H# W5 ~( J/ S a; l1 ^' I0 Z7 R; D |9 \
|