curl 是一个命令行工具,作用是发出网络请求,然后得到和提取数据,显示在“标准输出”(stdout)上面。功能介绍如下。

一、查看源码

$ curl www.sina.com// 如果要把网页保存下来,可以使用带 -o 参数,这就相当于 wget 命令
$ curl -o [文件名称] www.sina.com

  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>301 Moved Permanently</title></head><body><h1>Moved Permanently</h1><p>The document has moved <a href="http://www.sina.com.cn/">here</a>.</p></body></html>

二、自动跳转

有的网址是自动跳转的,使用 -L 参数,curl 就会跳转到新的网址。

$ curl -L www.sina.com

三、显示头信息

-i 参数可以显示 http response 的头信息,连同网页代码一起。

$ curl -i www.sina.com// -I 参数是只显示头信息
$ curl -I www.sina.com

HTTP/1.1 200 OK
Server: Tengine
Content-Type: text/html
Content-Length: 23335
Connection: keep-alive
Date: Sun, 08 Nov 2020 02:22:46 GMT
Last-Modified: Wed, 19 Aug 2020 20:24:44 GMT
ETag: "5f3d8a8c-5b27"
Expires: Sun, 08 Nov 2020 02:27:46 GMT
Cache-Control: max-age=300
Accept-Ranges: bytes
Via: cache31.l2hk71[0,304-0,H], cache19.l2hk71[0,0], cache19.l2hk71[1,0], cache5.jp2[0,200-0,H], cache3.jp2[0,0]
X-Swift-Error: orig response 5xx error
Ali-Swift-Global-Savetime: 1597868694
Age: 279
X-Cache: HIT TCP_MEM_HIT dirn:2:362529081
X-Swift-SaveTime: Sun, 08 Nov 2020 02:22:48 GMT
X-Swift-CacheTime: 298
X-Via-CDN: f=alicdn,s=cache3.jp2,c=115.206.159.117;
Timing-Allow-Origin: *
EagleId: 2f59420316048024456943739e<!DOCTYPE html>
<!-- [ published at 2020-08-20 04:24:44 ] -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...

四、显示通信过程

-v 参数可以显示一次 http 通信的整个过程,包括端口连接和 http response 头信息。

$ curl -v www.sina.com// 查看更详细的通信过程
$ curl --trace output.txt www.sina.com
// 或者
$ curl --trace-ascii output.txt www.sina.com
运行后,请打开output.txt文件查看。

*   Trying 47.89.66.204...
* TCP_NODELAY set
* Connected to www.sina.com (47.89.66.204) port 80 (#0)
> GET / HTTP/1.1
> Host: www.sina.com
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: Tengine
< Content-Type: text/html
< Content-Length: 23335
< Connection: keep-alive
< Date: Sun, 08 Nov 2020 02:27:48 GMT
< Last-Modified: Wed, 19 Aug 2020 20:24:44 GMT
< ETag: "5f3d8a8c-5b27"
< Expires: Sun, 08 Nov 2020 02:32:48 GMT
< Cache-Control: max-age=300
< Accept-Ranges: bytes
< Via: cache31.l2hk71[0,304-0,H], cache25.l2hk71[0,0], cache25.l2hk71[0,0], cache5.jp2[0,200-0,H], cache5.jp2[2,0]
< X-Swift-Error: orig response 5xx error
< Ali-Swift-Global-Savetime: 1597868694
< Age: 139
< X-Cache: HIT TCP_MEM_HIT dirn:2:362529081
< X-Swift-SaveTime: Sun, 08 Nov 2020 02:28:18 GMT
< X-Swift-CacheTime: 270
< X-Via-CDN: f=alicdn,s=cache5.jp2,c=115.206.159.117;
< Timing-Allow-Origin: *
< EagleId: 2f59420516048026070141646e
<
<!DOCTYPE html>
<!-- [ published at 2020-08-20 04:24:44 ] -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

五、发送表单信息

发送表单信息有 GET 和 POST 两种方法。GET 方法相对简单,只要把数据附在网址后面就行。

$ curl example.com/form.cgi?data=xxx

POST 方法必须把数据和网址分开,curl 就要用到 --data 参数。

$ curl -X POST --data "data=xxx" example.com/form.cgi

如果你的数据没有经过表单编码,还可以让 curl 为你编码,参数是 --data-urlencode

$ curl -X POST--data-urlencode "date=April 1" example.com/form.cgi

六、HTTP 动词

curl 默认的 HTTP 动词是 GET,使用 -X 参数可以支持其他动词。

$ curl -X POST www.example.com$ curl -X DELETE www.example.com

七、文件上传

假定文件上传的表单是下面这样的:

  <form method="POST" enctype='multipart/form-data' action="upload.cgi"><input type=file name=upload><input type=submit name=press value="OK"></form>

可以通过如下 curl 命令上传:

$ curl --form upload=@localfilename --form press=OK [URL]

八、Referer 字段

有时候你需要在 http request 头信息中,提供一个 referer 字段,表示你从哪里跳转过来的。

$ curl --referer http://www.example.com http://www.example.com

九、User Agent 字段

这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页,比如手机版和桌面版。

iPhone 4 的 User Agent 是:

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7

curl 可以这样模拟:

$ curl --user-agent "[User Agent]" [URL]

十、cookie

使用 --cookie 参数,可以让 curl 发送 cookie。

$ curl --cookie "name=xxx" www.example.com

至于具体的 cookie 的值,可以从 http response 头信息的 Set-Cookie 字段中得到。

-c cookie-file 可以保存服务器返回的 cookie 到文件,-b cookie-file 可以使用这个文件作为 cookie 信息,进行后续的请求。

$ curl -c cookies http://example.com$ curl -b cookies http://example.com

一、HTTP 认证

有些网域需要 HTTP 认证,这时 curl 需要用到 --user 参数。

$ curl --user name:password example.com

参考:

  • https://curl.haxx.se/docs/httpscripting.html

curl get请求传递参数_curl 命令相关推荐

  1. vue axios 发送get请求传递参数给后端失败_Java之Vue插件之Axios

    Java之Vue插件之Axios,环境安装: npm install --save axios vue-axios //安装axios Npm install //安装依赖 在main.js中注册 i ...

  2. POST请求传递参数(十一)

    POST请求传递参数(十一)

  3. 【PHP学习】—get请求传递参数(五)

    [PHP学习]-get请求传递参数(五) 一.浏览器的访问方式:(增删改查) get:请求访问内容 (查询) post:添加数据(增加) put:(修改) delete:(删除) 二.PHP文件的格式 ...

  4. vuecli+axios的post请求传递参数异常

    vuecli+axios的post请求传递参数异常 参考文章: (1)vuecli+axios的post请求传递参数异常 (2)https://www.cnblogs.com/yanqiong/p/1 ...

  5. 表单提交和超链接请求传递参数的几种方式

    表单提交和超链接请求传递参数的几种方式 这段时间在使用easy-ui的datagrid,他有自己提交表单的方式,所以就整理整理页面对参数的提交方式: 注:下面代码都已经过测试. 1. HTML提交表单 ...

  6. curl post请求表单_CURL 发送POST请求

    CURL 发送POST请求 curl -H "Content-Type: application/json" -X POST -d '{"user_id": & ...

  7. ajax请求传递参数的方式,Ajax请求 一般处理程序参数传递的几种方式

    简介这篇文章主要介绍了Ajax请求 一般处理程序参数传递的几种方式以及相关的经验技巧,文章约869字,浏览量397,点赞数3,值得参考! //第一种Ajax请求 $.ajax({ type:" ...

  8. php命令行传递参数,PHP命令行传递参数

    在以非命令行模式运行PHP的时候,我们可以通过$_GET.$_POST.$_REQUEST来接受get或是post参数,但是以命令行方式运行的话,怎么传递参数以接受参数呢?关于命令行的特点,可以直接看 ...

  9. 关于fiddler 模拟post请求传递参数需要注意的地方

    使用fiddler模拟post传递请求时,可以在右边的composer菜单下选择post方式发送,如果需要传递参数,则还需要在head中加入一句Content-Type: application/x- ...

最新文章

  1. HDU 1241 Oil Deposits
  2. android.content.Context.getResources()‘ on a null object reference
  3. Java技术分享:什么是数据库连接池?
  4. Manacher入门
  5. 在浏览器控制台输出内容 console.log(string);
  6. php 接口安全解决方案,php接口数据安全解决方案(一)
  7. 面试官系统精讲Java源码及大厂真题 - 02 String、Long 源码解析和面试题
  8. 试试给对象这样赋值吧
  9. 探索处理数据新方法,8 个重点搞懂云数据库 DBaaS 到底是什么!
  10. linux查看创建目录命令,Linux菜鸟——常见命令一 查看及创建目录文件等命令
  11. 计算机的存储功能是什么原因,电脑储存的意义是什么
  12. 数商云在线供应链系统服务方案:构建企业供应链平台业务、功能、技术管理架构
  13. liferay-protal学习1-配置开发环境
  14. 平台软件每日构建总结
  15. wireshark抓包使用与过滤方法
  16. 安卓系统怎么安装软件_【图文】安卓系统手机如何下载安装APP
  17. Linux解压.gz的命令
  18. 新型高科技口罩即将成为一种身份象征
  19. html中的分页条怎么写,包含HTML标签的文本分页处理
  20. Bugly 多渠道热更新解决方案

热门文章

  1. 基于golang的数据结构源码说明
  2. 飘逸的python - yield简明教程
  3. wireshark----教你如何抓包
  4. mysql sql 限制条数据类型_数据库的数据类型和约束条件
  5. chkconfig命令及的使用 与linux的七个运行级别
  6. 使用物理硬盘_许迎果 第147期 机械硬盘的物理结构和逻辑结构
  7. java处理pdf文件——iText的使用
  8. 大规模文本分类实验-项目日志
  9. mysql中explain的详细解释
  10. 简书客户端的计数器功能扩展