技术分享 | 使用 cURL 发送请求
cURL 是一个通过 URL 传输数据的,功能强大的命令行工具。cURL 可以与 Chrome Devtool 工具配合使用,把浏览器发送的真实请求还原出来,附带认证信息,脱离浏览器执行,方便开发者重放请求、修改参数调试,编写脚本。也可以单独使用,根据自己的需求构造请求调整参数,构造多种接口测试场景。
环境安装
学习 curl 命令之前,需要先了解 Chrome Devtool 工具。
ChromeDevTools
Chrome DevTools(Chrome 开发者工具)是内嵌在 Chrome 浏览器里的一组用于网页制作和调试的工具。在测试的过程中,也常常用作一个简单的抓包工具。
如何操作
选择右上角 Chrome 菜单,然后选择更多工具 -> 开发者工具
或者右键,选择检查/审查元素
在 Network 面板中可以查看通过网络来请求来的资源的详细信息:
cURL常见用法
从浏览器 copy
右键左侧数据,选择 Copy -> copy as curl ,即可把请求内容转化为 cURL 命令。
将命令 copy 在 gitbash 或 bash 上并运行,则会看到返回信息。
对上面命令进行细化,加入 -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 命令常用参数
cURL实战演练
通过几个小实战演练,了解一些常用参数的用法
篡改请求头信息,将 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"
软件测试工程师自学教程:
这才是2022最精细的自动化测试自学教程,我把它刷了无数遍才上岸字节跳动,做到涨薪20K【值得自学软件测试的人刷】
接口性能测试 — 软件测试人必会618实战场景分析
软件测试工程师月薪2W以上薪资必学技能 — Python接口自动化框架封装.
美团面试真题_高级测试25K岗位面试 — 软件测试人都应该看看
测试开发之全面剖析自动化测试平台 — 软件测试人的必经之路
软件测试必会_Jmeter大厂实战 — 仅6步可实现接口自动化测试
Jmeter实战讲解案例 — 软件测试人必会
最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
我推荐一个【Python自动化测试交流群:746506216】,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,助你快速进阶Python自动化测试/测试开发,走向高薪之路。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
技术分享 | 使用 cURL 发送请求相关推荐
- 使用PHP中的curl发送请求
使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 初始化连接句柄: 设置CURL选项: 执行并获取结果: 释放VURL连接句柄. 下面的程序片段是 ...
- php curl发送post请求失败,PHP中的使用curl发送请求(GET请求和POST请求)
使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始化连接句柄: 2.设置CURL选项: 3.执行并获取结果: 4.释放VURL连接句柄. ...
- 技术分享 | 接口测试中,请求超时该怎么办?
原文链接 A 发送请求,然后等待 B 的响应,同时开始超时计时,如果在超时时间内成功接收到响应,则结束等待和计时.如果到了超时时间还没有接收到响应,则结束等待同时此次通讯失败,这个过程叫做请求超时.在 ...
- php CURL 发送请求详解
cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 ...
- curl 发送请求的几种示例
发送post请求发送图片 前面指具体路径文件名 后面指传输的文件名 curl -F "pic=@/mnt/shared/Image/jpg/Screensho1t.jpg; filename ...
- CURL 发送请求示例
1. curl命令介绍 在没有postman时,使用curl进行请求的测试,是挺好的一个工具. curl是一个非常实用的.用来与服务器之间传输数据的工具:支持的协议包括 (DIDICT, FILE, ...
- curl发送请求简单实践
还是看原创吧 https://blog.csdn.net/u013066244/article/details/78782459 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- php使用curl发送请求时 添加header失效
原文地址 场景复现 $headers['token'] = '12erthyj7y6gtfhh567tuygjhkjb';curl_setopt($ch, CURLOPT_HTTPHEADER, $h ...
- php多线程模拟请求,浅谈php使用curl模拟多线程发送请求
每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_e ...
最新文章
- mysql 执行cmd,mysql命令行中执行sql的几种方式总结
- 这封以数字构写的蓝图,正在实现笔尖所触即世界
- cnn stride and padding_CNN中的stride、kernel、padding计算
- 【Let‘s Encrypt】 too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limit
- mysql数据库导出模型到powerdesigner,PDM图形窗口中显示数据列的中文注释
- Windows 8 各版本功能区别一览表
- 计算机英语四六级对调剂有影响吗,你知道四六级对于考研的影响程度吗?
- 使用displsy:flex + overflow:hidden时子元素被压缩
- Pytorch——torch.Tensor.data操作的含义
- WML语言基础(WAP建站)六
- 标签打印软件如何制作菱形标签
- 秒懂设计模式之桥接模式(Bridge Pattern)
- ico生成工具ico制作工具ico在线制作
- Visual Studio Code 编辑器
- 微信公众平台 客服接口-发消息
- 数据结构小知识点——广义表 “朝闻道”知识分享大赛
- Git在clone时认证失败后不能重新输入的解决方案
- 计算机语言中nl,这个nl_NL语言环境中的日期时间模式是什么?
- 图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)
- mysql省市区邮政编码和区号级联sql文件