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/1.1 200 OK Server: Tengine Date: Thu, 11 Apr 2013 14:59:30 GMT Content-Type: text/html; charset=utf-8 Content-Length: 45375 Connection: keep-alive Vary: Accept-Encoding Cache-Control: public, max-age=115 Expires: Thu, 11 Apr 2013 15:01:23 GMT Last-Modified: Thu, 11 Apr 2013 14:59:23 GMT X-AspNetMvc-Version: 3.0 X-AspNet-Version: 4.0.30319 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>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>
以上 www.sina.com 被重定向到 www.sina.com.cn,使用 -L 选项可设置curl跳转到新URL:
# curl -L http://www.sina.com <!Doctype html> <!--[30,131,1] published at 2013-04-11 23:25:30 from #150 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 80 (#0) * Trying 42.121.252.58... connected * Connected to www.cnblogs.com (42.121.252.58) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0 OpenSSL/0.9.8h zlib/1.2.7 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 220 pan.alephnull.com dictd 1.12.0/rf on Linux 3.0.0-14-server <auth.mime> <3451806.3373.1365696256@pan.alephnull.com> 250 ok 150 1 definitions retrieved 151 "banger" wn "WordNet (r) 3.0 (2006)" bangern 1: (British informal) pork sausage2: firework consisting of a small explosive charge and fuse in aheavy paper casing [syn: {firecracker}, {cracker}, {banger}] . 250 ok [d/m/c = 1/0/31; 0.000r 0.000u 0.000s] 221 bye [d/m/c = 0/0/0; 0.000r 0.000u 0.000s]
curl工具使用实例相关推荐
- python英语翻译-python制作英语翻译小工具代码实例
这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来 ...
- 分享:玩Linux笔记(2) —— 神奇的curl工具
玩Linux笔记(2) -- 神奇的curl工具 http://my.oschina.net/chihz/blog/96101
- python开发软件的实例-由Python编写的MySQL管理工具代码实例
本文实例为大家分享了由Python编写的MySQL管理工具的具体代码,供大家参考,具体内容如下 import pymysql import pandas as pd from tkinter impo ...
- WIndow 10 环境下使用CURL工具完成企业微信机器人的提醒功能
企业微信机器人提醒功能实现说明 本文档主要讲解企业微信机器人的提醒功能的在window下的实现方法,主要内容包括机器人的创建,CURL工具使用环境的搭建和最终实现消息提醒功能三个主要模块.企业微信机器 ...
- curl工具使用简介
curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 官网地址: https://curl. ...
- PHP Curl多线程原理实例详解
来源:http://www.jb51.net/article/42826.htm 给各位介绍一下Curl多线程实例与原理.不对之处请指教 相信许多人对php手册中语焉不详的curl_multi一族的函 ...
- php解析xml数据格式,PHP解析xml格式数据工具类实例分享
本文主要介绍了PHP解析xml格式数据工具类,涉及php针对xml格式数据节点添加.获取.解析等相关操作技巧,需要的朋友可以参考下,希望能帮助到大家. 本文实例讲述了PHP解析xml格式数据工具类.分 ...
- C#实现的UDP收发请求工具类实例
本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...
- java des加密解密_Java实现的DES加密解密工具类实例
本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import ...
最新文章
- Datawhale组队学习:数据结构与算法课程任务
- Android 线程管理
- maven中spring-boot-dependencies变量名冲突
- 日志采集框架Flume、Flume介绍、概述、运行机制、Flume采集系统结构图(1、简单结构、复杂结构)
- Spring boot应用如何支持https
- 【推荐实践】内容分发场景的多目标架构实践
- 《2020数字中国指数报告》重磅发布,“上云”成产业数字化必选项
- YaoLingJump开发者日志(四)
- Python:实现binomial distribution二项分布算法(附完整源码)
- Qt实现最小化窗口到托盘图标
- Python实现秒杀某宝商品抢购(附超详细代码)
- 2017年2月12日GRE考试报名费用公布
- Visual Studio 2003 下载地址 V7.1各种版本官方下载网址
- 掘金量化是什么?有哪些特点?
- 前端html5学习小总结
- 宅急送项目的第七天笔记!(JBPM工作流和介绍 -- 权限管理模型)
- STM32串口发送和接收
- 学习 Rust cookbook 之算法篇(algorithm)part 2
- Android: R cannot be resolved to a variable
- Nvidia Jetson Agx Xavier遇坑,刷机记录、教程