`

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工具库及头文件

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

    curl下载curl包下载

    curl下载curl包下载

    CURL HTTP POST方式表单递交

    4、我也是用到了curl但网上的资料大部分比较松散,我自己实现后分享给大家,相互学习,一起提高 ------------------------------ 源码文件夹说明: bin:存放需要用到的附加动态库 其中vcredist_x86.exe安装后用于...

    curl-7.33.0 win64.zip

    curl 是利用 URL语法在命令行方式下工作的开源文件传输工具。 它被广泛应用在 UNIX、 多种 Linux 发行版中,并且有 DOS 和 Win32、 Win64 下的移植版本。如果你的开发环境是 Mac 或者 Linux, 会自带 curl;如果是 ...

    win10下用vs2019编译好的curl 64位库 版本7.84.0

    在win10用cmake3.22与vs2019编译好的curl库,版本号为7.84.0(当下最新版,支持SLL)。库文件已经整理成了lib、include的结构,其中还内置curl.exe. curl是一个利用URL语法在命令行下工作的文件传输工具,支持很多种...

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

    windows下C开发CURL的Demo

    php_curl-5.3.13-VC9-x64.zip(php curl模块)

    用来替换WAMP server下的php_curl.dll,解决加载curl报错或无法加载问题。下载解压后,覆盖wamp\bin\php\php5.4.3\ext目录下对应文件,重启apache即可。如果不行请检查: 是否已修改php.ini文件去掉extension=...

    cURL(curl-8.4.0)

    curl-8.4.0.tar.gz curl-8.4.0.zip

    支持WINDOWS XP的CURL 最后版本7.56.1

    经过多版本尝试,CURL 最后支持WINDOWS XP的版本是7.56.1,此资源包为SRC包,与编译BIN包,并且带有LIBSSH2与OPENSSL 1.1.1q,openssl 0.9.8, zlib1.2.12,在7.56.1以后的版本都已经不支持WINDOWS XP,因为其已经...

    vs2015版本 curl静态库

    curl静态库版本,包括了debug和release版本,附件资源为完整demo工程,就只有一个main.cpp的代码没有其他依赖了,清晰明了,我这里用没有问题。本人还做简单封装,可以一个函数就直接拿到网页数据或者直接下载文件和post...

    PHP实现通过CURL上传文件功能示例

    本文实例讲述了PHP实现通过CURL上传文件功能。分享给大家供大家参考,具体如下: PHP使用CURL上传文件只需发送一个POST请求就可以了,在请求中设置某个字段为需要上传的文件全路径,并且以”@”开头,然后使用CURL把...

    cURL(curl-8.4.0-3-windows)

    curl-8.4.0_3-win32-mingw.zip curl-8.4.0_3-win64-mingw.zip curl-8.4.0_3-win64a-mingw.zip

    curl-7.53.1_spendrhy_curl_aix7.1安装curl_

    curl工具,可以方便调试url,简单易用的url调试工具

    curl-7.66.0_2-win64-mingw.zip

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

    curl-7.67.0.zip

    command line tool and library for transferring data with URLs Supports... ... curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, ...What's curl used

    使用VC6编译-Curl和LibCurl+ssl+ssh2+zlib

    使用VC6编译-Curl和LibCurl+ssl+ssh2+zlib libcurl是一个跨平台的开源网络协议库,支持http, https, rtsp等多种协议 。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,...

    php的Curl处理类

    hp的curl封装类用法,以实例形式较为详细的讲述了curl封装类及其使用方法,并总结了GET与POST的用法。 使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll) 开启...

    php的Curl处理类.zip

    主要介绍了php的curl封装类用法,以实例形式较为详细的讲述了curl封装类及其使用方法,并总结了GET与POST的用法。 使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll,...

    PHP封装CURL扩展类

    * @class 类名首字母大写,类名为多个单词, 每个大字首字母大写 eg: class Curl , class CurlPage * @variable 变量名小写, 变量名为多个单词, 每个单词小写,使用下划线_分割 eg: $curl_result * @function 函数名...

Global site tag (gtag.js) - Google Analytics