一般情况下我们会在网页上请求后台接口,但是对于需要进行多次测试的人来说,每一次都要在网页上模拟请求,是存在很大局限性的。因此,我们需要学会模拟请求,以达到跟实际请求一样的效果。

1. curl的用法

curl [options] [params] {网页url}

1、options = -v 显示详细的请求信息

curl -v www.baidu.com

2、options = -X 指定请求方式

  GET请求:

curl -X GET  https://www.baidu.com/

  POST请求:

curl -X POST -d "data=123&key=456" http://localhost:8080/search

由于-d选项为使用POST方式向server发送数据,因此在使用-d的时候,可以省略-X POST。使用-d时,将使用Content-type:application/x-www-form-urlencoded方式发送数据。

curl -d "q=三生三世&type=note&page=1&order_by=default" https://www.jianshu.com/search/do\?q\=%E4%B8%89%E7%94%9F%E4%B8%89%E4%B8%96\&type\=note\&page\=1\&order_by\=default

如果想使用JSON形式post数据,可以使用-H指定头部类型

curl -H "Content-Type:application/json" -d '{"data":"","key":""}' http://localhost:8080/search

如果想在请求的时候带上Cookie,可以这样

curl -H "Cookie:username=XXX" {URL}
  1. options = -H增加头部信息
curl -H "Cookie:username=XXX" {URL}
4 options = -c 存储cookie到文件
curl -d "name=zhangsan&password=123" http://localhost:8080/login -c ./cookie

使用用户名和密码登录系统,并将cookie信息存储在当前目录的cookie文件

  1. options = -b 携带cookie文件
curl http://localhost:8080/login -b ./cookie
  1. options = --cookie 直接指定cookie
curl --cookie "name=zhangsan" http://localhost:8080/login

7.options = -F/--form 表单提交操作
curl可以通过-F命令来以Content-Type:multipart/form-data的形式向server post数据,该命令允许提交二进制文件等。可以使用@前缀来制定提交的内容为一个文件,也可以使用<符号来提交文件中的内容

curl -F profile=@portrait.jpg https://example.com/upload.cgi

向服务器上传一个图片,图片的表单域名为profile,内容为protrait.jpg的二进制

作者:xurna
链接:https://www.jianshu.com/p/7965c56c5a2e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载:curl 模拟请求的更多相关文章

  1. curl模拟请求常用参数

    封装一个curl模拟浏览器请求的函数,如下: /** * curl模拟浏览器请求 * @param unknown $url 请求的地址 * @param array $params 请求地址所需要的 ...

  2. curl 模拟请求

    https://www.jianshu.com/p/7965c56c5a2e ********************************************* 一般情况下我们会在网页上请求后 ...

  3. 通过PHP CURL模拟请求上传文件|图片。

    现在有一个需求就是在自己的服务器上传图片到其他服务器上面,过程:客户端上传图片->存放到本地服务器->再转发到第三方服务器; 由于前端Ajax受限制,只能通过服务器做转发了. 在PHP中通 ...

  4. curl模拟请求

    GET请求 <?php //初始化 $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, 'http://www.bai ...

  5. curl 模拟请求get/post

    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx24a0ef ...

  6. 【转载】curl 模拟 GET\POST 请求,curl查看响应头 以及 curl post 上传文件

    补充说明:curl查看响应头 curl -I "http://www.baidu.com"HTTP/1.1 200 OK #HTTP协议 HTTP 返回码Server: Tengi ...

  7. php使用curl模拟多线程发送请求

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

  8. php curl模拟post请求提交数据样例总结

    在php中要模拟post请求数据提交我们会使用到curl函数,以下我来给大家举几个curl模拟post请求提交数据样例有须要的朋友可參考參考.注意:curl函数在php中默认是不被支持的,假设须要使用 ...

  9. php中curl模拟post提交多维数组(转载)

    原文地址:http://www.cnblogs.com/mingaixin/archive/2012/11/09/2763265.html 今天需要用curl模拟post提交参数,请求同事提供的一个接 ...

随机推荐

  1. 深入理解group by 语句的执行顺序 from→where→group by→select(含聚合函数)

    由于之前没有对group by 语句的执行顺序(执行原理)做深入的了解,所以导致在实际应用过程中出现了一些问题.举个简单的粟子,比如一个表testA中的所有数据如下图: 我现在想从testA中查询us ...

  2. win10的hyper-v共享文件夹

    win10这个奇葩,共享文件夹变得非常困难. 其他不说,关键点在于获取虚拟机的 ip,我的虚拟机系统是winxp,虚拟机本身可以上网.拿到ip,用这个ip还是无法访问\\ip 的共享文件夹,因为win ...

  3. Redis笔记-Sentinel哨兵模式

    Redis以主从的模式搭建集群后,如果主节点Master挂掉,虽然可以实现将备用节点Slave切换成主节点,但是Redis本身并没有自动监控机制,需要借助Sentinel哨兵模式,实现监控并实现自动切 ...

  4. Docker + Sonarqube 环境搭建

    Sonar概述 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具. 一,postgres 数据库下载 docker pul ...

  5. mysql之limit使用

    在mysql中,limit的使用方式如下: limit m,n --m:表示从哪一行开始查,n:查询多少条 需要明确的是,m表示取条数的起始位置,而n表示取多少条.例如我查询某个表,获取第一条数据,那 ...

  6. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  7. css子元素添加绝对定位,不添加top、left会有影响吗???

    子元素设置absolue,不设置top以及left值会有什么影响呢? 代码如下: .parent { width: 500px; height: 500px;   overflow: hidden; ...

  8. python上下文管理

    一.python上下文介绍: python中的上下文,指的就是代码所执行的环境状态,或者运行的场景 python上下文管理器规定了某个对象的使用范围,当进入或者离开了使用范围,会有相应的操作,多用于资 ...

  9. JS中各种宽度距离小结

    js中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词解释 screen:屏幕.这一类取到的是关于屏幕的宽度和距离,与浏览器无关,应该 ...

  10. 接口(迭代器) Iterator

    Iterator接口简介 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator.Iterator接口也是Java集合中的一员,但它与C ...