热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux命令之curl

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。它支持包括HTTP、HTTPS、ftp

curl 命令是一个利用 URL 规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。

它支持包括 HTTP、HTTPS、ftp等众多协议,还支持 POST、COOKIEs、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。

常用选项

抓取页面信息

-o 将文件保存为命令行中指定的文件名的文件中
-O 使用URL中默认的文件名保存文件到本地

# 将文件下载到本地并命名为 mygettext.html
curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
# 将文件保存到本地并命名为gettext.html,后面的 url 可以写正则
curl -O http://www.gnu.org/software/gettext/manual/gettext.html
# -O -O 可以同时下载多个文件
# 不加这个选项会直接打印到标准输出

网页重定向

有些网页,比如 www.sina.com, 发生了跳转,直接 curl 的话无法获得网页源码,这时需要加 -L 选项

# 遇到重定向时,使用该选项可以将请求重定向到新的地址上
curl -L www.sina.com

断点续传

当 curl 网页时中途终端,可以使用 -C 选项来接着已经完成的下载,已经下载过的文件不会被重新下载。

# 当文件在下载完成之前结束该进程
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
############## 20.1%
$ curl -C -O http://www.gnu.org/software/gettext/manual/gettext.html
############### 21.1%

获得请求信息或通信过程

-i 显示 http response 的头信息,连同网页代码一起。
-I/--head 只显示 response 头部信息。
-v 显示一次http通信的整个过程,包括端口连接和http request头信息。
或者使用下面的命令获得更详细的通信过程:
curl --trace output.txt www.sina.com

发送表单信息

对于 GET 方法,由于参数数据在 url 上,因此,可以直接 curl,这也是 curl 默认方法。
对于其他方法,则需要使用 -X 选项进行指定,如 POST、DELETE 等。

$ curl -X POST --data "data=xxx" example.com

--data 等同于 -d,有以下几种用法:

-d @file # 将提交的参数放在文件里
-d "string" # 多参数形式为 xxx&xxx
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string # 含有特殊符号的需要进行 url 编码

伪造头部信息

-e/--referer 选项可以伪造来源网址。

# 假装是从 http://www.google.com 页面跳转到目的页面的
$ curl --referer http://www.google.com http://man.linuxde.net

-A/--user-agent 选项可以伪造 UA。

curl URL -A "Mozilla/5.0"

-H/--header 自定义头部信息

curl -H "Host:man.linuxde.net" -H "accept-language:zh-cn"

-x/--proxy 设置代理

设置 COOKIE

-b/--COOKIE 选项用来设置 COOKIE 或者从指定文件中读取 COOKIE 信息发起 http 请求。

$ curl --COOKIE "name=xxx;pass=xxx" www.example.com

-c/--COOKIE-jar 选项可以将 COOKIEs 保存到指定文件。

用户认证

-u/--user 进行 http/ftp 的认证

下载文件

$ curl -u name:password www.example.com
$ curl -O ftp://name:passwd@ip:port/demo/curtain/bbstudy_files/style.css

上传文件

$ curl -T test.sql ftp://name:passwd@ip:port/demo/curtain/bbstudy_files/

限速与限额

--limit-rate 选项设置传输速度

curl URL --limit-rate 50k

--max-filesize 选项设置最大下载的文件总量

curl URL --max-filesize bytes

参考

【1】 Linux curl 命令详解
【2】linux curl 命令详解,以及实例
【3】curl网站开发指南


推荐阅读
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 本文探讨了在多DHCP服务器环境中如何创建和管理作用域,并提出了一种有效的备用DHCP服务器方案,以确保网络服务的高可用性和稳定性。通过详细的技术分析和实践操作,本文为网络管理员提供了一套完整的解决方案,帮助其更好地应对复杂的网络环境。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 基于Linux系统的Kickstart自动化服务器部署方案
    本文针对企业需求,提出了一种基于Linux系统的Kickstart自动化服务器部署方案。该方案旨在通过无盘批量安装操作系统,提高企业IT基础设施的部署效率。Kickstart是一种利用Anaconda工具实现服务器自动化安装的技术,能够显著简化和加速操作系统的安装过程。通过详细的实施规划,本文介绍了Kickstart的工作原理及其在实际部署中的应用,为企业提供了高效的自动化部署解决方案。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有