curl及wget使用说明

本文介绍了三个命令行工具的使用。curl安装时可能因openssl未装报错,并介绍常用参数用法;wget是Linux下载工具,支持HTTP和FTP协议等,给出多个使用实例;httpie是HTTP命令行客户端,可用于测试等,列举了多种请求示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Date: 2019-06-19

Author: Sun

1. curl的使用

注意:安装的时候可能会遇到报错,有可能是openssl没装,

apt install curl
apt install openssl
apt install openssl-dev

一些常用参数的用法

参数说明示例
-A设置user-agentcurl -A "Chrome" http://www.baidu.com
-X用指定方法请求curl -X POST http://httpbin.org/post
-I只返回请求的头信息
-d以POST方法请求url,并发送相应的参数-d a=1 -d b=2 -d c=3
-d "a=1&b=2&c=3"
-d @filename
-O下载文件并以远程的文件名保存
-o下载文件并以指定的文件名保存curl -o fox.jpeg http://httpbin.org/image/jpeg
-L跟随重定向请求curl -IL https://baidu.com
-H设置头信息curl -o image.webp -H "accept:image/webp" http://httpbin.org/image
-k允许发起不安全的SSL请求
-b设置cookiescurl -b a=test http://httpbin.org/cookies
-s不显示其他无关信息
-v显示连接过程中的所有信息

自定义一个命令,查看本机外网IP

alias myip="curl http://httpbin.org/get|grep -E '\d+'|grep -v User-Agent|cut -d '\"' -f4"

2 wget使用

​ wget是linux上的命令行的下载工具。这是一个GPL许可证下的自由软件。wget支持HTTP和FTP协议,支持代理服务器和断点续传功能

安装:

apt install wget

参数说明

$ wget --help

ABC
-O以指定文件名保存下载的文件wget -O test.png http://httpbin.org/image/png
--limit-rate以指定的速度下载目标文件--limit-rate=200k
-c断点续传
-b后台下载
-U设置User-Agent
--mirror镜像某个目标网站
-p下载页面中的所有相关资源
-r递归下载所有网页中所有的链接
# 镜像下载整个网站并保存到本地
wget -c --mirror -U "Mozilla" -p --convert-links http://docs.python-requests.org

实例

(1) 下载192.168.1.168首页并且显示下载信息

wget -d http://192.168.1.168

(2) 下载192.168.1.168首页并且不显示任何信息

wget -q http://192.168.1.168

(3) 批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。

wget -i filelist.txt

(4) 断点续传

wget -c http://example.com/really-big-file.iso

3. httpie

​ httpie是一个 HTTP 的命令行客户端,目标是让 CLI 和 web 服务之间的交互尽可能的人性化。这个工具提供了简洁的 http 命令,允许通过自然的语法发送任意 HTTP 请求数据,展示色彩化的输出。HTTPie 可用于与 HTTP 服务器做测试、调试和常规交互。

apt install httpie    #ubuntu
pip install httpie    
yum install httpie    #centos

httpie 帮助

# http
usage: http [--json] [--form] [--pretty {all,colors,format,none}]
            [--style STYLE] [--print WHAT] [--headers] [--body] [--verbose]
            [--all] [--history-print WHAT] [--stream] [--output FILE]
            [--download] [--continue]
            [--session SESSION_NAME_OR_PATH | --session-read-only SESSION_NAME_OR_PATH]
            [--auth USER[:PASS]] [--auth-type {basic,digest}]
            [--proxy PROTOCOL:PROXY_URL] [--follow]
            [--max-redirects MAX_REDIRECTS] [--timeout SECONDS]
            [--check-status] [--verify VERIFY]
            [--ssl {ssl2.3,ssl3,tls1,tls1.1,tls1.2}] [--cert CERT]
            [--cert-key CERT_KEY] [--ignore-stdin] [--help] [--version]
            [--traceback] [--default-scheme DEFAULT_SCHEME] [--debug]
            [METHOD] URL [REQUEST_ITEM [REQUEST_ITEM ...]]
http: error: the following arguments are required: URL

httpie 示例

1)请求 mimvp.com(米扑科技)

请求: http mimvp.com

结果: 返回有状态头200和网页正文

2)仅返回文件头header

请求: http -h proxy.mimvp.com

3)表单请求登录

请求: http --form POST proxy.mimvp.com username='mimvp-user' password='mimvp-pwd'

# 只显示Body
http -b mimvp.com
http --body mimvp.com

4)设置代理请求

请求:

http --proxy=http:http://217.107.197.174:8081 proxy.mimvp.com
http --proxy=http:http://user:pass@217.107.197.174:8081 proxy.mimvp.com
http --proxy=https:http://112.114.96.34:8118 proxy.mimvp.com
http --proxy=https:http://user:pass@112.114.96.34:8118 proxy.mimvp.com

5)下载文件

http -d minvp.com

转载于:https://www.cnblogs.com/sunBinary/p/11055633.html

<think>好的,用户现在想了解curlwget命令的使用。之前我们讨论过TCP协议相关的术语,用户可能是在学习网络相关的知识,现在想进一步掌握实际应用中的工具。 首先,我需要确定用户的使用场景。用户可能是运维人员、开发者,或者刚开始学习Linux的人。他们可能需要用这些工具下载文件、测试API,或者自动化脚本。考虑到之前的问题涉及SYN、ACK等底层协议,用户可能对网络通信有基础了解,但需要更实用的工具指导。 接下来,用户的需求是什么?他们可能想知道这两个命令的基本用法、常见选项以及区别。深层需求可能包括如何选择适合的工具,解决下载中的问题,或者集成到脚本中。需要比较curlwget,帮助用户根据场景选择。 用户可能存在的疑问包括:curlwget有什么区别?什么时候用哪个?如何处理下载中断、认证、代理等问题?可能需要举例说明常见的使用场景,比如下载文件、发送POST请求、限速下载、递归下载整个网站等。 我需要整理curlwget的主要功能、常用选项、典型用例,并对比它们的优缺点。还要注意给出实际例子,让用户更容易理解。例如,使用curl发送带JSON头的POST请求,或者用wget递归下载网站镜像。 另外,用户可能遇到证书问题、重定向、断点续传等情况,需要涵盖这些方面的选项。比如curl的-k选项忽略证书错误,wget的-c选项继续下载。同时,提供一些高级技巧,比如用curl测试API响应时间,或者用wget限速避免占用过多带宽。 还要注意安全性问题,比如在使用curl传递密码时用-u还是更安全的方式,避免在历史记录中留下敏感信息。可能提到使用环境变量或者配置文件来管理凭证。 最后,总结两者的适用场景,帮助用户根据需求选择合适的工具。例如,curl更适合API交互和灵活请求,而wget适合下载文件和网站镜像。</think>以下是对`curl`和`wget`命令的详细对比及使用指南,包含实际场景示例和运维技巧: --- ### **一、核心定位对比** | 特性 | curl | wget | |---------------|-------------------------------------|-----------------------------------| | **协议支持** | 支持HTTP/HTTPS/FTP/SCP/SMTP等23+协议 | 主要专注HTTP/HTTPS/FTP/FTPS | | **交互模式** | 更适合API调试、请求构造 | 专为文件下载优化 | | **持久性** | 默认输出到stdout | 自动保存到文件 | | **递归下载** | 不支持 | 支持目录递归下载 | | **开发语言** | C语言编写 | C++编写 | --- ### **二、curl核心用法** #### 1. 基础请求 ```bash # 发送GET请求并显示响应头 $ curl -I https://www.example.com # 下载文件并指定保存名称 $ curl -o image.jpg http://example.com/pic.jpg # 发送POST请求(JSON格式) $ curl -X POST -H "Content-Type: application/json" -d '{"user":"admin"}' http://api.example.com/login ``` #### 2. 认证相关 ```bash # Basic认证 $ curl -u username:password http://protected.example.com # Bearer Token认证 $ curl -H "Authorization: Bearer <token>" http://api.example.com/data ``` #### 3. 调试与监控 ```bash # 显示详细通信过程(调试用) $ curl -v https://www.example.com # 测试响应时间(单位:秒) $ curl -w "DNS: %{time_namelookup} Connect: %{time_connect} Total: %{time_total}\n" -o /dev/null -s https://example.com ``` #### 4. 高级功能 ```bash # 断点续传(适合大文件) $ curl -C - -O http://example.com/large_file.zip # 限速下载(100KB/s) $ curl --limit-rate 100K -O http://example.com/file.iso # 代理设置 $ curl -x http://proxy.example.com:8080 http://external-site.com ``` --- ### **三、wget核心用法** #### 1. 下载操作 ```bash # 下载单个文件 $ wget http://example.com/file.zip # 后台下载(适合长时间任务) $ wget -bqc http://example.com/large_video.mp4 # 断点续传 $ wget -c http://example.com/interrupted_download.iso ``` #### 2. 批量下载 ```bash # 下载文件列表(每行一个URL) $ wget -i url_list.txt # 镜像整个网站(谨慎使用!) $ wget --mirror --convert-links --page-requisites --no-parent http://example.com/subdir/ ``` #### 3. 限速与重试 ```bash # 限速500KB/s(防止带宽占满) $ wget --limit-rate=500k http://example.com/ubuntu.iso # 失败重试(最多5次) $ wget -t5 http://unstable-site.com/file ``` #### 4. 认证与SSL ```bash # FTP下载(带认证) $ wget --ftp-user=user --ftp-password=pass ftp://example.com/file # 忽略SSL证书验证(测试环境用) $ wget --no-check-certificate https://self-signed.example.com ``` --- ### **四、运维场景对比选择** | **使用场景** | **推荐工具** | **示例命令** | |----------------------------|-------------|-------------| | API接口测试/调试 | curl | `curl -X PUT -d '{"status":1}' http://api.example.com/resource` | | 大文件下载(需断点续传) | wget | `wget -c http://mirror.example.com/centos.iso` | | 网页资源批量抓取 | wget | `wget -r -np -R "index.html*" http://docs.example.com` | | 需要查看详细HTTP头的请求 | curl | `curl -I -X HEAD http://example.com/login` | | 需要模拟浏览器行为的下载 | curl | `curl -A "Mozilla/5.0" --cookie "session=abc123" http://example.com` | | 创建网站本地镜像 | wget | `wget --mirror --convert-links http://example.com` | --- ### **五、高级技巧** #### 1. 结合管道处理 ```bash # 下载JSON数据并用jq解析 $ curl -s http://api.example.com/data | jq '.results[].name' # 下载CSV文件实时处理 $ wget -qO- http://reports.example.com/sales.csv | awk -F, '{sum+=$3} END{print sum}' ``` #### 2. 证书问题处理 ```bash # 指定客户端证书(双向SSL认证) $ curl --cert client.pem --key key.pem https://secure-api.example.com # 信任自定义CA证书 $ wget --ca-certificate=my-ca.pem https://internal.example.com ``` #### 3. 防火墙穿透 ```bash # 通过SOCKS代理 $ curl -x socks5://user:pass@proxy.example.com:1080 http://blocked-site.com # 使用被动模式FTP(穿透防火墙) $ wget --passive-ftp ftp://files.example.com/reports/ ``` --- ### **六、常见错误处理** | **错误现象** | **解决方案** | |---------------------------|----------------------------------------| | `SSL certificate problem` | 添加`--insecure`(curl)或`--no-check-certificate`(wget) | | `Connection refused` | 检查目标端口是否开放,确认防火墙规则 | | `403 Forbidden` | 添加用户代理:`-A "Mozilla/5.0"` | | 下载文件不完整 | 使用`-C -`(curl)或`-c`(wget)恢复下载 | | 递归下载陷入死循环 | 设置`--level=N`限制递归深度 | --- ### **七、性能优化参数** ```bash # curl并行下载(多线程效果) $ curl -Z -O http://cdn.example.com/file.part1 -O http://cdn.example.com/file.part2 # wget多镜像源加速 $ wget --prefer-family=IPv4 --dns-timeout=5 --connect-timeout=5 http://mirror{1,2}.example.com/package.deb ``` 掌握这些用法后,可以通过组合命令实现复杂需求,例如: ```bash # 下载最新版软件包并自动校验(wget + shasum) $ wget $(curl -s https://api.github.com/repos/project/releases/latest | jq -r '.assets[].browser_download_url') && sha256sum -c checksum.txt ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值