curl工具使用实例
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工具使用实例的更多相关文章
- php中实现的一个curl批处理的实例
curl是利用URL语法在命令行方式下工作的开源文件传输工具 本文在php中实现了的一个curl批处理的实例. 代码如下: header("Content-Type:text/html;ch ...
- Elasticsearch笔记二之Curl工具基本操作
Elasticsearch笔记二之Curl工具基本操作 简介: Curl工具是一种可以在命令行访问url的工具,支持get和post请求方式.-X指定http请求的方法,-d指定要传输的数据. 创建索 ...
- MySQL基准测试(三)--开源工具与实例演示
MySQL基准测试(三)--开源工具与实例演示 针对web应用 ab ab是一个Apache HTTP服务的基准测试工具. http_load http_load是一个针对Web服务器测试工具. JM ...
- Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例
Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...
- curl 工具的使用
curl命令是个功能强大的网络工具,支持通过http.ftp等方式下载文件.上传文件.还可以用来抓取网页.网络监控等方面的开发,解决开发过程中遇到的问题. 常用参数 curl命令参数很多,这里只列出我 ...
- Nunit测试工具使用实例
前言: 本文主要是介绍了Nunit的基本使用,其中参详了很多已有的文章,由于最近要使用其进行测试,所以对网上的文章做了下整理,同时加入了一些自己的实践. NUnit的属性 TestFixture 它标 ...
- JDBC工具类实例
本文以讲解用单利模式实现一个简单的JDBC实用工具类JDBC连接的四个基本步骤:1.加载相应数据库驱动2.建立相应数据库连接3.构建Statement语句,即增删改查SQL语句4.执行Statemen ...
- Curl工具的使用
Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具下载 在官网处下载工具包:http:// ...
- curl工具介绍和常用命令
curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.Linux发行版中,并且有DOS和Win32.Win64的移植版本.curl是一个利用URL规则在命令行下工作的文 ...
随机推荐
- input的值为浅淡样式(点击值消失)
<input type="text" id="leftSearchValue" value="" placeholder=" ...
- c++ 求int数组的长度
c++ 求int数组的长度 网上有一些方法是 sizeof(arr) / sizeof(arr[0]); 这种方法放在函数中,是不对的 我自己的方法是 #include <bits/stdc++ ...
- 数字IC前后端设计中的时序收敛(四)--Max Capacitance违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- 《转载黑马教程》HTML&&CSS讲义0,,包含教程_仅供参考
今日内容 1. web概念概述 2. HTML web概念概述 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务 ...
- kuangbin专题专题四 Frogger POJ - 2253
题目链接:https://vjudge.net/problem/POJ-2253 思路: 从一号到二号石头的所有路线中,每条路线中都个子选出该路线中两点通路的最长距离,并在这些选出的最长距离选出最短路 ...
- Spring MVC源码(三) ----- @RequestBody和@ResponseBody原理解析
概述 在SpringMVC的使用时,往往会用到@RequestBody和@ResponseBody两个注解,尤其是处理ajax请求必然要使用@ResponseBody注解.这两个注解对应着Contro ...
- tmux终端复用神器简单使用
创建命名Tmux会话(tmux new -s session_name)tmux new -s session_name chongchong 暂退Tmux会话(Ctrl + a d)直接关窗口 返回 ...
- Spring Cloud Alibaba | Sentinel: 服务限流基础篇
目录 Spring Cloud Alibaba | Sentinel: 服务限流基础篇 1. 简介 2. 定义资源 2.1 主流框架的默认适配 2.2 抛出异常的方式定义资源 2.3 返回布尔值方式定 ...
- 【基本数据结构】并查集-C++
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中.这一类问题近几年来反复出 ...
- 解决springboot项目请求出现非法字符问题 java.lang.IllegalArgumentException:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
springboot版本: 2.1.5 最近使用springboot搭建了一个App后台服务的项目,开发接口的时候在本机使用postman工具做请求测试,请求返回一直很正常,但是在前端开发使用h5请求 ...