curl是一个命令行工具,其基于libcurl库,用于发送网络请求,获取并展示响应数据,下面来看curl的具体用法。

1.下载网页源码

curl命令直接接URL,用于下载指定URL的网页源码,并将其显示在标准输出上:

# curl http://www.cnblogs.com/bangerlee
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>bangerlee - 博客园</title>
……
</html>

我们可以使用 -o [文件名] 或用重定向将页面源码保存到指定文件。

2.仅获取响应的Header信息

我们知道使用HEAD方式的请求,将仅获取http响应的Header信息,使用curl的 -I/--head 选项可以达到仅获取Header的目的:

# curl --head http://www.cnblogs.com
HTTP/ OK
Server: Tengine
Date: Thu,  Apr  :: GMT
Content-Type: text/html; charset=utf-
Content-Length:
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: public, max-age=
Expires: Thu,  Apr  :: GMT
Last-Modified: Thu,  Apr  :: GMT
X-AspNetMvc-Version: 3.0
X-AspNet-Version:
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge

从Header中我们可以了解到对应URL所在服务器的http服务器软件 (Tengine),用什么语言架构 (ASP.NET) 等信息。

3.设定跳转

默认情况下,对于返回301、302的响应curl是不会自动跳转的:

# curl http://www.sina.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title> 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>

以上 www.sina.com 被重定向到 www.sina.com.cn,使用 -L 选项可设置curl跳转到新URL:

# curl -L http://www.sina.com
<!Doctype html>
<!--[,,] published at -- :: from # by system-->
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=gb2312" />
    <title>新浪首页</title>
……
</html>

4.显示通信过程

-v 选项用于显示curl与目标服务器的通信过程,列出连接信息和请求信息:

# curl -v http://www.cnblogs.com
* About to connect() to www.cnblogs.com port  (#)
*   Trying 42.121.252.58... connected
* Connected to www.cnblogs.com ( (#)
> GET / HTTP/1.1
> User-Agent: curl/ (x86_64-suse-linux-gnu) libcurl/ OpenSSL/ libidn/1.10
> Host: www.cnblogs.com
> Accept: */*

5.发送表单信息

我们可以通过GET方式和POST方式向http服务器传送数据,GET方式比较简单:

# curl example/form.cgi?data=xxx

POST方式需把数据和URL分开,这时可用 --data 选项:

# curl --data="data=xxx" example/form.cgi

还可以使用 --data-urlencode 选项帮我们完成表单编码:

# curl --data-urlencode="data=xxx" example.com/form.cgi

6.下载和上传ftp文件

以上介绍了一些http协议下curl的用例,curl也可用于ftp等文件传输协议,以下命令就用于下载ftp文件:

# curl -u ftpuser:ftppass -o a.text ftp://ftp_server/public_html/a.text

以下命令列出ftp目录下的文件列表:

# curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

以下命令可上传文件至ftp服务器:

# curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

7.查字典

基于DICT协议,curl还有个有趣的应用,我们可以用curl来查字典:

# curl dict://dict.org/d:banger
 pan.alephnull.com dictd /rf on Linux --server <auth.mime> <@pan.alephnull.com>
 ok
  definitions retrieved
 "banger" wn "WordNet (r) 3.0 (2006)"
banger
    n : (British informal) pork sausage
    : firework consisting of a small explosive charge and fuse in a
       heavy paper casing [syn: {firecracker}, {cracker}, {banger}]
.
 ok [d/m/c = //; .000r ..000s]
 bye [d/m/c = //; .000r ..000s]

curl工具使用实例的更多相关文章

  1. php中实现的一个curl批处理的实例

    curl是利用URL语法在命令行方式下工作的开源文件传输工具 本文在php中实现了的一个curl批处理的实例. 代码如下: header("Content-Type:text/html;ch ...

  2. Elasticsearch笔记二之Curl工具基本操作

    Elasticsearch笔记二之Curl工具基本操作 简介: Curl工具是一种可以在命令行访问url的工具,支持get和post请求方式.-X指定http请求的方法,-d指定要传输的数据. 创建索 ...

  3. MySQL基准测试(三)--开源工具与实例演示

    MySQL基准测试(三)--开源工具与实例演示 针对web应用 ab ab是一个Apache HTTP服务的基准测试工具. http_load http_load是一个针对Web服务器测试工具. JM ...

  4. Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例

    Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...

  5. curl 工具的使用

    curl命令是个功能强大的网络工具,支持通过http.ftp等方式下载文件.上传文件.还可以用来抓取网页.网络监控等方面的开发,解决开发过程中遇到的问题. 常用参数 curl命令参数很多,这里只列出我 ...

  6. Nunit测试工具使用实例

    前言: 本文主要是介绍了Nunit的基本使用,其中参详了很多已有的文章,由于最近要使用其进行测试,所以对网上的文章做了下整理,同时加入了一些自己的实践. NUnit的属性 TestFixture 它标 ...

  7. JDBC工具类实例

    本文以讲解用单利模式实现一个简单的JDBC实用工具类JDBC连接的四个基本步骤:1.加载相应数据库驱动2.建立相应数据库连接3.构建Statement语句,即增删改查SQL语句4.执行Statemen ...

  8. Curl工具的使用

      Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具下载 在官网处下载工具包:http:// ...

  9. curl工具介绍和常用命令

    curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.Linux发行版中,并且有DOS和Win32.Win64的移植版本.curl是一个利用URL规则在命令行下工作的文 ...

随机推荐

  1. 关于Nginx499、502和504的分析

    我相信有些人在面试运维类岗位的时候会碰到对方问关于这方面的问题,我这里通过几个实验来复现这个情况,并做出相关分析,我希望大家看完后针对这种问题能有一个清晰思路. 服务器 IP Nginx 192.16 ...

  2. js常用设计模式实现(三)建造者模式

    创建型模式 创建型模式是对一个类的实例化过程进行了抽象,把对象的创建和对象的使用进行了分离 关于创建型模式,已经接近尾声了,还剩下建造者模式和原型模式,这一篇说一说建造者模式 建造者模式的定义 将一个 ...

  3. scala刷LeetCode--26 删除排序数组中的重复项

    一.题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...

  4. Azkaban Condition Flow (条件工作流) 使用简介

    本文上接<Azkaban Flow 2.0 使用简介>,对Azkaban Condition Flow (条件工作流) 做简单介绍 目录 目录 条件工作流 介绍 作用 使用方式 支持的运算 ...

  5. 2019-2020年值得关注的9个AR发展趋势

    作者Andrew Makarov,由计算机视觉life编辑:乔媛媛编译 更好的阅读体验请看首发原文链接 2019-2020年值得关注的9个AR发展趋势 增强现实技术在2019年实现了创纪录的发展.微软 ...

  6. ElasticStack学习(七):ElasticSearch之Mapping初探

    一.Mapping的概念 1.Mapping类似于数据库中的Schema的定义,作用如下: 1)定义索引中的字段的名称: 2)定义字段的数据类型,例如字符串.数字.日期.布尔等: 3)对每个字段进行倒 ...

  7. TCP/IP协议-网络编程

    本文转载自公众号“呆呆熊一点通”,作者:呆呆 开篇语 前两年, 就买了<TCP/IP网络编程>这本书, 由于自身基础薄弱, 只是走马观花翻阅了几张. 后来工作了这些年, 越来越感到瓶颈期已 ...

  8. python爬取新浪股票数据—绘图【原创分享】

    目标:不做蜡烛图,只用折线图绘图,绘出四条线之间的关系. 注:未使用接口,仅爬虫学习,不做任何违法操作. """ 新浪财经,爬取历史股票数据 ""&q ...

  9. redis集群(单机6节点实现)

    Redis集群搭建与简单使用 1.介绍安装环境与版本: 1)Redis使用的是Redis-3.2.8版本. 2)用一台虚拟机模拟6个节点,三个master节点,三个slave节点.虚拟机使用CentO ...

  10. wpf怎么绑定多个值,多个控件

    最近有不少wpf新手问wpf的命令怎么绑定多个控件,很多人为此绞尽脑汁,网上的答案找了也没找到靠谱的,其实用MultiBinding就可以了.从.net 3.0版本开始,就支持MultiBinding ...