首页 > 其他分享 >软件测试学习笔记丨curl命令发送请求

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

时间:2024-09-27 11:54:00浏览次数:3  
标签:-- data 笔记 Chrome https curl com 软件测试

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

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

一、简介

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

二、环境安装

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

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

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

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

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

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

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

三、常见用法

3.1 从浏览器copy

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

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

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

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

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

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

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

$ 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命令发送请求_Chrome_09

  • curl 命令常用参数

参数

含义

-H

消息头设置

-u

用户认证

-d

表示来自于文件

–data-urlencode

对内容进行url编码

-G

把data数据当成get

-o

写文件

-x

http代理、socks5代理

-v

打印更详细的日志

-s

关闭一些提示输出

–help

查看帮助

四、实战

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

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

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

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

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

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"

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

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"

标签:--,data,笔记,Chrome,https,curl,com,软件测试
From: https://blog.51cto.com/u_16547786/12127453

相关文章

  • 软件测试学习笔记丨Mock的价值与实战
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32331一、Mock的价值与意义1.1简介测试过程中,对于一些不容易构造或获取的对象,用一个虚拟的对象来替代它,达到相同的效果,这个虚拟的对象即Mock。当做测试时,如果后端某些接口还不成熟,所依赖的接口不稳定,所依赖的接口为第三方......
  • 实战笔记:Vue2项目Webpack 3升级到Webpack 4的实操指南
    在Web开发领域,保持技术的更新是非常重要的。随着前端构建工具的快速发展,Webpack已经更新到5.x版本,如果你正在使用Vue2项目,并且还在使用Webpack3,那么是时候考虑升级一下Webpack了。我最近将我的Vue2项目从Webpack3升级到了Webpack4。以下是我升级过程中积累的经验和步骤,希望......
  • prometheus学习笔记之UI页面讲解
    一、Graph页面1.图标菜单Uselocaltime:使用当地时间Enablequeryhistory:开启查询历史Enableautocomplete:开启自动补全Enablehighlighting:开启高亮显示Enablelinter:开启提示功能2.table查询面板table又可以称为1个点的查询3.graph查询面板 查询一段时间内的数......
  • 表单的学习笔记
    表单就是用来收集信息,填入数据的。就像我们在生活中填的调查表,保险单等。表单元素允许我们在页面里填入信息、选择对应信息等,下面我们就来学习一下,也做出来一个表单。首先要先了解表单元素,通过元素才能做出大概轮廓,再用属性来设置需求。一、表单元素form:定义供用户输入的表......
  • 戴尔笔记本怎么重装系统_戴尔笔记本重装系统win10教程(支持新旧机型安装)
         戴尔笔记本怎么重装系统?戴尔笔记本这几年默认预装win10家庭版和win11家庭版。有的用户用上了预装win11家庭版的戴尔笔记本,使用一段时间依然不习惯,于是想退回win10。但不知道怎么重装win10,这几年的戴尔笔记本建议采用U盘方式安装系统比较保险,在线安装的话可能触发......
  • Arduino UNO R3自学笔记6 之 Arduino引脚(IO)功能介绍
    注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。前言:ArdunioUNOR3有很多引脚,接下来主要介绍它们都可以用做什么。从上图不难看出开发板引脚也不是有多少,分类来看也就以下种类型:                ●数字IO               ......
  • 01-微服务1-3章的笔记
    前言这是尚硅谷2024Cloud教程的笔记,只是记录学习历程,方便自己以后查询。周阳老师讲的很好,给出原视频地址对应1.Boot和Cloud选项,2.Cloud组件的停更,升级,替换,3.Base工程构建。1.Boot和Cloud选项1.JDKSpringBoot3.0开始,对于JDK的最低版本是JDK17,强制要求,从JDK8.x到JDK17的转变。......
  • 828华为云征文|Flexus云服务器X实例实践:安装flatnotes笔记应用程序
    828华为云征文|Flexus云服务器X实例实践:安装letsmarkdown轻量级编辑器引言一、Flexus云服务器X实例介绍1.1Flexus云服务器X实例简介1.2主要使用场景二、购买Flexus云服务器X实例2.1购买规格参考2.2查看Flexus云服务器X实例状态三、远程连接Flexus云服务器X实例3.1......
  • 易优CMS为何我安装完提示这个报错?:Array and string offset access syntax with curly
    当你遇到类似 Arrayandstringoffsetaccesssyntaxwithcurlybracesisdeprecated 的报错时,通常是因为当前使用的PHP版本较高,而程序代码中使用了一些已弃用的语法。原因分析PHP版本过高:当前使用的PHP版本(如PHP7.4或更高版本)不再支持某些旧的语法形式。代码使......
  • 虚树 学习笔记
    虚树VirtualTree学习笔记引入P2495[SDOI2011]消耗战题目大意:给一棵\(n\)个点的树,\(m\)次询问\(k\)个点,要求切断一些边使点1不可达这些点,求最小切断的边权和。\(n\le2.5*10^5,m\le5*10^5,\sumk\le5*10^5\)先考虑一个朴素的DP,每次询问扫一遍整个树。设\(f_......