linux中curl指令的简要分析

curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。

它支持多种协议,下面举例讲解如何将它用于网站开发。

一、查看网页源码

直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短):

  $ curl 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 <ahref="http://www.sina.com.cn/">here</a>.</p>
  </body></html>

如果要把这个网页保存下来,可以使用`-o`参数,这就相当于使用wget命令了。

  

$ curl -o [文件名] www.sina.com

二、自动跳转

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

  

$ curl -L www.sina.com

键入上面的命令,结果就自动跳转为www.sina.com.cn。

三、显示头信息

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

 

 $ curl -i www.sina.com
  HTTP/1.0 301 Moved Permanently
  Date: Sat, 03 Sep 2011 23:44:10 GMT
  Server: Apache/2.0.54 (Unix)
  Location: http://www.sina.com.cn/
  Cache-Control: max-age=3600
  Expires: Sun, 04 Sep 2011 00:44:10 GMT
  Vary: Accept-Encoding
  Content-Length: 231
  Content-Type: text/html; charset=iso-8859-1
  Age: 3239
  X-Cache: HIT from sh201-9.sina.com.cn
  Connection: close
  <!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 <ahref="http://www.sina.com.cn/">here</a>.</p>
  </body></html>

`-I`参数则是只显示http response的头信息。

四、显示通信过程

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

  

$ curl -v www.sina.com
  * About to connect() to www.sina.com port 80 (#0)
  * Trying 61.172.201.195... connected
  * Connected to www.sina.com (61.172.201.195) port 80 (#0)
  > GET / HTTP/1.1
  > User-Agent: curl/7.21.3 (i686-pc-linux-gnu) libcurl/7.21.3OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
  > Host: www.sina.com
  > Accept: */*
  >
  * HTTP 1.0, assume close after body
  < HTTP/1.0 301 Moved Permanently
  < Date: Sun, 04 Sep 2011 00:42:39 GMT
  < Server: Apache/2.0.54 (Unix)
  < Location: http://www.sina.com.cn/
  < Cache-Control: max-age=3600
  < Expires: Sun, 04 Sep 2011 01:42:39 GMT
  < Vary: Accept-Encoding
  < Content-Length: 231
  < Content-Type: text/html; charset=iso-8859-1
  < X-Cache: MISS from sh201-19.sina.com.cn
  < Connection: close
  <
  <!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 <ahref="http://www.sina.com.cn/">here</a>.</p>
  </body></html>
  * Closing connection #0

如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。

  

$ curl --trace output.txt www.sina.com

或者

  

$ curl --trace-ascii output.txt www.sina.com

运行后,请打开output.txt文件查看。

五、发送表单信息

发送表单信息有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 [email protected] --form press=OK [URL]

八、Referer字段

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

  

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

九、User Agent字段

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

iPhone4的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/8A293Safari/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到文件,`-bcookie-file`可以使用这个文件作为cookie信息,进行后续的请求。

  

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

十一、增加头信息

有时需要在http request之中,自行增加一个头信息。`--header`参数就可以起到这个作用。

  

$ curl --header "Content-Type:application/json"http://example.com

十二、HTTP认证

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

  

$ curl --user name:password example.com
时间: 2024-08-25 12:44:56

linux中curl指令的简要分析的相关文章

对Minix3中进程模型的简要分析

简单介绍 Minix(Mini UNIX)原来是荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S. Tanenbaum教授所发展的一个类Unix操作系统. 目前的Minix版本为Minix 3,是一个免费.开源的操作系统,设计目标是实现高可靠性.灵活性及安全性. 其系统主要包括在核心模式下运作的微核心和在用户模式下作为一系列独立.受保护的进程运行的其余所有操作系统组件. Minix3的整体认识 MINIX3本身就是一组进程的集合 第一层的主要功能是为上层驱动程序和服务器提供一组特权内

Linux中程序的栈帧分析以及修改函数地址

下面有一段代码: #include <stdio.h> #include <unistd.h> #include <stdlib.h> void fun() {    printf("i am the evil func\n");    exit(1); } int fun1(int a,int b) {     int *p=&a;     p--;     *p=fun;     int c=0xcccc;     return c; }

linux中curl命令

linux curl是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具. 一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正. -a/--append 上传文件时,附加到目标文件 -A/--user-agent <string>  设置用户代理发送给服务器 - anyauth   可以使用“任何”身份验证方法 -b/--cookie <name=string/file>

Linux中tail指令详解

linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容. 一,tail命令语法 tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]参数解释:-f 该参数用于监视File文件增长.-c Number 从 Number 字节位置读取指定文

oracle中的替换函数简要分析

replace就是一般意义上的字符串替换 replace(c1,c2[,c3]) 在字符串c1中找到字符串c2,替换成c3.若c3为空,则在c1中删除所有c2. update jd set id = replace(id,'1','2'); 含义就是将jd表中id列中的所有1换为2. translate只是一个字符替换对应的一个字符 TRANSLATE ( expr , from_string , to_string ) 简单的说就是对expr内容,用to_string中的字符逐一替换from_

Linux中关于安装包的分析。——Arvin

初接解LINUX的,同样都是for linux,但rpm.tar.gz.deb包还是有很大区别的,这种区别可使安装过程进行不下去.那我们应该下载什么格式的包呢? rpm包-在红帽LINUX.SUSE.Fedora可以直接进行安装,但在Ubuntu中却无法识别: deb包-是Ubuntu的专利,在Ubuntu中双击deb包就可以进入自动安装进程: tar.gz包-在所有的Linux版本中都能使用,但安装过程也最麻烦.要先解压缩,然后在“终端”里用cd 命令进入刚才解压的目录,再找到安装链接文件安装

linux中关于文件系统的简要介绍和一般操作

创建文件系统--分区格式化    格式化:        低级格式化:            划分磁道        高级格式化:            创建文件系统,按照某种特定的标准,将整个分区划分为大小相同的若干小的逻辑编址单元,每个这样的单元,称为块(Block): 划分块的标准:                在Linux的文件系统中,主要的块划分标准就是:每个块包括2^1或2^2或2^3个扇区:即块大小可以是:1024Byte,2048Byte或者4096Byte: 注意:     

linux系统的启动过程简要分析

接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步:1)开机BIOS自检,加载硬盘.2)读取MBR,进行MBR引导.3)grub引导菜单(Boot Loader).4)加载内核kernel.5)启动init进程,依据inittab文件设定运行级别6)init进程,执行rc.sysinit文件.7)启动内核模块,执行不同级别的脚本程序.8)执行/

linux中CURL的安装

curl是一款著名的字符界面下的下载工具,支持HTTP.HTTPS.FTP.FTPS.DICT.TELNET.LDAP.FILE,和GOPHER.此外还具有cookies支持.断点续传.FTP上传.密码支持.SSL支持和代理支持等特性.curl同时还提供了一套libcurl的库,开发者可以基于这个库开发其他下载工具. curl 的官网下载地址:http://curl.haxx.se/download/ 截止2014.9月更新至7.38版本.下载地址如下:    http://curl.haxx.