找回密码
 加入怎通
查看: 256|回复: 1

http的请求和响应及curl的常用用法(备查)

[复制链接]
我来看看 发表于 2023-04-03 03:00:50 | 显示全部楼层 |阅读模式
- [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 \
回复

使用道具 举报

只为红颜一笑 发表于 2026-01-17 02:27:18 | 显示全部楼层
说得很实在,没有夸大其词,这种真实分享太难得了
回复 支持 反对

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-3-17 14:54 , Processed in 0.084112 second(s), 23 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表