软件测试学习笔记丨curl命令发送请求

news2024/11/17 1:31:38

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32332

一、简介

  • cURL是一个通过URL传输数据的,功能强大的命令行工具。
  • cURL可以与Chrome Devtool工具配合使用,把浏览器发送的真实请求还原出来,附带认证信息,脱离浏览器执行,方便开发者重放请求、修改参数调试,编写脚本。
  • 也可以单独使用,根据自己的需求构造请求调整参数,构造多种接口测试场景。

二、环境安装

  • Chrome DevTools(Chrome开发者工具)是内嵌在Chrome浏览器里,一组用于网页制作和调试的工具。
  • 在测试过程中,也常常作为一个简单的抓包工具。

1、选择右上角Chrome菜单 → 更多工具 → 开发者工具,或者使用快捷键F12:

2、右键,选择检查/审查元素:

3、在Network面板中,查看通过网络请求的详细信息:

三、常见用法

3.1 从浏览器copy

1、右键菜单,选择Copy → copy as curl,复制请求内容转换为cURL命令;

2、将命令copy在gitbash或bash上运行,则会看到返回信息;

3、对上面命令进行细化,加入-v参数,可以打印详细的内容,用2>&1将标准错误重定向到标准输出,发送此命令将得到细化后的内容。

$ curl 'https://service.tutorial.hogwarts.ceshiren.com/mock/L3/tutorial/%E4%BD%BF%E7%94%A8curl%E5%8F%91%E9%80%81%E8%AF%B7%E6%B1%82/' \
  -H 'Referer: https://service.tutorial.hogwarts.ceshiren.com/mock/L3/tutorial/%E6%8A%93%E5%8C%85%E5%88%86%E6%9E%90tcp%E5%8D%8F%E8%AE%AE/' \
  -H 'Upgrade-Insecure-Requests: 1' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36' \
  -H 'sec-ch-ua: "Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"'\
> compressed -v 2>&1

3.2 其他常用命令

  • 发起GET请求:
curl "https://httpbin.testing-studio.com/get" -H "accept: application/json"
  • 发起 POST 请求:
curl -X POST "https://httpbin.testing-studio.com/post" -H \
"accept: application/json"
  • Proxy 的使用:
curl -x 'http://127.0.0.1:8080' "https://httpbin.testing-studio.com/get"

  • curl 命令常用参数
参数含义
-H消息头设置
-u用户认证
-d表示来自于文件
–data-urlencode对内容进行url编码
-G把data数据当成get
-o写文件
-xhttp代理、socks5代理
-v打印更详细的日志
-s关闭一些提示输出
–help查看帮助

四、实战

1、篡改请求头信息,将 User-Agent 改为“testing-studio”

curl -H "User-Agent:testing-studio" "http://www.baidu.com" -v

在这里插入图片描述

2、在企业微信中通过 curl 命令创建标签,这是一个 post 请求,通过 --data 参数传递 tagname 和 tagid。

# token为个人生成,需要替换
curl -H "Content-Type: application/json" -X POST \
--data '{"tagname": "hogwarts","tagid": 13}' \
https://qyapi.weixin.qq.com/cgi-bin/tag/create?access_token=$token

3、认证,通过 put 上传到 ElasticSearch ,使用 --user 进行用户认证。

# ES_HOST index id content 均为变量,需替换
curl -X PUT "$ES_HOST/$index/_doc/$id?pretty" \
    --user username:password \
    -H 'Content-Type: application/json' \
    -d "$content"

4、向雪球发起股票搜索

url=http://www.baidu.com

## get请求加json解析 
curl -s 'https://xueqiu.com/stock/search.json?code=sogo&size=3&page=1' -H 'Connection: keep-alive' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Accept: application/json, text/plain, */*' -H 'Sec-Fetch-Dest: empty' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' -H 'elastic-apm-traceparent: 00-760301b0a132e9a4c0f5ac7448a3419e-8823be75504fc61f-00' -H 'Sec-Fetch-Site: same-origin' -H 'Sec-Fetch-Mode: cors' -H 'Referer: https://xueqiu.com/k?q=sogo' -H 'Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7' -H 'Cookie: device_id=24700f9f1986800ab4fcc880530dd0ed; cookiesu=841584103115161; aliyungf_tc=AQAAAIPytE8aVQoAXhjf3cw3R+j5DD/s; acw_tc=2760824b15851452106833674e25941ad47588d5d7ded79b38a04dad8f9444; xq_a_token=2ee68b782d6ac072e2a24d81406dd950aacaebe3; xqat=2ee68b782d6ac072e2a24d81406dd950aacaebe3; xq_r_token=f9a2c4e43ce1340d624c8b28e3634941c48f1052; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTU4NzUyMjY2MSwiY3RtIjoxNTg1MTQ1MTYxMDIwLCJjaWQiOiJkOWQwbjRBWnVwIn0.TPrw6_M2Th9QTVz5spwUybqN1790nJANu9kxXl4GfNb1eQ2p2zD43CStgogOGQ8yRXYmSCfURp0343wgjnnCdnQX5698Jl-brdP94wiYKwv11q8QjBYMXFWJGRj0g69C2nxVrRF8K-ETGEked3KjYfk8Xy2wPuZtyGUhORWeCvMhmBdcRKIlWj4d7wp-w_LjMbSLigJAT29F03wBZIxR0r3eMNUhUsXh8dCsWNb6wzhtg8dT4gcd91mQmR5ToR_SFrzQfOopY4vQGcaOHWaAwUMPLUopZwD4ajWzm1kpoBZnf_n_9uBfT4j0nGk95E8J8EmTfBlq-1p019xkhgp87w; u=431585145210698; Hm_lvt_1db88642e346389874251b5a1eded6e3=1583285031,1584102200,1585145180; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1585145192' --compressed | jq
{
  "q": "sogo",
  "page": 1,
  "size": 3,
  "stocks": [
    {
      "code": "SOGO",
      "name": "搜狗",
      "enName": "",
      "hasexist": "false",
      "flag": null,
      "type": 0,
      "stock_id": 1029472,
      "ind_id": 0,
      "ind_name": "通讯业务",
      "ind_color": null,
      "_source": "sc_1:1:sogo"
    }
  ]
}


#post请求
curl 'http://sonarqube.testing-studio.com:9000/api/authentication/login' -H 'Connection: keep-alive' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Accept: application/json' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Origin: http://sonarqube.testing-studio.com:9000' -H 'Referer: http://sonarqube.testing-studio.com:9000/sessions/new' -H 'Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7' -H 'Cookie: _ga=GA1.2.232181868.1566982077; experimentation_subject_id=IjNlYzgxODQ1LTU2MDAtNGIyNy1iNTgzLTE1MzRkY2IwMDI0ZSI%3D--b1f29d33f6a2c85a81be66e4774d437f710c102f; _gid=GA1.2.482544306.1585051015' --data 'login=admin&password=1234' --compressed --insecure

#百度的一个url提交脚本
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls"

#对参数编码并发送get请求
    curl -G $url  \
        --data-urlencode "current=$current" \
        --data-urlencode "pageSize=$pageSize" 


#认证与put上传都ElasticSearch里
    curl -X PUT "$ES_HOST/$index/_doc/$id?pretty" \
        --user username:password \
        -H 'Content-Type: application/json' \
        -d "$content"


#查看邮箱
curl -s --user $mail_username:$mail_password "imaps://imap.exmail.qq.com/inbox?all"

在这里插入图片描述

推荐学习

【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)

【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试

【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff

【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享

【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装

【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?

【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!

【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我

【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化

【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试

【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !

【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置

【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2173412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot打造:小徐影院管理平台

第1章 概述 1.1 研究背景 随着现代网络技术发展,对于小徐影城管理系统现在正处于网络发展的阶段,所以对它的要求也是比较严格的,要从这个系统的功能和用户实际需求来进行对系统制定开发的发展方式,依靠网络技术的的快速发展和现代…

【Mysql】Mysql数据库基本操作-------DDL(上)

1、DDL解释 DDL(Data Definition Language),数据定义语言,该语言部分包括以下内容, (1)对数据库的常用操作 (2)对表结构的常用操作 (3)修…

【Qt】编写第一个Qt程序 对象树 内存泄漏问题探讨

编写第一个Qt程序 1. 使用图形化界面生成2. 使用代码生成3. 对象树3.1什么是对象树3.2 验证对象树 4. 解决编码问题 1. 使用图形化界面生成 创建好一个项目后,我们可以点击 widget.ui 进入图形化界面设计,可以直接通过拖拽的方式进行添加。 通过拖拽的方…

群体神经科学中的社会公正:避免数据分析中的社会构建误用

TLDR:有意思的观点。文章作者强调,使用群体神经科学大数据时,研究人员必须承担起伦理和科学责任,避免对边缘化群体造成进一步的污名化。通过像ABCD这样的开放数据集,研究人员应避免将种族、性别等简单化处理为独立变量…

「JavaScript深入」聊一聊 new操作符具体干了什么?

JavaScript深入 — new操作符 概念流程手写new操作符 概念 在JavaScript中,new 操作符用于创建一个给定构造函数的实例对象 function Person(name, age){this.name name;this.age age; } Person.prototype.sayName function () {console.log(this.name) } cons…

记一次从登录框到内网横向

前言 接到公司通知要对某某行业做渗透测试,挖一些尽可能高危的漏洞,于是便有了接下来的故事。 0x01 信息收集 首先收集了十几个该行业相关的网站,然后一个个做信息收集,先列出来可利用的点。 1.某某公司为YouDianCMS&#xff08…

车载诊断技术:汽车健康的守护者

一、车载诊断技术的发展历程 从最初简单的硬件设备到如今智能化、网络化的系统,车载诊断技术不断演进,为汽车安全和性能提供保障。 早期的汽车诊断检测技术处于比较原始的状态,主要依靠操作经验和主观评价。随着汽车工业的发展,车载诊断技术也经历了不同的阶段。20 世纪初…

Java生成Markdown格式内容

前一篇写的是markdown格式的文本内容转换保存为word文档,是假定已经有一个现成的markdown格式的文本,然后直接转换保存为word文档,不过在开发中,通常情况下,数据是从数据库中获取,拿到的数据映射到java对象…

趋势外推法

趋势外推法主要利用图形识别法和差分法计算,进行模型的基本选择。 一、图形识别法。 这种方法是通过绘制散点图来进行的,即将时间序列的数据绘制成以时间 t 为横轴、时序观察值为纵轴的图形,观察并将其变化曲线与各类函数曲线模型的图形进行…

物联网系统中高精度温度检测方案_温度变送器

01 物联网系统中为什么要使用温度变送器 在物联网系统中使用温度变送器的原因主要可以归纳为以下几点: 1、温度监测与控制 实时数据获取:温度变送器能够将温度这一物理量转换为可传输的标准化电信号(如4-20mA电流信号、0-10V电压信号或RS48…

Spring Boot 进阶-Spring Boot 开发第一个Web接口

在前面的文章中我们对Spring Boot的配置以及日志配置有了大概的了解,在我们搭建完成第一个Spring Boot项目之后也提到了一个概念就是RestFul风格的接口开发。下面我们就来详细介绍一下使用Spring Boot如何去开发一个RestFul的Web接口。 准备 在开发接口之前,需要引入的就是W…

一文上手Kafka【中】

一、发送消息细节 在发送消息的特别注意: 在版本 3.0 中,以前返回 ListenableFuture 的方法已更改为返回 CompletableFuture。为了便于迁移,2.9 版本添加了一个方法 usingCompletableFuture(),该方法为 CompletableFu…

【工具类】证书自动续签免费版 正式发布

证书自动续签免费版 正式发布 1.控制台首页2.申请证书2.1.支持自动解析和手动解析两种模式2.2.LB(负载均衡)支持主流的云厂商2.3.CDN(内容分发) 支持主流的云厂商2.4.对象存储(OSS)支持主流云厂商2.5DCDN&a…

TDengine 在业务落地与架构改造中的应用实践!

前言 在物联网和大数据时代,时序数据的管理和分析变得至关重要。TDengine,作为一款专为时序数据设计的开源数据库,以其卓越的存储和查询效率,成为众多企业优化数据架构的优选。本文将分享我将TDengine成功应用于实际业务的经验&am…

elementui/plus灯下面的指示怎么改成圆圈或者隐藏

改成圆圈的步骤 改成没有indicator-position指示的位置/或者隐藏

用友U8 CRM 多个接口存在SQL注入漏洞

本文所涉及的任何技术、信息或工具,仅供学习和参考之用,请勿将文章内的相关技术用于非法目的,如有相关非法行为与文章作者无关。请遵守《中华人民共和国网络安全法》。 中华人民共和国网络安全法 第二十七条 规定 任何个人和组织不得从事非…

保姆级复现yolov7(论文复现)

保姆级复现yolov7(论文复现) 本文所涉及所有资源均在传知代码平台可获取 所需环境 当然深度学习环境的搭建是基础,详情可见(win10): 【深度学习】windows10环境配置详细教程anaconda3环境变量配置win10-CSDN博客 Unbutun搭建深度学…

正则表达式的使用示例--Everything文件检索批量重命名工具

一、引言 Everything是一款非常实用的文件搜索工具,它可以帮助您快速定位并查找计算机中的文件和文件夹。Everything搜索文件资料之神速,有使用过的朋友们都深有体会,相对于Windows自带的搜索功能,使用Everything,可以…

C语言 | Leetcode C语言题解之第442题数组中重复的数据

题目&#xff1a; 题解&#xff1a; int* findDuplicates(int* nums, int numsSize, int* returnSize) { int *ans (int *)malloc(sizeof(int) * numsSize);int pos 0;for (int i 0; i < numsSize; i) {int x abs(nums[i]);if (nums[x - 1] > 0) {nums[x - 1] -…

$attrs 和 $listeners

通常情况下&#xff0c;父子组件之间的数据是通过 props 由父向子传递的&#xff0c;当子组件想要修改数据时&#xff0c;则需要通过 $emit 以事件形式交由父组件完成&#xff0c;而这种交互方式只存在于父子组件之间&#xff0c;多层嵌套的时候&#xff0c;处于内层的组件想要…