curl使用总结

2023-11-12

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

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\]/'

23、CURL 发送XFF请求头

 curl 'http://\[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

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

curl使用总结 的相关文章

  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 限制 Imagemagick 使用的空间和内存

    我在 Rails 应用程序上使用 Imagemagick 使用 rmagick 但我的服务器 Ubuntu 不是很大 当我启动转换进程时 Imagemagick 占据了我的服务器 30GB HDD 的所有位置 内存 我想限制内存和 tmp
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 【算法】分治、动态规划和贪心算法

    这三种算法非常相似 但是又有一些区别 理解如下 分治 把一个问题划分为若干子问题 求出子问题的最优解 再把子问题的最优解进行merge 最终得到原问题的最优解 动态规划 原问题的最优解包含子问题的最优解 即 拥有最优子结构 同时 求子问题的
  • React Router 从v3升级到v4的踩坑之旅

    React 应用很少不用react router这个包的 marknoteapp com之前一直用v3 看到v4出来后一直心痒 最近 抱着 用新不用旧 的理念 手贱升了一下级 这一升级 差不多2天功夫花掉啦 概述 和 Angular 那改朝
  • 通过java api提交自定义hadoop 作业

    通过API操作之前要先了解几个基本知识 一 hadoop的基本数据类型和java的基本数据类型是不一样的 但是都存在对应的关系 如下图 如果需要定义自己的数据类型 则必须实现Writable hadoop的数据类型可以通过get方法获得对应
  • 未来科技计算机作文600字,未来的科技作文600字

    未来的科技是什么样的呢 也许大家都很好奇 未来可能有像人一样的机器人 未来的汽车能在天上飞 电脑也会有思维会说话谈感情 现在让我们一起去畅想未来的世界吧 清晨 我正懒洋洋地睡在床上 蒙眬中听见一阵音乐把我给弄醒了 小主人 起床的时间到了 家
  • Elasticsearch 入门到精通-ES可视化查询工具kibana重启

    ps ef grep kibana ps ef grep 5601 都找不到 尝试 使用 fuser n tcp 5601 kill 9 端口 ps ef grep node 或 netstat anltp grep 5601 启动即可 k
  • LeetCode - 旋转数组类总结(二分法)

    搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转 例如 数组 0 1 2 4 5 6 7 可能变为 4 5 6 7 0 1 2 搜索一个给定的目标值 如果数组中存在这个目标值 则返回它的索引 否则返回 1 你可以假设数
  • linux下解压命令大全

    tar 解包 tar xvf FileName tar打包 tar cvf FileName tar DirName 注 tar是打包 不是压缩 gz解压1 gunzip FileName gz解压2 gzip d FileName gz压
  • 前端中DOM是什么,怎样理解dom

    前端中DOM是什么 怎样理解 首先我们来说一下DOM是什么 文档对象模型 Document Object Model 简称DOM 我个人认为他就是将 通过浏览器的一些规则解析后 在渲染成我们能够看得见的页面 这整个过程就是DOM 它的过程分
  • vue2引入Element UI组件去创建新页面的详细步骤--项目阶段2

    目录 一 Element UI介绍 Element UI的特点 二 下载配置Element UI 零 创建vue项目 一 下载Element UI依赖 二 全局文件main js中引入Element UI 三 删除多余的东西 一 删除App
  • ctf.show

    web21 自定义迭代器 先抓个包 发现authorization 授权 后面的basic认证很奇怪 用base64解码看看就是输入的用户名和密码 返回包里出现乱码 但可以看到admin 猜测用户名就叫admin 知道了爆破登录的形式是xx
  • spring与mybatis集成

    Spring 集成 MyBatis 将 MyBatis与 Spring 进行整合 主要解决的问题就是将 SqlSessionFactory 对象交由 Spring来管理 所以 该整合 只需要将 SqlSessionFactory 的对象生成
  • Nodejs+Express中页面控制器及脚本自动加载设计

    Express自身带强大的路由功能 这让我们可以详细拆分项目的需求 设计出优美的restful风格对外API 为了方便实现上述功能 我加入了页面控制器及脚本自动加载设计 比如针对会员模块 我们在app js中指定了模块的路由文件 app u
  • 【Java】你还在使用单线程处理大量数据么?

    Java 结合实际业务场景 使用多线程异步处理大量数据 业务场景 优化方案 多线程的实现 线程池 为什么要使用线程池 线程池的创建 1 Spring配置类 2 手动创建 提交任务 1 execute 2 submit 案例伪代码 后续优化
  • 【Python】OpenCV常用操作函数大全!

    目录 cv2常用类 1 图片加载 显示和保存 2 图像显示窗口创建与销毁 3 图片的常用属性的获取 4 生成指定大小的矩形区域 ROI 5 图片颜色通道的分离与合并 6 两张图片相加 改变对比度和亮度 7 像素运算 1 加减乘除 8 像素运
  • 【Windows】Windows下wget的安装与环境变量配置

    1 wget安装 GNU Wget常用于使用命令行下载网络资源 包括但不限于文件 网页等 GNU Wget官网 GNU Wget GNU Wget for Windows GNU Wget for Windows 安装时首先下载主安装包 C
  • 老王的24天,

    数组元素的反转 数组元素的反转 本来的样子 1 2 3 4 之后的样子 4 3 2 1 要求不能使用新数组 就用原来的一个数组 public class Demo07ArrayReverse public static void main
  • nRF52832 — 多通道ADC接口的使用

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说的
  • Golang基础(项目结构)

    一 标准的项目结构 在实际开发中不可能只有一个main包 更不可能就只有一个 go文件 不同级别大小的项目中包和文件数量都不同 Go语言中组织单元最大的为项目 项目下包含包 一个包可以有多个文件 包在物理层面上就是文件夹 同一个文件夹中多个
  • iOS App的上架和版本更新流程

    一 前言 作为一名iOSDeveloper 把开发出来的App上传到App Store是必要的 下面就来详细讲解一下具体流程步骤 二 准备 一个已付费的开发者账号 账号类型分为个人 Individual 公司 Company 企业 Ente
  • curl使用总结

    curl使用官网 https curl haxx se docs manpage html 1 查看curl的安装版本以及支持的协议 curl V 2 CURL分析HTTPS请求耗时时间 HTTPS耗时 TCP握手 SSL握手 因为涉及到一