curl说明

curl说明

https://baike.baidu.com/item/curl/10098606?fr=aladdin

curl是利用
URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在
Unix、多种
Linux发行版中,并且有
DOS
Win32、Win64下的移植版本。

中文名

curl

外文名

curl(CommandLine Uniform Resource Locator)
类    别

用URL语法

作    用

文件传输

适用范围

计算机


设计方法

编辑



获得页面

使用命令:curl http://curl.haxx.se
这是最简单的使用方法。用这个命令获得了http://curl.haxx.se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将不显示文件头部,即HTML文档的header。要全部显示,请加参数 -i,要只显示头部,用参数 -I。任何时候,可以使用 -v 命令看curl是怎样工作的,它向服务器发送的所有命令都会显示出来。为了
断点续传,可以使用-r参数来指定传输范围。


获取表单

在WEB页面设计中,form是很重要的元素。Form通常用来收集并向网站提交信息。提交信息的方法有两种,GET方法和POST方法。先讨论GET方法,例如在页面中有这样一段:
那么浏览器上会出现一个文本框和一个标为“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,这里有一个网页:
浏览器上也会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,
表单用POST方法向服务器提交数据。
这时的URL是看不到的,因此需要使用特殊的方法来抓取这个页面:
curl -d “birthyear=1905&press=OK” www.hotmail. com/when/junk.cgi
这个命令就可以做到。
1995年年末,RFC 1867定义了一种新的POST方法,用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的:
对于这种页面,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的格式。


命令

编辑

linux curl命令
-a/–append 上传文件时,附加到目标文件
-A/–user-agent 设置用户代理发送给服务器
– anyauth 可以使用“任何”身份验证方法
-b/–cookie cookie字符串或文件读取位置
– basic 使用HTTP基本验证
-B/–use-ascii 使用ASCII /文本传输
-c/–cookie-jar 操作结束后把cookie写入到这个文件中
-C/–continue-at 断点续转
-d/–data HTTP POST方式传送数据
–data-ascii 以ascii的方式post数据
–data-binary 以二进制的方式post数据
–negotiate 使用HTTP身份验证
–digest 使用数字身份验证
–disable-eprt 禁止使用EPRT或LPRT
–disable-epsv 禁止使用EPSV
-D/–dump-header 把header信息写入到该文件中
–egd-file 为随机数据(SSL)设置EGD socket路径
–tcp-nodelay 使用TCP_NODELAY选项
-e/–referer 来源网址
-E/–cert 客户端证书文件和密码 (SSL)
–cert-type 证书文件类型 (DER/PEM/ENG) (SSL)
–key 私钥文件名 (SSL)
–key-type 私钥文件类型 (DER/PEM/ENG) (SSL)
–pass 私钥密码 (SSL)
–engine 加密引擎使用 (SSL). “–engine list” for list
–cacert CA证书 (SSL)
–capath CA目录 (made using c_rehash) to verify peer against (SSL)
–ciphers SSL密码
–compressed 要求返回是压缩的形势 (using deflate or gzip)
–connect-timeout 设置最大请求时间
–create-dirs 建立本地目录的目录层次结构
–crlf 上传是把LF转变成CRLF
-f/–fail 连接失败时不显示http错误
–ftp-create-dirs 如果远程目录不存在,创建远程目录
–ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
–ftp-pasv 使用 PASV/EPSV 代替端口
–ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
–ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输
–ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输
-F/–form 模拟http表单提交数据
-form-string 模拟http表单提交数据
-g/–globoff 禁用网址序列和范围使用{}和[]
-G/–get 以get的方式来发送数据
-h/–help 帮助
-H/–header 自定义头信息传递给服务器
–ignore-content-length 忽略的HTTP头信息的长度
-i/–include 输出时包括protocol头信息
-I/–head 只显示文档信息
从文件中读取-j/–junk-session-cookies忽略会话Cookie
– 界面指定网络接口/地址使用
– krb4 <级别>启用与指定的安全级别krb4
-j/–junk-session-cookies 读取文件进忽略session cookie
–interface 使用指定网络接口/地址
–krb4 使用指定安全级别的krb4
-k/–insecure 允许不使用证书到SSL站点
-K/–config 指定的配置文件读取
-l/–list-only 列出ftp目录下的文件名称
–limit-rate 设置传输速度
–local-port 强制使用本地端口号
-m/–max-time 设置最大传输时间
–max-redirs 设置最大读取的目录数
–max-filesize 设置最大下载的文件总量
-M/–manual 显示全手动
-n/–netrc 从netrc文件中读取用户名和密码
–netrc-optional 使用 .netrc 或者 URL来覆盖-n
–ntlm 使用 HTTP NTLM 身份验证
-N/–no-buffer 禁用缓冲输出
-o/–output 把输出写到该文件中
-O/–remote-name 把输出写到该文件中,保留远程文件的文件名
-p/–proxytunnel 使用HTTP代理
–proxy-anyauth 选择任一代理身份验证方法
–proxy-basic 在代理上使用基本身份验证
–proxy-digest 在代理上使用数字身份验证
–proxy-ntlm 在代理上使用ntlm身份验证
-P/–ftp-port

使用端口地址,而不是使用PASV

-Q/–quote 文件传输前,发送命令到服务器
-r/–range 检索来自HTTP/1.1或FTP服务器字节范围
–range-file 读取(SSL)的随机文件
-R/–remote-time 在本地生成文件时,保留远程文件时间
–retry 传输出现问题时,重试的次数
–retry-delay 传输出现问题时,设置重试间隔时间
–retry-max-time 传输出现问题时,设置最大重试时间
-s/–silent静音模式。不输出任何东西
-S/–show-error 显示错误
–socks4 用socks4代理给定主机和端口
–socks5 用socks5代理给定主机和端口
–stderr
-t/–telnet-option Telnet选项设置
–trace 对指定文件进行debug
–trace-ascii Like –跟踪但没有hex输出
–trace-time 跟踪/详细输出时,添加时间戳
-T/–upload-file 上传文件
–url Spet URL to work with
-u/–user 设置服务器的用户和密码
-U/–proxy-user 设置代理用户名和密码
-v/–verbose
-V/–version 显示版本信息
-w/–write-out [format]什么输出完成后
-x/–proxy 在给定的端口上使用HTTP代理
-X/–request 指定什么命令
-y/–speed-time 放弃限速所要的时间。默认为30
-Y/–speed-limit 停止传输速度的限制,速度时间’秒
-z/–time-cond 传送时间设置
-0/–http1.0 使用HTTP 1.0
-1/–tlsv1 使用TLSv1(SSL)
-2/–sslv2 使用SSLv2的(SSL)
-3/–sslv3 使用的SSLv3(SSL)
–3p-quote like -Q for the source URL for 3rd party transfer
–3p-url 使用url,进行第三方传送
–3p-user 使用用户名和密码,进行第三方传送
-4/–ipv4 使用IP4
-6/–ipv6 使用IP6
-#/–progress-bar 用进度条显示当前的传送状态


相关函数

编辑

PHP cURL 函数
PHP
[1]
  支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。
libcurl支持
http
https
ftp
gopher
telnet、dict、
file
ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。
PHP中使用cURL实现Get和Post请求的方法
这些函数在PHP 4.0.2中被引入。
以下包含了PHP cURL函数列表:
curl_close() 关闭一个cURL会话。
curl_copy_handle() 复制一个cURL句柄和它的所有选项。
curl_errno() 返回最后一次的错误号。
curl_error() 返回一个保护当前会话最近一次错误的字符串。
curl_escape() 返回转义字符串,对给定的字符串进行URL编码。
curl_exec() 执行一个cURL会话。
curl_file_create() 创建一个CURLFile对象。
curl_getinfo() 获取一个cURL连接资源句柄的信息。
curl_init() 初始化一个cURL会话。
curl_multi_add_handle() 向curl批处理会话中添加单独的curl句柄。
curl_multi_close() 关闭一组cURL句柄。
curl_multi_exec() 运行当前cURL句柄的子连接
curl_multi_getcontent() 如果设置了CURLOPT_RETURNTRANSFER,
   则返回获取的输出的文本流。
curl_multi_info_read() 获取当前解析的cURL的相关传输信息。
curl_multi_init() 返回一个新cURL批处理句柄。
curl_multi_remove_handle() 移除curl批处理句柄资源中的某个句柄资源。
curl_multi_select() 等待所有cURL批处理中的活动连接。
curl_multi_setopt() 设置一个批处理cURL传输选项。
curl_multi_strerror() 返回描述错误码的字符串文本。
curl_pause() 暂停及恢复连接。
curl_reset() 重置libcurl的会话句柄的所有选项。
curl_setopt_array() 为cURL传输会话批量设置选项。
curl_setopt() 设置一个cURL传输选项。
curl_share_close() 关闭cURL共享句柄。
curl_share_init() 初始化cURL共享句柄。
curl_share_setopt() 设置一个共享句柄的cURL传输选项。
curl_strerror() 返回错误代码的字符串描述。
curl_() 解码URL编码后的字符串。
curl_version() 获取cURL版本信息。


下载管理程式

Windows
Download Express DownloadStudio 快车
Free Download Manager GetRight Go!Zilla
Internet Download Accelerator Internet Download Manager LeechGet
IE7Pro 网络传送带 网络蚂蚁
Orbit Downloader 迅雷 脱兔
JDownloader
类Unix
Axel KGet
跨平台
cURL DownThemAll! Download Accelerator Plus
FlashGot jDownloader Wget
wxDownload Fast
相关条目
下载管理程序比较 Download acceleration Downloadable content
Metalink Segmented downloading 上载和下载
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114061.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 测试用例附实例[通俗易懂]

    一、测试用例的概念测试用例是测试过程中很重要的一类文档,它是测试工作的核心,是一组在测试时输入和输出的标准,是软件需求的具体对照。二、测试用例的作用检验软件是否满足客户需求 测试人员的工作量的一种体现 展示测试用例的设计思路三、测试用例的内容测试用例八个基本项是:测试用例编号、测试项目、测试标题、重要级别、预置条件、输入、操作步骤、预期输出(不同公司的测试用例内容不尽相同…

    2022年4月13日
    55
  • layui 弹出层和提交表单

    layui 弹出层和提交表单在点击修改按钮的时候,content路径CPTL/+curId ,路径中的curid是当前信息的ID,弹窗跳出当前的数据信息 2. 把提交的按钮写在子页面里面,这里没有用layui自带的yes:function(), 3….

    2022年6月12日
    80
  • 简易网页音乐播放器

    简易网页音乐播放器简易网页音乐播放器开发工具与关键技术:DW2021jQueryHTML5撰写时间:2021年5月28日简介与要点:在网页上制作一个音乐播放器我们仅需用到一个新的标签<audiosrc=”素材音乐”controls></audio>;因为我们这个音乐播放不是单曲循环的使用还要…

    2022年6月25日
    30
  • 电脑锁屏时钟屏保_翻页时钟怎么设置在手机锁屏

    电脑锁屏时钟屏保_翻页时钟怎么设置在手机锁屏资源链接fliqlo说明:1、简约朴素的电脑屏保,锁屏后呈现翻页时钟效果;2、支持window、mac;效果…

    2022年9月29日
    2
  • linux 安装Jenkins和配置

    linux 安装Jenkins和配置简要介绍Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。语言:Java一句话描述:持续集成工具建议的版本建议使用版本为“jenkins-2.164.x”。环境清单:CentOS7.6配置安装环境安装OpenJDK。 要求Java的OpenJDK为“1.8.0”以上,可以通过以下命令安装…

    2025年7月7日
    7
  • DB2数据库SQL语法参考手册

    DB2数据库SQL语法参考手册

    2021年5月6日
    152

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号