码迷,mamicode.com
首页 > Web开发 > 详细

curl使用总结

时间:2021-06-07 20:55:09      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:最小化   public   urlencode   文件下载   认证   show   bin   data   jpg   

curl使用官网:https://curl.haxx.se/docs/manpage.html

curl命令作用

      curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件,同时支持HTTPS等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类似的工具还有wget。curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。


1·、查看curl的安装版本以及支持的协议:$ curl -V


2、CURL分析HTTPS请求耗时时间:
HTTPS耗时=TCP握手+SSL握手,因为涉及到一些加密,即多了几次握手交互,可以看到时间
要多于平常时间的3-5陪,当然也和机器性能相关:

$: curl -w "TCP handshake: %{time_connect}, SSL handshake: %{time_appconnect}\n" -so /dev/null url

 

3、CURL分析HTTPS请求过程:
curl -trace命令可以记录请求的详情,命令如下:
$: curl -kv -1 --trace temp.txt ‘url‘  忽略ssl解析

 

temp.txt中详细记录了请求的详情

部分截图如下:

 

curl -v -1 --trace temp.txt ‘url‘ 不忽略ssl解析

 

4、访问https站点:$ curl --insecure https://192.168.26.219/a.php
--insecure忽略对本地ssl证书的校验


5、调用HTTPS的loginAPI登陆:
登陆网址为:https://192.168.26.219/wp-login.php

 

用户名与密码登陆的关键字为:

 

$: curl -v --insecure -d "log=admin&pwd=adminadmin&wp-submit=登陆" https://192.168.26.219/wp-login.php

-d "...&..."的参数是通过POST方法发送参数。服务端最终回复一个JSON格式的字符串,表示登陆成功。并且拿到了wordpress_sec_d121d4c04293418250eaf77073c8fa7的值,也就是cookie

 

 

用拿到的cookie去访问https网页,后面的网页只需要HTTP访问,提供正确的cookie即可:

 curl -v  --cookie "wordpress_sec_d121d4c04293418250eaf77073c8fa71=admin%7C1579228052%7CGJ7tJrKEuP3r01nIbesOfwXbNS1FAPrmnJsWszBQ0Mu%7C7c5f1186774e2dcaebbec95814fb6c855cabe46262f18df99beb6e790c0c0a9d" https://192.168.26.219/wp-login.php

 

6、Linux证书安装路径:$ /etc/pki/tls/certs
通过浏览器访问来下载ca证书:

 

 

 

 

 

 

将ca证书导入到Linux库中,

ca证书的转换(cer转pem):

命令:

[root@localhost ~]# openssl
OpenSSL> x509 -inform der -in /root/windows.cer -out /root/windows.pem

 

cat /root/windows.pem >> /etc/pki/tls/certs/ca-bundle.crt

 

由于Linux最小化安装中是没有浏览器的,故使用:curl url命令:用来检测一个网址是否能够正常访问,因此这种方式就是实现一种浏览器访问的功能。

7、使用curl下载文件:
使用:curl -O url下载文件

-O:使用URL中默认的文件名保存文件到本地

curl -O http://yjszs.hfut.edu.cn/upload/xxnr/1568615796096.doc

下载一个word文档:

 

同时获取多个文件的命令:$  curl -O url1 -O url2

若同时从同一站点下载多个文件时,curl会尝试重用链接(connection)。

使用:curl -o 新文件名 文件下载地址

-o:将文件保存为命令行中指定的文件名的文件中

curl -o 1.jpg http://t9.baidu.com/it/u=86853839,3576305254&fm=79&app=86&size=h300&n=0&g=4n&f=jpeg?sec=1579684823&t=0dc308b4ce7f8f3f15a140b94d4e8380

在命令行中输入“curl -o 1.jpg 一个xxx.jpg网络地址”这句话是将xx.jpg下载保存到本地,并可以重命名为1.jpg。

 

8、利用curl上传文件
$: curl -T 1.jpg -u 用户名:密码 ftp://FTP地址

在命令行中输入“curl -T 1.JPG -u 用户名:密码 ftp://FTP地址/img/”这句命令的意思是将1.jpg上传到一个ftp的目录下,当然了使用该句命令需要知道ftp的基本信息如端口用户名密码等。

9、CURL使用POST上传文件
curl http://192.168.26.244/web/ -F "file=@/root/ls/webshell.txt" -v

$ curl url -F "file=@文件路径" -v

 

 

可以使用: WIN + R 进行历史命令搜索。

使用-X 选择请求方式,使用-d 来传送参数

curl -X POST http://192.168.26.244/web/ -d "title=comewords&content=articleContent"


 使用-H 设置请求header

curl http://192.168.26.244/web/ -X POST -H "Content-Type:application/json" -d ‘"title":"comewords","content":"articleContent"‘

 

10、CURL上传文件(2)
curl --form "fileupload=@/root/ls/webshell.txt" http://192.168.26.244/web/

$ curl --form "fileupload=@文件" url

 

 

11、使用转向字符">"对输出进行转向输出


12、curl强制重定向-L:(访问的页面默认会重定向)

将会返回从定向页面地址:

curl -L http://192.168.26.244/web/

 

12、CURL断点续传功能 ”-C“
通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载
13、使用--limit-rate对CURL进行网络限速
下载速度最大不会超过1000B/second

curl --limit-rate 1000B -O http://yjszs.hfut.edu.cn/upload/xxnr/1474523985699.doc

14、使用-z下载指定时间内修改过的文件
当下载一个文件时,可对该文件的最后修改日期进行判断,如果该文件在指定日期内修改过,就进行下载,否则不下载。

若http://yjszs.hfut.edu.cn/upload/xxnr/1474523985699.doc文件在2019/12/21之后有过哥更新这下载

curl -z 21-Dec-19 http://yjszs.hfut.edu.cn/upload/xxnr/1474523985699.doc
15、CURL使用-u授权访问页面
在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权

curl -u username:password URL
# 通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露
curl -u username URL
curl -u user:passwd http://192.168.26.244/web/

或:curl -u use url

 

16、curl从ftp服务器下载文件与上传文件
CURL同样支持FTP下载,若在url中指定的是某个文件路径而非具体的某个要下载的文件名,CURL则会列出该目录下的所有文件名而并非下载该目录下的所有文件

1 # 列出public_html下的所有文件夹和文件
2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
3 # 下载xss.php文件
4 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
通过 -T 选项可将指定的本地文件上传到FTP服务器上

# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
17、通过 -V 与 --trace,--help, --manual获取更多信息
通过字典查询单词

1 # 查询bash单词的含义
2 curl dict://dict.org/d:bash
3
4 # 列出所有可用词典
5 curl dict://dict.org/show:db
6
7 # 在foldoc词典中查询bash单词的含义
8 curl dict://dict.org/d:bash:foldoc
18、为CURL设置代理
-x 选项可以为CURL添加代理功能

1 # 指定代理主机和端口
2 curl -v -x https://10.20.80.158:22 http://192.168.26.219/a.php


19、保存与使用网站的cookie信息
1 # 将网站的cookies信息保存到bb.txt文件中
2 curl -D bb.txt http://192.168.26.219/a.php
3 # 使用上次保存的cookie信息
4 curl -b bb.txt http://192.168.26.219/a.php


20、使用-d 或者 --data 传递数据
# -d 或者 --data可以将指定文件中的内容当数据传递给服务端

$ curl --data @/root/ls/webshell.txt http://192.168.26.244/web/

 

 

注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

 

在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。

21、CURL使用 -I 裁剪返回页面

curl -I -v http://192.168.26.219/

 

不使用 -I

 

22、CURL发送IPV6请求
curl ‘http://
2001::218
2001::218
/‘

 

23、CURL 发送XFF请求头
 curl ‘http://
2001::218
2001::218
/11.mdb‘ -H ‘X-Forwarded-For:1.1.1.1‘

curl ‘http://192.168.26.244/11.mdb‘ -H ‘X-Forwarded-For: 2.2.2.2,2001::155,1.1.1.1‘

 

24、使用curl发送只要服务器返回吗


#!/bin/bash
echo "循环6次"

for ((i=0;i<200;i++))
do

# curl http://192.168.26.150/1.mdb

# curl -H "Cdn-Src-Ip: 192.168.26.150" http://192.168.26.150/ips/ms/1.mdb

# curl -H "Cdn-Src-Ip: 192.168.26.150" http://192.168.26.150/ips/ms/

# curl -sIL -w "%{http_code}\n" -o txt -H "X-Forwarded-For: 192.168.26.150" http://192.168.26.150/ips/ms/

# curl -sIL -w "%{http_code}\n" -o txt -H "X-Forwarded-For: 192.168.26.150" http://192.168.26.150/

curl -sIL -w "%{http_code}\n" -o txt http://192.168.26.150/1.mdb

# curl -H "Cdn-Src-Ip: 192.168.26.150" http://192.168.26.150/ags/ms/cm-s-notice-query/contents/


done

echo "循环结束"
结果如下:

 

25、防盗链请求

 curl -v http://192.168.26.219/a.jpg     -H ‘Referer: http://192.168.26.210/a.jpg‘

26、连续访问:

while true;do curl -H "Content-Type: application/json" -X POST -d ‘{"user_id": "123", "coin":100, "success":1, "msg":"OK!", "name":"Tom", "sex":"womean", "age":25 }‘ "http://192.168.26.219/";sleep 2;done

补充内容:https://www.cnblogs.com/fan-gx/p/12321351.html
————————————————
版权声明:本文为CSDN博主「白清羽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gufenchen/article/details/103983440

curl使用总结

标签:最小化   public   urlencode   文件下载   认证   show   bin   data   jpg   

原文地址:https://www.cnblogs.com/wyl-520/p/14858835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!