技术分享 | 使用 cURL 发送请求

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

环境安装

学习 curl 命令之前,需要先了解 Chrome Devtool 工具。

ChromeDevTools

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

如何操作

  • 选择右上角 Chrome 菜单,然后选择更多工具 -> 开发者工具

  • 或者右键,选择检查/审查元素

在 Network 面板中可以查看通过网络来请求来的资源的详细信息:

图片

cURL常见用法

从浏览器 copy
  1. 右键左侧数据,选择 Copy -> copy as curl ,即可把请求内容转化为 cURL 命令。

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

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

细化后的命令如下

curl 'https://home.testing-studio.com/' -H \'authority: home.testing-studio.com' -H 'pragma: no-cache'\ -H 'cache-control: no-cache' -H 'upgrade-insecure-requests: 1'\ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0)\  AppleWebKit/537.36 (KHTML, like Gecko)\   Chrome/80.0.3987.116 Safari/537.36' \ -H 'sec-fetch-dest: document' \ -H 'accept: text/html,application/xhtml+xml,\ application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,\ application/signed-exchange;v=b3;q=0.9' \ -H 'sec-fetch-site: none' -H 'sec-fetch-mode: navigate' \ -H 'sec-fetch-user: ?1' \ -H 'accept-language: en,zh-CN;q=0.9,zh;q=0.8' \ --compressed -v 2>&1
其他常用命令

发起 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查看帮助

cURL实战演练

通过几个小实战演练,了解一些常用参数的用法

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

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

可以看到请求中的 User-Agent 成功改为了 testing-studio​​​​​​​

*   Trying 14.215.177.39...* TCP_NODELAY set* Connected to www.baidu.com (14.215.177.39) port 80 (#0)> GET / HTTP/1.1> Host: www.baidu.com> Accept: */*> User-Agent:testing-studio

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"

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GO】项目import第三方的依赖包

目录 一、导入第三方包 1.执行命令 2.查看go环境变量参数 3.查看go.mod文件的变化情况 二、程序里如何import 1. import依赖包 2. 程序编写 本次学习go如果依赖第三方的包,并根据第三方的包提供的接口进行编程,这里需要使用go get命令。下面将go…

个性化联邦学习-综述

介绍阅读的三篇个性化联邦学习的经典综述文章 Three Approaches for Personalization with Applications to Federated Learning 论文地址 文章的主要内容 介绍了用户聚类,数据插值,模型插值三种个性化联邦学习的方法。 用户聚类: 目的&a…

快速解决mfc140u.dll丢失问题,找不到mfc140u.dll修复方法分享

在计算机使用过程中,我们可能会遇到各种问题,其中之一就是某些dll文件丢失。最近,我就遇到了一个关于mfc140u.dll丢失的问题。mfc140u.dll是Microsoft Foundation Class(MFC)库中的一个动态链接库文件,它包…

Tomcat,jdk下载配置(发布项目)

Tomcat,jdk下载, 远程连接 启动以下服务 高级设置 允许别人连接进来 网上搜索jdk下载即可 双击下一步即可 下一步 输入java,看有没有安装成功 这是安装成功的 Tomcat就可以安装了 和以上操作一样,在网上下载安装包,…

手把手教你搭建属于自己的服务器

最近总是想搭建自己的网站,奈何皮夹里空空如也,服务器也租不起,更别说域名了。于是我就寻思能否自己搭建个服务器,还不要钱呢? 还真行!!! 经过几天的冲浪,我发现有两个…

SpringBoot文件上传

SpringBoot文件上传 上传文件是互联网中常常应用的场景之一&#xff0c;最典型的情况就是上传头像等&#xff0c;今天就带着带着大家做一个 Spring Boot 上传文件的小案例。 1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xml…

pytest中的pytest.ini

[pytest] filterwarnings ignore::DeprecationWarning addopts -v -s markers uat:1 smok:2 log_cli1 xfail_strict True filterwarnings ignore::DeprecationWarning 这个的功能就是 test_login.py::Test_login::test_login_correct_password PASSEDwarnings summary …

[答疑]大老二和德州扑克-属性值没变,状态怎么变了

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 邬俊杰 2023-10-31 21:20 课上说状态是由属性值决定的&#xff0c;比如身高>170算高&#xff0c;某人身高175&#xff0c;算高。如果规则改了&#xff0c;身高>180算高&#xf…

C语言——循环结构

C语言提供了while&#xff0c;do...while&#xff0c;for三种语句构成循环结构。循环语句是程序中的一个基本语句&#xff0c;在编程中&#xff0c;如果我们需要对某些操作对象进行相同的操作&#xff0c;那么&#xff0c;使用循环语句&#xff0c;就能让计算机反复执行&#x…

【渗透测试】垂直越权(高危)、水平越权(中危)

目录 一、简介1.1 水平越权&#xff08;中危&#xff09;1.2 垂直越权&#xff08;高危&#xff09;1.3 方便记忆方法 二、修复方案2.1 水平越权修复2.2 垂直越权修复 一、简介 1.1 水平越权&#xff08;中危&#xff09; 漏洞危害&#xff1a; 水平越权 是相同级别&#xff0…

修改iframe生成的pdf的比例

如图想要设置这里的默认比例 在iframe连接后面加上#zoom50即可&#xff0c;50是可以随便设置的&#xff0c;设置多少就是多少比例 <iframe src"name.pdf#zoom50" height"100%" width"100%"></iframe>

算法打卡01——求两数之和

题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你…

macOS 下 starUML 软件激活方案

starUML每次打开都弹出提示其实挺烦的&#xff0c;于是研究了一下如何 po 解(激活)它。记录一下方法以便以后使用。 我觉得这个软件很好用&#xff0c;大型项目的所有图我都是用这个软件画的。 直接上步骤&#xff01;先关掉starUML 1、安装 asar&#xff0c;以便可以打开 asa…

Python万圣节礼物

文章目录 系列文章前言小海龟快速入门万圣节蝙蝠万圣节南瓜头万圣节礼物尾声 系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心http…

(附源码)springboot学生宿舍管理系统 毕业设计 211955

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

如何实现Word文档中的书签双向定位

工作中&#xff0c;经常需要拟定合同&#xff0c;一般都有固定的模板&#xff0c;在特定的位置填写内容。通过zOffice编辑合同文件时&#xff0c;可以在模板需要填写的位置预设书签&#xff0c;配合zOffice SDK使用&#xff0c;利用zOffice书签双向定位的特性&#xff0c;更方便…

C++基础——类与对象

1 概述 C是面向对象的语言&#xff0c;面向对象语言三大特性&#xff1a;封装、继承、多态。 C将万事万物抽象为对象&#xff0c;对象上有其属性和行为。 2 封装 2.1 封装的意义 封装是面向对象的三大特性之一&#xff0c;封装将属性和行为作为一个整体&#xff0c;对属性和…

设计模式——建造者模式

目录 建造者模式盖房项目需求基本介绍四个角色实例代码注意事项和细节抽象工厂模式 VS 建造者模式 建造者模式 盖房项目需求 传统方式&#xff1a;打地基&#xff0c;砌墙&#xff0c;封顶 盖房子步骤 public abstract class AbstractHouse {// 地基public abstract void b…

运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

朋友 我当你一秒朋友 朋友 我当你一世朋友 奇怪 过去再不堪回首 怀缅 时时其实还有 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar 基本可以断定&#xff0c;是jar不完整导致的。不完整&#xff01;&#xff01;&#xff01;记住关键字 检查1&#xff1a; …

解决 SSLError: HTTPSConnectionPool(host=‘huggingface.co‘, port=443)

看我的回答&#xff1a; https://github.com/huggingface/transformers/issues/17611#issuecomment-1794486960 能问这个问题的都是网络不太好的&#xff0c;你懂的&#xff0c;所以答案全是解决网络的。 得益于这个回答&#xff1a;#17611 (comment) 看了一下代码&#xf…