`

curl

 
阅读更多
curl是利用URL语法在命令行方式下工作的文件传输工具。

目录

概念
设计方法
其它
展开
编辑本段
概念

  它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。
  curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传, 上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器, 通过http代理服务器上传文件到FTP服务器等等,功能十分强大。
  Windows操作系统下的网络蚂蚁,网际快车(FlashGet)的功能它都可以做到。准确的说,curl支持文件的上传和下载,所以是一个综合传输工具,但是按照传统,用户习惯称curl为下载工具。
  curl是瑞典curl组织开发的,您可以访问: http://curl.haxx. se/
  获取它的源代码和相关说明。
  鉴于curl在Linux上的广泛使用,IBM在AIX Linux Toolbox的光盘中包含了这个软件,并且您可以访问IBM网站:
  http://www- 1.ibm. com/servers/aix/products/aixos/linux/altlic.html 下载它。
  curl的最新版本是7.22.0,IBM网站上提供的版本为7.9.3。
  在AIX下的安装很简单,IBM网站上下载的rpm格式的包。
  在 http://curl.haxx. se/docs/ ,您可以下载到UNIX格式的man帮助,里面有详细的curl工具的使用说明。
  curl的用法为:curl [options] [URL...]
  其中options是下载需要的参数,大约有80多个,curl的各个功能完全是依靠这些参数完成的。
  具体参数的使用,用户可以参考curl的man帮助。
  下面,本文就将结合具体的例子来说明怎样利用curl进行下载。
编辑本段
设计方法

获得页面
  使用命令:curl http://curl.haxx. se
  这是最简单的使用方法。用这个命令获得了http://curl.haxx. se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将不显示文件头部,即HTML文档的header。要全部显示,请加参数 -i,要只显示头部,用参数 -I。任何时候,可以使用 -v 命令看curl是怎样工作的,它向服务器发送的所有命令都会显示出来。为了断点续传,可以使用-r参数来指定传输范围。
获取表单
  在WEB页面设计中,form是很重要的元素。Form通常用来收集并向网站提交信息。提交信息的方法有两种,GET方法和POST方法。先讨论GET方法,例如在页面中有这样一段:
  <form method="GET" action="junk.cgi">
  <input type=text name="birthyear">
  <input type=submit name=press value="OK">
  </form>
  那么浏览器上会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单就用GET方法向服务器提交文本框的数据。
  例如原始页面是在 www.hotmail. com/when/birth.html看到的,然后您在文本框中输入1905,然后按OK按钮,那么浏览器的URL现在应该是:“www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK”
  对于这种网页,curl可以直接处理,例如想获取上面的网页,只要输入:
  curl "www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK"
  就可以了。
  表单用来提交信息的第二种方法叫做POST方法,POST方法和GET方法的区别在于GET方法使用的时候,浏览器中会产生目标URL,而POST不会。类似GET,这里有一个网页:
  <form method="POST" action="junk.cgi">
  <input type=text name="birthyear">
  <input type=submit name=press value="OK">
  </form>
  浏览器上也会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单用POST方法向服务器提交数据。
  这时的URL是看不到的,因此需要使用特殊的方法来抓取这个页面:
  curl -d "birthyear=1905&press=OK" www.hotmail. com/when/junk.cgi
  这个命令就可以做到。
  1995年年末,RFC 1867定义了一种新的POST方法,用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的:
  <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 -F upload=@localfilename -F press=OK URL
  这个命令的实质是将本地的文件用POST上传到服务器。
  有关POST还有不少用法,用户可以自己摸索。
使用PUT
  HTTP协议文件上传的标准方法是使用PUT,此时curl命令使用-T参数:
  curl -T uploadfile www.uploadhttp. com/receive.cgi
有关认证
  curl可以处理各种情况的认证页面,例如下载用户名/密码认证方式的页面(在IE中通常是出现一个输入用户名和密码的输入框):
  curl -u name:password www.secrets. com
  如果网络是通过http代理服务器出去的,而代理服务器需要用户名和密码,那么输入:
  curl -U proxyuser:proxypassword http://curl.haxx. se
  任何需要输入用户名和密码的时候,只在参数中指定用户名而空着密码,curl可以交互式的让用户输入密码。
引用
  有些网络资源访问的时候必须经过另外一个网络地址跳转过去,这用术语来说是:referer,引用。
  对于这种地址的资源,curl也可以下载:
  curl -e http://curl.haxx. se daniel.haxx. se
指定用户端
  有些网络资源首先需要判断用户使用的是什么浏览器,符合标准了才能够下载或者浏览。
  此时curl可以把自己“伪装”成任何其他浏览器:
  curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL
  这个指令表示curl伪装成了IE5.0,用户平台是Windows 2000。(对方服务器是根据这个字串来判断客户端的类型的,所以即使使用AIX也无所谓)。
  使用:
  curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL
  此时curl变成了Netscape,运行在PIII平台的Linux上了。
COOKIES
  Cookie是服务器经常使用的一种记忆客户信息的方法。如果cookie被记录在了文件中,那么使用命令:
  curl -b stored_cookies_in_file www.cookiesite. com
  curl可以根据旧的cookie写出新cookie并发送到网站:
  curl -b cookies.txt -c newcookies.txt www.cookiesite. com
加密HTTP
  如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问:
  curl https://that.secure.server. com
http认证
  如果是采用证书认证的http地址,证书在本地,那么curl这样使用:
  curl -E mycert.pem https://that.secure.server. com
注意事项
  curl非常博大,用户要想使用好这个工具,除了详细学习参数之外,还需要深刻理解http的各种协议与URL的各个语法。
  这里推荐几个读物:
  RFC 2616 HTTP协议语法的定义。
  RFC 2396 URL语法的定义。
  RFC 2109 Cookie是怎样工作的。
  RFC 1867 HTTP如何POST,以及POST的格式。
编辑本段
其它

  Curl是由美国国防部高级研究项目代理资助,马萨诸塞州科技学院的David A. Kranz开发的Web开发语言, HTML语言的创建者Tim Berners-Lee也参与其中,并扮演了重要的角色。
  Curl语言是一种编程语言,它被设计用于编写网络程序。它的目标是以一种单一的语言来取代HTML, Cascading Style Sheets(层叠样式表) and JavaScript , 虽然它目前并未在世界范围内被广泛使用,但在日本有一定的普及。
  Curl不像HTML,它不是一种文本标记语言,但Curl语言既可以用于普通的文本显示,又可以用于实现大规模的客户端商业软件系统。Curl不利的一面是:需要向客户端安装运行环境。
  用Curl写的程序既可以运行于浏览器中,又可以像普通客户端程序那样独立于浏览器运行,运行前需要安装SurgeRTE。"SurgeRTE"是一种与JAVA类似的跨平台运行环境 (runtime environment,RTE),其中包含浏览器的插件。它目前支持微软视窗(Microsoft Windows)操作系统 和 Linux操作系统, 据传苹果机版将在不久的未来发布。
  Curl语言便于学习,编程效率高,是一种支持多重继承,范型等数据类型的面向对象编程语言。目前国内已有一些公司开始涉及Curl语言的推广与开发。
分享到:
评论

相关推荐

    Curl.zip_C++ curl_DEMO_c++ curl_curl_curl c++

    Curl.zip 文件包含了一个在Windows环境下使用C++开发的CURL库示例程序。CURL是一个流行的开源库,用于在各种编程语言中处理URL传输,包括文件上传、下载、HTTP、HTTPS、FTP等网络协议。这个C++ DEMO将帮助我们理解...

    curl下载curl包下载

    下载`curl`包的过程非常简单,首先,你需要访问`curl`的官方网站或者通过软件仓库(如APT for Ubuntu或YUM for CentOS)获取最新版本。官网地址是&lt;https://curl.se/download.html&gt;。在网站上,你可以找到适用于不同...

    curl-7.53.1_spendrhy_curl_aix7.1安装curl_

    `curl-7.53.1`是该工具的一个特定版本,由`spendrhy`发布,适用于AIX 7.1操作系统。在AIX系统上安装`curl`对于系统管理员和开发人员来说非常重要,因为它提供了对网络资源的便捷访问,特别是用于调试和测试URL。 ...

    php curl批量请求url

    批量请求的关键在于创建一个循环,依次对每个URL执行cURL操作。以下是一个简单的`batch.php`示例,展示了如何使用cURL批量请求URL: ```php // 定义URL数组 $urls = [ 'http://example1.com', '...

    WWW-Curl-4.17.tar_curl_www_www-curl_Perl_

    **WWW-Curl-4.17.tar - curl, www-curl 和 Perl 知识点详解** `WWW-Curl-4.17.tar` 是一个压缩包文件,它包含了一个名为 `WWW-Curl` 的模块的第 4.17 版本。这个模块是为 Perl 语言设计的,用于与 `curl` 工具集成...

    curl https://github.com/curl/curl.git

    指的是使用 `curl` 命令行工具从 GitHub 克隆 `curl` 项目的 Git 仓库。`curl` 是一个用于传输数据的命令行工具,它支持多种协议,包括 HTTP、HTTPS、FTP 等。在本例中,它被用来与 Git 协议交互,克隆 `curl/curl` ...

    curl8.2.1+openssl3.0.1.zip

    《深入理解curl与openssl在软件开发中的应用》 在IT领域,curl和openssl是两个非常重要的开源工具,它们在各种应用程序的开发中扮演着至关重要的角色。本文将深入探讨curl和openssl的功能、工作原理以及它们如何...

    centos7 curl离线安装包

    在没有网络连接或者网络环境不稳定的情况下,离线安装`curl`就显得尤为重要。对于CentOS 7系统,我们可以遵循以下步骤进行离线安装`curl`。 首先,你需要确保拥有`curl`的RPM包。在提供的信息中,压缩包文件名为`...

    vs使用curl模板(包含静态动态库)

    在Visual Studio(VS)中使用curl模板涉及到网络编程和C++库的集成。curl是一个流行的开源库,用于处理URL相关的任务,如HTTP、HTTPS和其他协议的传输。它提供了丰富的功能,包括文件上传下载、POST请求、自定义头...

    java--curl工具,用于生成curl链接,直接在服务器上使用

    在Spring Cloud框架中,尤其是与Feign集成时,Curl工具的实现可以帮助开发者便捷地获取到能够复现服务间调用的curl命令,这对于理解和调试分布式系统的交互非常有帮助。 `CurlAspect`类通常是Spring AOP(面向切面...

    windows下Curl+Openssl访问https实例

    为了在C++项目中使用Curl,需要包含对应的头文件,例如`curl/curl.h`,并链接Curl库。同样,如果要用到OpenSSL,也需要包含相应的头文件(如`openssl/ssl.h`和`openssl/crypto.h`)并链接OpenSSL库。在Visual Studio...

    cURL工具库及头文件

    cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。cURL支持的通信协议有FTP...

    curl_自定义进度条

    当我们需要进行大文件下载或者监控下载进度时,`curl`的自定义进度条功能就显得尤为重要。本篇将详细讲解如何利用`curl`的`CURLOPT_PROGRESSFUNCTION`选项来实现自定义进度条。 `CURLOPT_PROGRESSFUNCTION`是...

    Centos环境下安装curl

    ### Centos环境下安装curl #### 一、概述 在Linux环境下安装配置curl是非常常见的操作,尤其是在需要通过PHP脚本来执行HTTP请求的情况下。curl是一个利用URL语法在命令行方式下工作的文件传输工具,它支持多种协议...

    windows下的CURL上传下载图片

    使用CURL库的`curl_easy_init`函数初始化一个CURL句柄,然后用`curl_easy_setopt`设置各种选项。对于下载操作,关键的选项是`CURLOPT_URL`,用来指定图片的URL,以及`CURLOPT_WRITEFUNCTION`,定义数据接收的回调...

    curl断点续传

    `curl`断点续传功能是它的一个重要特性,尤其对于处理大文件下载时非常有用。当下载过程中由于网络问题或其他原因中断,可以利用断点续传来继续未完成的下载,而无需重新开始。 断点续传原理是通过记录已下载部分的...

    curl-7.59.0.zip

    `curl-7.59.0.zip` 是一个包含了 `curl` 工具的源代码和相关文档的压缩包。`curl` 是一个强大的命令行工具,用于在各种协议(如 HTTP、HTTPS、FTP 等)下传输数据,特别适用于进行 RESTful 风格的 URL 访问。它允许...

    Qt工程中使用curl进行网络请求,最小程序

    在本文中,我们将深入探讨如何在Qt工程中利用curl库进行网络请求,这是一个最小化的示例,可以帮助开发者了解如何将curl集成到Qt项目中。首先,让我们了解一下curl库和Qt框架的基本概念。 **curl库介绍** curl是一...

    curl工具支持XP.zip

    为了在XP系统上使用`curl`,你需要将`curl.exe`放置在一个系统环境变量`PATH`包含的目录下,或者每次使用时指定其完整路径。例如,将其放在`C:\Tools`目录下,可以通过`C:\Tools\curl.exe --help`查看帮助文档。 `...

Global site tag (gtag.js) - Google Analytics