curl命令

Zss 发表于:

一般用来下载,但是实际上功能远不止这么点,下载实则也就是请求,与其说下载,不如说和发送请求的工具

与python中的urllib和requests类似,基本都是说的http的请求相关的

 

一.基本用法

curl www.testone.top

返回其html所有的内容

 

二.保存html到文件中(-o)

(1).重定向

curl www.testone.top >> html.html

(2)参数 -o

curl -o html.html www.testone.top

 

三.保存文件(-O)

(1).-O参数

curl -O http://www.testone.top/wp-content/uploads/2018/10/scapy-2.4.0.zip

(2).重定向

curl http://www.testone.top/wp-content/uploads/2018/10/scapy-2.4.0.zip >> test.zip

进度详情显示

[root@zss ~]# curl -O http://www.testone.top/wp-content/uploads/2018/10/scapy-2.4.0.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 3926k  100 3926k    0     0   136k      0  0:00:28  0:00:28 --:--:--  133k

 

四.HTTP的响应头信息I(-I)

curl -I www.testone.top
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 30 Oct 2018 09:46:55 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.5.38
Link: <http://www.testone.top/index.php?rest_route=/>; rel="https://api.w.org/"
Link: <http://www.testone.top/>; rel=shortlink

 

五.状态码

curl -o /dev/null -s -w %{http_code} www.testone.top
返回:200

或者使用-I加正则来过滤(-I)

curl -I www.testone.top|egrep -o '\b[0-9]{3}\b'

 

六.代理服务器和端口的指定(-x)

url -x 192.168.100.123:1080 http://www.testone.top

 

七.响应headers的保存(-D)

curl -D rspheaders.txt www.testone.top

 

八.浏览器的user agent(-A)

curl -A "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36" www.testone.top

另外一种方式是直接修改headers -H

curl -H "User-Agent:Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36" www.testone.top

 

九.请求头的修改 (-H)

curl -H "Authorization: Basic enNzOjEyMzQ1wwg==" -H "Accept: application/json, text/plain, */*" http://52.74.53.225/login

添加多个头信息加入多个-H参数

 

十.伪造referer

curl -e "http://52.74.53.225/login" 52.74.53.225/login

 

十一.下载

curl -o dodo1.jpg http:www.linux.com/dodo1.JPG
-o重命名保存

curl -O http://www.linux.com/dodo1.JPG
以原始名保存
curl -O 52.74.53.225/login/test[1-5].jpg
将下载test1到5的jpg

十二.不同的请求方式 -X

使用POST请求那么 -X POST “URL”,-X PUT 和 -X DELETE 来指定另外的请求方法,-v 来查看详情

curl -d "username=admin&password=admin" -X POST http://10.6.161.155/cgi-bin/luci

发现没有返回的值???于是使用wireshark抓包发现ap是有返回token的。。。

-d 用来传输参数

那么json格式的数据提交需要在headers中设置为json格式

curl http://10.6.161.155/cgi-bin/luci -X POST -H "Content-Type:application/json" -d '"username":"admin","password":"admin"'

十三.文件的上传 (-F)

-F “file=@__FILE_PATH__”

curl localhost:8000/api/v1/upimg -F "file=@/Users/fungleo/Downloads/401.png" -H "token: 222" -v

参考参数:

-a/--append                        上传文件时,附加到目标文件
--anyauth                            可以使用“任何”身份验证方法
--basic                                使用HTTP基本验证
-B/--use-ascii                      使用ASCII文本传输
-d/--data <data>                  HTTP POST方式传送数据
--data-ascii <data>            以ascii的方式post数据
--data-binary <data>          以二进制的方式post数据
--negotiate                          使用HTTP身份验证
--digest                        使用数字身份验证
--disable-eprt                  禁止使用EPRT或LPRT
--disable-epsv                  禁止使用EPSV
--egd-file <file>              为随机数据(SSL)设置EGD socket路径
--tcp-nodelay                  使用TCP_NODELAY选项
-E/--cert <cert[:passwd]>      客户端证书文件和密码 (SSL)
--cert-type <type>              证书文件类型 (DER/PEM/ENG) (SSL)
--key <key>                    私钥文件名 (SSL)
--key-type <type>              私钥文件类型 (DER/PEM/ENG) (SSL)
--pass  <pass>                  私钥密码 (SSL)
--engine <eng>                  加密引擎使用 (SSL). "--engine list" for list
--cacert <file>                CA证书 (SSL)
--capath <directory>            CA目   (made using c_rehash) to verify peer against (SSL)
--ciphers <list>                SSL密码
--compressed                    要求返回是压缩的形势 (using deflate or gzip)
--connect-timeout <seconds>    设置最大请求时间
--create-dirs                  建立本地目录的目录层次结构
--crlf                          上传是把LF转变成CRLF
--ftp-create-dirs              如果远程目录不存在,创建远程目录
--ftp-method [multicwd/nocwd/singlecwd]    控制CWD的使用
--ftp-pasv                      使用 PASV/EPSV 代替端口
--ftp-skip-pasv-ip              使用PASV的时候,忽略该IP地址
--ftp-ssl                      尝试用 SSL/TLS 来进行ftp数据传输
--ftp-ssl-reqd                  要求用 SSL/TLS 来进行ftp数据传输
-F/--form <name=content>        模拟http表单提交数据
-form-string <name=string>      模拟http表单提交数据
-g/--globoff                    禁用网址序列和范围使用{}和[]
-G/--get                        以get的方式来发送数据
-h/--help                      帮助
-H/--header <line>              自定义头信息传递给服务器
--ignore-content-length        忽略的HTTP头信息的长度
-i/--include                    输出时包括protocol头信息
-I/--head                      只显示文档信息
-j/--junk-session-cookies      读取文件时忽略session cookie
--interface <interface>        使用指定网络接口/地址
--krb4 <level>                  使用指定安全级别的krb4
-k/--insecure                  允许不使用证书到SSL站点
-K/--config                    指定的配置文件读取
-l/--list-only                  列出ftp目录下的文件名称
--limit-rate <rate>            设置传输速度
--local-port<NUM>              强制使用本地端口号
-m/--max-time <seconds>        设置最大传输时间
--max-redirs <num>              设置最大读取的目录数
--max-filesize <bytes>          设置最大下载的文件总量
-M/--manual                    显示全手动
-n/--netrc                      从netrc文件中读取用户名和密码
--netrc-optional                使用 .netrc 或者 URL来覆盖-n
--ntlm                          使用 HTTP NTLM 身份验证
-N/--no-buffer                  禁用缓冲输出
-p/--proxytunnel                使用HTTP代理
--proxy-anyauth                选择任一代理身份验证方法
--proxy-basic                  在代理上使用基本身份验证
--proxy-digest                  在代理上使用数字身份验证
--proxy-ntlm                    在代理上使用ntlm身份验证
-P/--ftp-port <address>        使用端口地址,而不是使用PASV
-Q/--quote <cmd>                文件传输前,发送命令到服务器
--range-file                    读取(SSL)的随机文件
-R/--remote-time                在本地生成文件时,保留远程文件时间
--retry <num>                  传输出现问题时,重试的次数
--retry-delay <seconds>        传输出现问题时,设置重试间隔时间
--retry-max-time <seconds>      传输出现问题时,设置最大重试时间
-S/--show-error                显示错误
--socks4 <host[:port]>          用socks4代理给定主机和端口
--socks5 <host[:port]>          用socks5代理给定主机和端口
-t/--telnet-option <OPT=val>    Telnet选项设置
--trace <file>                  对指定文件进行debug
--trace-ascii <file>            Like --跟踪但没有hex输出
--trace-time                    跟踪/详细输出时,添加时间戳
--url <URL>                    Spet URL to work with
-U/--proxy-user <user[:password]>  设置代理用户名和密码
-V/--version                    显示版本信息
-X/--request <command>          指定什么命令
-y/--speed-time                放弃限速所要的时间。默认为30
-Y/--speed-limit                停止传输速度的限制,速度时间'秒
-z/--time-cond                  传送时间设置
-0/--http1.0                    使用HTTP 1.0
-1/--tlsv1                      使用TLSv1(SSL)
-2/--sslv2                      使用SSLv2的(SSL)
-3/--sslv3                      使用的SSLv3(SSL)
--3p-quote                      like -Q for the source URL for 3rd party transfer
--3p-url                        使用url,进行第三方传送
--3p-user                      使用用户名和密码,进行第三方传送
-4/--ipv4                      使用IP4
-6/--ipv6                      使用IP6