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 发送请求相关推荐

  1. 使用PHP中的curl发送请求

    使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 初始化连接句柄: 设置CURL选项: 执行并获取结果: 释放VURL连接句柄. 下面的程序片段是 ...

  2. php curl发送post请求失败,PHP中的使用curl发送请求(GET请求和POST请求)

    使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始化连接句柄: 2.设置CURL选项: 3.执行并获取结果: 4.释放VURL连接句柄. ...

  3. 技术分享 | 接口测试中,请求超时该怎么办?

    原文链接 A 发送请求,然后等待 B 的响应,同时开始超时计时,如果在超时时间内成功接收到响应,则结束等待和计时.如果到了超时时间还没有接收到响应,则结束等待同时此次通讯失败,这个过程叫做请求超时.在 ...

  4. php CURL 发送请求详解

    cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 ...

  5. curl 发送请求的几种示例

    发送post请求发送图片 前面指具体路径文件名 后面指传输的文件名 curl -F "pic=@/mnt/shared/Image/jpg/Screensho1t.jpg; filename ...

  6. CURL 发送请求示例

    1. curl命令介绍 在没有postman时,使用curl进行请求的测试,是挺好的一个工具. curl是一个非常实用的.用来与服务器之间传输数据的工具:支持的协议包括 (DIDICT, FILE, ...

  7. curl发送请求简单实践

    还是看原创吧        https://blog.csdn.net/u013066244/article/details/78782459 版权声明:本文为博主原创文章,未经博主允许不得转载.   ...

  8. php使用curl发送请求时 添加header失效

    原文地址 场景复现 $headers['token'] = '12erthyj7y6gtfhh567tuygjhkjb';curl_setopt($ch, CURLOPT_HTTPHEADER, $h ...

  9. php多线程模拟请求,浅谈php使用curl模拟多线程发送请求

    每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_e ...

最新文章

  1. mysql 执行cmd,mysql命令行中执行sql的几种方式总结
  2. 这封以数字构写的蓝图,正在实现笔尖所触即世界
  3. cnn stride and padding_CNN中的stride、kernel、padding计算
  4. 【Let‘s Encrypt】 too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limit
  5. mysql数据库导出模型到powerdesigner,PDM图形窗口中显示数据列的中文注释
  6. Windows 8 各版本功能区别一览表
  7. 计算机英语四六级对调剂有影响吗,你知道四六级对于考研的影响程度吗?
  8. 使用displsy:flex + overflow:hidden时子元素被压缩
  9. Pytorch——torch.Tensor.data操作的含义
  10. WML语言基础(WAP建站)六
  11. 标签打印软件如何制作菱形标签
  12. 秒懂设计模式之桥接模式(Bridge Pattern)
  13. ico生成工具ico制作工具ico在线制作
  14. Visual Studio Code 编辑器
  15. 微信公众平台 客服接口-发消息
  16. 数据结构小知识点——广义表 “朝闻道”知识分享大赛
  17. Git在clone时认证失败后不能重新输入的解决方案
  18. 计算机语言中nl,这个nl_NL语言环境中的日期时间模式是什么?
  19. 图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)
  20. mysql省市区邮政编码和区号级联sql文件

热门文章

  1. 随意发表见解易成无效表达
  2. 2022年内蒙古最新高级消防员模拟试题题库及答案
  3. 婚纱照姿势怎么摆 三大技巧帮您解决烦恼
  4. 关于计算机优点缺点的英语作文,关于网络优缺点的英语作文(精选3篇)
  5. Revit二次开发,新手接入IExternalCommand、IExternalApplication,如何使用它们!
  6. C++17新特性总结
  7. 分享溜客2011年5月16日被检测过程
  8. CV【5】:Layer normalization
  9. 简单排序【左程云Java】
  10. js截取字符串(从后往前截)