Curl 下载安装和配置

article/2025/1/9 1:31:47

Curl 下载安装和配置

    • 1.1 什么是Curl?
    • 1.2 Curl 支持的网络协议
    • 1.3 Curl 是做什么用的?
    • 1.4 Curl 如何下载安装?
      • 1.4.1 Windows 平台
      • 1.4.2 Linux 平台
      • 1.4.3 Mac OS 平台
    • 1.5 Curl 配置
      • 1.5.1 解压
      • 1.5.2 配置环境变量
      • 1.5.3 验证安装配置是否成功
    • 1.6 如何使用Curl?
      • 1.6.1 发送一个GET 请求
      • 1.6.2 发送一个POST 请求
      • 1.6.3 发送一个DELETE
      • 1.6.4 自定义请求头
      • 1.6.5 发送一个PUT 请求
    • 1.7 附录
    • 1.8 更多学习资料

1.1 什么是Curl?

Curl 是一个命令行工具和库,用于通过URL传输数据。

简单来说呢,根据我的理解

Curl 就是一个可以通过命令行发送GET,POST 等多种协议请求的工具。

1.2 Curl 支持的网络协议

DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,
POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and
TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP
uploading, HTTP form based upload, proxies, HTTP/2, cookies,
user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM,
Negotiate and Kerberos), file transfer resume, proxy tunneling and
more.

1.3 Curl 是做什么用的?

  • Curl在命令行或脚本中用于传输数据。
  • 它还用于汽车,电视机,路由器,打印机,音频设备,手机,平板电脑,机顶盒,媒体播放器中,并且是数千种每天影响数十亿人口的软件应用程序的互联网传输基础。
  • Curl 是免费开源的

1.4 Curl 如何下载安装?

1.4.1 Windows 平台

2019年9月11日 当前最新版本是7.66.0

Curl 点击下载

打开上面网址后,我们可以看到这样的界面
在这里插入图片描述

  • 如果是windows 操作系统就点击图中所示这个。
  • 如果是linux 请下载对应的版本。

1.4.2 Linux 平台

Linux 平台的下载和安装方法见这里 Get curl for Linux

1.4.3 Mac OS 平台

如果你使用的Mac OS 操作系统,那么可以参考Get curl for macOS

1.5 Curl 配置

1.5.1 解压

下载完成后,我解压到了这样一个目录

C:\app\curl\curl-7.66.0
在这里插入图片描述

1.5.2 配置环境变量

Curl 和其他一些常用的Java 工具一样,如果我们想要在命令行的任意路径下使用它,最好把它添加到Path环境变量里。

我们新建一个环境变量

CURL_HOME
C:\app\curl\curl-7.66.0

效果如图所示
在这里插入图片描述
然后Path中追加这个环境变量即可

%CURL_HOME%\bin\

效果图如下所示
在这里插入图片描述

1.5.3 验证安装配置是否成功

如果想验证是否安装配置成功,可以输入如下命令即可

curl --version

或者

curl -v / --version

值得注意的是,貌似它针对windows 平台的Powshell 支持不够友好,输入这个名会报错,只能在cmd下才可以。

1.6 如何使用Curl?

官方文档
GitHub 主页

命令行下输入命令

curl --help

输出命令语法如下:

Usage: curl [options...] <url>--abstract-unix-socket <path> Connect via abstract Unix domain socket--anyauth       Pick any authentication method-a, --append        Append to target file when uploading--basic         Use HTTP Basic Authentication--cacert <CA certificate> CA certificate to verify peer against--capath <dir>  CA directory to verify peer against-E, --cert <certificate[:password]> Client certificate file and password--cert-status   Verify the status of the server certificate--cert-type <type> Certificate file type (DER/PEM/ENG)--ciphers <list of ciphers> SSL ciphers to use--compressed    Request compressed response-K, --config <file> Read config from a file--connect-timeout <seconds> Maximum time allowed for connection--connect-to <HOST1:PORT1:HOST2:PORT2> Connect to host-C, --continue-at <offset> Resumed transfer offset-b, --cookie <data> Send cookies from string/file-c, --cookie-jar <filename> Write cookies to <filename> after operation--create-dirs   Create necessary local directory hierarchy--crlf          Convert LF to CRLF in upload--crlfile <file> Get a CRL list in PEM format from the given file-d, --data <data>   HTTP POST data--data-ascii <data> HTTP POST ASCII data--data-binary <data> HTTP POST binary data--data-raw <data> HTTP POST data, '@' allowed--data-urlencode <data> HTTP POST data url encoded--delegation <LEVEL> GSS-API delegation permission--digest        Use HTTP Digest Authentication-q, --disable       Disable .curlrc--disable-eprt  Inhibit using EPRT or LPRT--disable-epsv  Inhibit using EPSV--dns-interface <interface> Interface to use for DNS requests--dns-ipv4-addr <address> IPv4 address to use for DNS requests--dns-ipv6-addr <address> IPv6 address to use for DNS requests--dns-servers <addresses> DNS server addrs to use-D, --dump-header <filename> Write the received headers to <filename>--egd-file <file> EGD socket path for random data--engine <name> Crypto engine to use--expect100-timeout <seconds> How long to wait for 100-continue-f, --fail          Fail silently (no output at all) on HTTP errors--fail-early    Fail on first transfer error, do not continue--false-start   Enable TLS False Start-F, --form <name=content> Specify HTTP multipart POST data--form-string <name=string> Specify HTTP multipart POST data--ftp-account <data> Account data string--ftp-alternative-to-user <command> String to replace USER [name]--ftp-create-dirs Create the remote dirs if not present--ftp-method <method> Control CWD usage--ftp-pasv      Use PASV/EPSV instead of PORT-P, --ftp-port <address> Use PORT instead of PASV--ftp-pret      Send PRET before PASV--ftp-skip-pasv-ip Skip the IP address for PASV--ftp-ssl-ccc   Send CCC after authenticating--ftp-ssl-ccc-mode <active/passive> Set CCC mode--ftp-ssl-control Require SSL/TLS for FTP login, clear for transfer-G, --get           Put the post data in the URL and use GET-g, --globoff       Disable URL sequences and ranges using {} and []-I, --head          Show document info only-H, --header <header/@file> Pass custom header(s) to server-h, --help          This help text--hostpubmd5 <md5> Acceptable MD5 hash of the host public key-0, --http1.0       Use HTTP 1.0--http1.1       Use HTTP 1.1--http2         Use HTTP 2--http2-prior-knowledge Use HTTP 2 without HTTP/1.1 Upgrade--ignore-content-length Ignore the size of the remote resource-i, --include       Include protocol response headers in the output-k, --insecure      Allow insecure server connections when using SSL--interface <name> Use network INTERFACE (or address)-4, --ipv4          Resolve names to IPv4 addresses-6, --ipv6          Resolve names to IPv6 addresses-j, --junk-session-cookies Ignore session cookies read from file--keepalive-time <seconds> Interval time for keepalive probes--key <key>     Private key file name--key-type <type> Private key file type (DER/PEM/ENG)--krb <level>   Enable Kerberos with security <level>--libcurl <file> Dump libcurl equivalent code of this command line--limit-rate <speed> Limit transfer speed to RATE-l, --list-only     List only mode--local-port <num/range> Force use of RANGE for local port numbers-L, --location      Follow redirects--location-trusted Like --location, and send auth to other hosts--login-options <options> Server login options--mail-auth <address> Originator address of the original email--mail-from <address> Mail from this address--mail-rcpt <address> Mail from this address-M, --manual        Display the full manual--max-filesize <bytes> Maximum file size to download--max-redirs <num> Maximum number of redirects allowed-m, --max-time <time> Maximum time allowed for the transfer--metalink      Process given URLs as metalink XML file--negotiate     Use HTTP Negotiate (SPNEGO) authentication-n, --netrc         Must read .netrc for user name and password--netrc-file <filename> Specify FILE for netrc--netrc-optional Use either .netrc or URL-:, --next          Make next URL use its separate set of options--no-alpn       Disable the ALPN TLS extension-N, --no-buffer     Disable buffering of the output stream--no-keepalive  Disable TCP keepalive on the connection--no-npn        Disable the NPN TLS extension--no-sessionid  Disable SSL session-ID reusing--noproxy <no-proxy-list> List of hosts which do not use proxy--ntlm          Use HTTP NTLM authentication--ntlm-wb       Use HTTP NTLM authentication with winbind--oauth2-bearer <token> OAuth 2 Bearer Token-o, --output <file> Write to file instead of stdout--pass <phrase> Pass phrase for the private key--path-as-is    Do not squash .. sequences in URL path--pinnedpubkey <hashes> FILE/HASHES Public key to verify peer against--post301       Do not switch to GET after following a 301--post302       Do not switch to GET after following a 302--post303       Do not switch to GET after following a 303--preproxy [protocol://]host[:port] Use this proxy first-#, --progress-bar  Display transfer progress as a bar--proto <protocols> Enable/disable PROTOCOLS--proto-default <protocol> Use PROTOCOL for any URL missing a scheme--proto-redir <protocols> Enable/disable PROTOCOLS on redirect-x, --proxy [protocol://]host[:port] Use this proxy--proxy-anyauth Pick any proxy authentication method--proxy-basic   Use Basic authentication on the proxy--proxy-cacert <file> CA certificate to verify peer against for proxy--proxy-capath <dir> CA directory to verify peer against for proxy--proxy-cert <cert[:passwd]> Set client certificate for proxy--proxy-cert-type <type> Client certificate type for HTTS proxy--proxy-ciphers <list> SSL ciphers to use for proxy--proxy-crlfile <file> Set a CRL list for proxy--proxy-digest  Use Digest authentication on the proxy--proxy-header <header/@file> Pass custom header(s) to proxy--proxy-insecure Do HTTPS proxy connections without verifying the proxy--proxy-key <key> Private key for HTTPS proxy--proxy-key-type <type> Private key file type for proxy--proxy-negotiate Use HTTP Negotiate (SPNEGO) authentication on the proxy--proxy-ntlm    Use NTLM authentication on the proxy--proxy-pass <phrase> Pass phrase for the private key for HTTPS proxy--proxy-service-name <name> SPNEGO proxy service name--proxy-ssl-allow-beast Allow security flaw for interop for HTTPS proxy--proxy-tlsauthtype <type> TLS authentication type for HTTPS proxy--proxy-tlspassword <string> TLS password for HTTPS proxy--proxy-tlsuser <name> TLS username for HTTPS proxy--proxy-tlsv1   Use TLSv1 for HTTPS proxy-U, --proxy-user <user:password> Proxy user and password--proxy1.0 <host[:port]> Use HTTP/1.0 proxy on given port-p, --proxytunnel   Operate through a HTTP proxy tunnel (using CONNECT)--pubkey <key>  SSH Public key file name-Q, --quote         Send command(s) to server before transfer--random-file <file> File for reading random data from-r, --range <range> Retrieve only the bytes within RANGE--raw           Do HTTP "raw"; no transfer decoding-e, --referer <URL> Referrer URL-J, --remote-header-name Use the header-provided filename-O, --remote-name   Write output to a file named as the remote file--remote-name-all Use the remote file name for all URLs-R, --remote-time   Set the remote file's time on the local output-X, --request <command> Specify request command to use--request-target Specify the target for this request--resolve <host:port:address> Resolve the host+port to this address--retry <num>   Retry request if transient problems occur--retry-connrefused Retry on connection refused (use with --retry)--retry-delay <seconds> Wait time between retries--retry-max-time <seconds> Retry only within this period--sasl-ir       Enable initial response in SASL authentication--service-name <name> SPNEGO service name-S, --show-error    Show error even when -s is used-s, --silent        Silent mode--socks4 <host[:port]> SOCKS4 proxy on given host + port--socks4a <host[:port]> SOCKS4a proxy on given host + port--socks5 <host[:port]> SOCKS5 proxy on given host + port--socks5-basic  Enable username/password auth for SOCKS5 proxies--socks5-gssapi Enable GSS-API auth for SOCKS5 proxies--socks5-gssapi-nec Compatibility with NEC SOCKS5 server--socks5-gssapi-service <name> SOCKS5 proxy service name for GSS-API--socks5-hostname <host[:port]> SOCKS5 proxy, pass host name to proxy-Y, --speed-limit <speed> Stop transfers slower than this-y, --speed-time <seconds> Trigger 'speed-limit' abort after this time--ssl           Try SSL/TLS--ssl-allow-beast Allow security flaw to improve interop--ssl-no-revoke Disable cert revocation checks (WinSSL)--ssl-reqd      Require SSL/TLS-2, --sslv2         Use SSLv2-3, --sslv3         Use SSLv3--stderr        Where to redirect stderr--suppress-connect-headers Suppress proxy CONNECT response headers--tcp-fastopen  Use TCP Fast Open--tcp-nodelay   Use the TCP_NODELAY option-t, --telnet-option <opt=val> Set telnet option--tftp-blksize <value> Set TFTP BLKSIZE option--tftp-no-options Do not send any TFTP options-z, --time-cond <time> Transfer based on a time condition--tls-max <VERSION> Use TLSv1.0 or greater--tlsauthtype <type> TLS authentication type--tlspassword   TLS password--tlsuser <name> TLS user name-1, --tlsv1         Use TLSv1.0 or greater--tlsv1.0       Use TLSv1.0--tlsv1.1       Use TLSv1.1--tlsv1.2       Use TLSv1.2--tlsv1.3       Use TLSv1.3--tr-encoding   Request compressed transfer encoding--trace <file>  Write a debug trace to FILE--trace-ascii <file> Like --trace, but without hex output--trace-time    Add time stamps to trace/verbose output--unix-socket <path> Connect through this Unix domain socket-T, --upload-file <file> Transfer local FILE to destination--url <url>     URL to work with-B, --use-ascii     Use ASCII/text transfer-u, --user <user:password> Server user and password-A, --user-agent <name> Send User-Agent <name> to server-v, --verbose       Make the operation more talkative-V, --version       Show version number and quit-w, --write-out <format> Use output FORMAT after completion--xattr         Store metadata in extended file attributes

关于Curl 如何使用HTTP ,官方有个文档

在HTTP 请求中,最常用的是下面几个方法:

  • GET
  • POST
  • HEAD
  • PUT

其中,Curl 方法执行约定如下

  • 默认使用的是GET方法。
  • -d 或者-F 指定为POST 方法
  • -I 指定为HEAD方法
  • -T 指定为PUT 方法

示例

1.6.1 发送一个GET 请求

curl http://example.com/file

执行完成后我们可以看到请求后返回来相应的页面源码
在这里插入图片描述

1.6.2 发送一个POST 请求

示例一:

curl -d 'name=admin&shoesize=12' http://example.com/

示例二:

curl -d name=admin -d shoesize=12 http://example.com/

示例三:

curl -d @filename http://example.com

1.6.3 发送一个DELETE

刚才默认的请求是GET 请求,我们也可以通过-X 参数指定请求的方法为DELETE

curl http://example.com/file -X DELETE

1.6.4 自定义请求头

如果自定义请求头,可以这么做

curl -H "Elevator: floor-9" http://example.com/

输出内容如下:
在这里插入图片描述
要修改User-Agent,那么输入如下命令:

curl -H "User-Agent:" http://example.com/

输出内容如下:
在这里插入图片描述

1.6.5 发送一个PUT 请求

发送一个PUT 请求使用-T 参数,命令如下:

curl -T localfile http://example.com/new/resource/file

因此-T表示PUT并告诉curl发送哪个文件,locafile 必须指定一个本地文件路径

但是POSTPUT之间的相似之处还允许您通过使用-d的常规curl POST机制来发送带有字符串的PUT,但要求它改为使用PUT:

curl -d "data to PUT" -X PUT http://example.com/new/resource/file

1.7 附录

关于参数列表如下:

VerboseHide progressextra infoWrite outputTimeout
-v-s-w “format”-O-m
–trace-ascii-o
POSTmultipartPUTHEADcustom
-d “string”-F name=value-T-I-X “METHOD”
-d @file-F name=@file
Basic authread cookieswrite cookiessend cookiesuser-agent
-u user:password-b-c-b “c=1; d=2”-A “string”
Use proxyHeaders, add/removefollow redirsgzipinsecure
-x-H “name: value”-L–compressed-k
-H “name:”

1.8 更多学习资料

  • How to read this book
  • CURL With HTTP
  • HTTP POST

http://chatgpt.dhexx.cn/article/TOGXnta8.shtml

相关文章

curl下载和上传

cURL 概述 cURL 是一个利用 URL 语法在命令行下工作的文件传输工具&#xff0c;1997年首次发行。它支持文件上传和下载&#xff0c;所以是综合传输工具&#xff0c;但按传统&#xff0c;习惯称 cURL 为下载工具。 常见用法 下载文件 下载文件 -o&#xff0c;自定义路径和文…

curl下载(curl下载文件)

php写curl下载文件 不是下载到服务器 让浏览器弹出下载文件&#xff0c;在本地下载 求高手解答 这样的用header吧 $file‘下载地址’; if (file_exists($file)) { header(Content-Description: File Transfer); header(Content-Type: application/octet-stream); header(Conten…

Curl下载及简单使用

Curl 是一个命令行工具和库&#xff0c;用于通过URL传输数据。 简单来说就是可以通过命令行发送GET,POST 等多种协议请求的工具 一、官网下载 下载地址 windows版 下载完成后解压即可 二、使用 进入 bin 目录下&#xff0c;打开cmd 窗口&#xff0c;输入 curl 加路径 带cook…

curl 下载图片

curl -o 1.jpg http://image.baidu.com/image123.jpg [1] 40848 [root~]# % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 251k 0 251k 0 0 1570k 0 --:–:-- --:–:-- --:–:-- 1589k

Curl【实例 01】curl下载使用及cmd实例脚本分享(通过请求下载文件)

Curl 官方下载地址 可下载不同平台不同版本的安装包&#xff0c;本次使用的是Windows解压版本curl-8.0.1_9-win32-mingw.zip。 curl下载使用及cmd实例 1.是什么1.1 curl1.2 bat和cmd 2.常用命令2.1 发送GET请求并显示响应头信息2.2 显示详细的请求和响应信息2.3 限制重定向次数…

完整的python项目实例-python完整项目

广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。 一个完整的python项目需要具备什么? 1. 需求功能的实现: 实现思路+现有框架+基础编程 2. 项目日志: logging模块(调试性的日志和记录性的日志…

微信小程序项目实例——投骰子

微信小程序项目实例——投骰子 文章目录 微信小程序项目实例——投骰子一、项目展示二、核心代码文末 项目代码见文字底部&#xff0c;点赞关注有惊喜 一、项目展示 投骰子是一款工具类小程序 用户可以点击按钮投出自身的骰子点数 二、核心代码 <!--dice.wxml--> <v…

连接数据库的项目实例

学生成绩管理系统 关键词&#xff1a;java&#xff0c;SQL Server 2012 后端 打开SQL Server 2012&#xff1a; 点击加号&#xff1a; 选中数据库&#xff0c;右键&#xff0c;新建数据库&#xff1a; 点击确定&#xff0c;等待片刻选中数据库&#xff0c;右键&#xff0c;刷…

SSM项目实例——简易版图书管理系统

文章目录 概述准备实现1.搭建数据库2.实现pojo层3.实现dao层4.实现service层5.配置Spring整合dao层6.配置Spring整合service层7.配置Spring整合Spring MVC8.配置Spring整合文件9.实现controller层10.实现view层11.运行前检查 运行后记 概述 通过对数据库中一张表的CRUD&#x…

vue-element-admin完整项目实例

项目运行地址&#xff1a;https://panjiachen.github.io/vue-element-admin/#/login 项目地址&#xff1a;https://github.com/PanJiaChen/vue-element-admin 项目地址&#xff1a;&#xff08;国际化&#xff09;https://github.com/PanJiaChen/vue-element-admin/tree/i18n 项…

购物车——js小项目实例

购物车——js小项目实例 首先构思好整体样式 添加点击事件&#x1f341;事件委托&#x1f341;接下来就是各种函数的书写 最后附上完整js代码 短短几周&#xff0c;js阶段的学习已然结束&#xff0c;结课作业就是实现一个购物车功能 功能&#xff1a; 1、可以添加商品 2、全选…

SpringBoot+Vue项目实例开发及部署

目录 一、SpringBoot快速上手 1、SpringBoot介绍 2、SpringBoot特点 3、快速创建SpringBoot应用 4、SpringBoot开发热部署 二、Web开发基础 1、Web入门 2、控制器 3、路由映射 4、参数传递 三、Web开发进阶 1、静态资源访问 2、文件上传原理 3、拦截器 四、构建…

微信小程序项目实例——手势解锁

微信小程序项目实例——手势解锁 文章目录 微信小程序项目实例——手势解锁一、项目展示二、设置手势、手势解锁三、手势重置文末&#xff1a;项目代码 项目代码见文字底部 一、项目展示 这是一款简单实用的手势解锁工具 手势解锁是当下常用的解锁方式 本实例以工具的形式 可以…

微信小程序项目实例——家居团购

微信小程序项目实例——家居团购 文章目录 微信小程序项目实例——家居团购一、项目展示二、首页三、购物车四、个人中心 项目代码见文字底部 一、项目展示 二、首页 首页由建材市场、团购活动、公益验房和线上拼团组成 从上到下分为广告区、导航区、内容区 核心代码如下&…

微信小程序项目实例——飞机大战

微信小程序项目实例——飞机大战 文章目录 微信小程序项目实例——飞机大战一、项目展示二、设计介绍三、总结 项目代码见文字底部&#xff0c;点赞关注有惊喜 一、项目展示 二、设计介绍 游戏和传统的飞机大战模式一样 这里设置了三种敌机和自家飞机的受损图 同时游戏设计了道…

微信小程序项目实例——双人五子棋

微信小程序项目实例——双人五子棋 文章目录 微信小程序项目实例——双人五子棋一、项目展示二、项目核心代码三、效果展示文末 项目代码见文字底部&#xff0c;点赞关注有惊喜 一、项目展示 微信小程序项目实例——双人五子棋 双人五子棋是一款游戏小程序 两位选手可以在15x1…

Android开发之项目实例(登录,注册)

Android开发 实现登录注册界面 前言&#xff1a; 今天项目刚刚做完&#xff0c;我就迫不急待的想分享一下&#xff0c;自己通过实例项目踩过的坑以及遇到遇到的困难发表一下&#xff0c;以便刚刚接触的伙伴跳跳坑&#xff0c;也便于自己在今后的开发中巩固&#xff0c;此篇文…

Django新手项目实例

1. 程序安装 &#xff08;1&#xff09;安装Django&#xff1a; pip3 install django&#xff08;2&#xff09;配置系统环境 成功安装Django后&#xff0c;在python目录script路径可找到django-admin.exe文件&#xff0c;将它加入操作系统环境变量中。这样以后调用会比较方便…

微信小程序项目实例——印记

微信小程序项目实例——印记 文章目录 微信小程序项目实例——印记一、项目展示二、日记列表三、日记发布文末 项目代码见文字底部&#xff0c;点赞关注有惊喜 一、项目展示 印记是一款简洁便利的日记本&#xff0c;用户可以在其中发布自己的日记本&#xff0c;同时也可以查看…

微信小程序项目实例——备忘录

微信小程序项目实例——备忘录 文章目录 微信小程序项目实例——备忘录一、项目展示二、项目介绍三、核心代码 项目代码见文字底部&#xff0c;点赞关注有惊喜 一、项目展示 二、项目介绍 项目是一个备忘录&#xff0c;拥有记录文字、计时和提醒的基本功能 项目只有一个页面&…