当前位置: 首页 > Linux

每天一条Linux命令——curl命令

时间:2023-04-06 22:55:36 Linux

curl命令是一个在Shell终端命令行下使用URL规则工作的文件传输工具。它支持文件上传和下载。是一个综合性的传输工具,但根据使用习惯,一般称curl为下载工具。curl设计为无需用户交互即可工作。作为一款强大的下载工具,curl支持包括HTTP、HTTPS、FTP、SFTP、SCP等众多协议,还提供了很多实用的技巧,比如代理支持、用户认证、FTP上传、HTTPpost、SSL连接、cookies、文件传输恢复、Metalink等。2.命令格式`curl[OPTIONS][URL...]`3.选项说明`-#,--progress-bar显示进度条-a,--append上传文件时追加到目标文件-A,--user-agentSTRING设置用户代理发送到服务器--anyauth可以使用“任何”认证方法-b,--cookiecookie字符串或文件读取位置--basic使用HTTP基本认证-B,--use-ascii使用ASCII文本传输-c,--cookie-jarFILE操作结束后将cookie写入指定文件-C,--continue-atOFFSET断点恢复-d,--dataDATAHTTPPOST传输数据--data-asciiDATA以ascii方式发送数据--data-binaryDATA以二进制方式发送数据--negotiate使用HTTP认证--digest使用数字认证--disable-eprt禁止使用EPRT或LPRT--disable-epsv禁用EPSV-D,--dump-headerFILE将头信息写入指定文件--egd-fileFILE为随机数据设置EGD套接字路径(SSL)--tcp-nodelay使用TCP_NODELAY选项-e,--referersourceURL-E,--certCERT[:PASSWD]客户端证书文件和密码(SSL)--cert-typeTYPE证书文件类型(DER/PEM/ENG)(SSL)--keyKEY私钥文件名(SSL)--key-typeTYPE私钥文件类型(DER/PEM/ENG)(SSL)--passPASS私钥密码(SSL)--engineNAMEselectforpasswordOpenSSL加密引擎的操作--cacertFILE证书book(SSL)--capathCA目录(使用c_rehash制作)以验证对等点(SSL)--ciphersLISTSSL密码--压缩请求返回被压缩(使用deflate或gzip)--connect-timeoutSECONDSset最大请求时间--create-dirs构建本地目录的目录层次--crlf上传是将LF转换为CRLF-f,--fail连接失败时不显示http错误--ftp-create-dirsif远程目录不存在,创建远程目录--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,--formNAME=CONTENT模拟http表单提交数据--form-stringNAME=STRING模拟http表单提交数据-g,--globoff禁用URL序列和范围使用{}和[]-G,--get以get方式发送数据-H,--headerLINE自定义header传递给服务器的信息--ignore-content-length忽略HTTP头信息的长度-i,--include输出时包含协议头信息-i,--head只显示请求头信息-j,--junk-session-cookies将文件读入忽略会话cookie--interfaceINTERFACE使用指定的网络接口/地址--krb4LEVEL使用指定的krb4-k安全级别,--insecure不允许证书到SSLsite-K,--config指定配置文件读取-l,--list-only列出ftp目录下的文件名--limit-rateRATE设置传输速度--local-portNUM[-NUM]强制使用本地portnumber-m,--max-timeSECONDS设置最大传输时间--max-redirsNUM设置最大读取目录数--max-filesizeBYTES设置最大下载文件总数-M,--manual显示完全手动-n,--netrc从netrc文件中读取用户名和密码--netrc-optional使用.netrc或URL覆盖-n--ntlm使用HTTPNTLM身份验证-N,--no-buffer禁用缓冲输出-o,--outputFILE将输出写入指定文件-O,--remote-name将输出写入与远程文件同名的本地文件-p,--proxytunnel使用HTTP代理--proxy-anyauth选择任何代理认证方式--proxy-basic在代理上使用基本身份验证--proxy-digest在代理上使用数字身份验证--proxy-ntlm在代理上使用ntlm身份验证-P,--ftp-portADDRESS使用端口地址,而不是使用PASV-q,--disableasfirstargument,turnoff.curlrc-Q,--quoteCMDbeforefiletransfer,sendcommandtoserver-r/--rangeRANGE从HTTP/1.1或FTP服务器范围检索字节--range-file随机读取文件(SSL)-R,--remote-time本地生成文件时保持远程文件时间--retryNUM传输失败时重试次数--retry-delay当SECONDS传输出现问题时,设置重试间隔--retry-max-timeSECONDS传输出现问题时,设置最大重试时间-s,--silent静默模式不要输出任何东西-S,--show-error显示错误--socks4HOST[:PORT]使用socks4代理到给定的主机和端口--socks5HOST[:PORT]使用socks5代理到给定的主机和端口--stderrFILE将对stderr的所有写入重定向到指定文件-t,--telnet-optionOPT=VALTelnet选项集--traceFILE在指定文件上进行调试--trace-asciiFILE启用对所有传入和传出的跟踪转储完整的数据跟踪(包括描述信息)到给定的文件。使用'-'作为文件名将输出发送到标准输出--trace-time在跟踪详细输出时添加时间戳-T,--upload-fileFILE上传文件--urlURL指定要提取的URL-u,--userUSER[:PASSWORD]设置服务器用户和密码-U,--proxy-userUSER[:PASSWORD]设置代理用户名和密码-w,--write-outFORMAT完成后输出什么-x,--proxyHOST[:PORT]UseHTTPproxyonthegivenport-X,--requestCOMMAND指定与HTTP服务器通信时使用的自定义请求方法,默认为GET-y,--speed-time放弃限速所花费的时间,默认是30-Y,--speed-limit停止限制传输速度,速度时间`4.普通例子发起HTTPGET请求。请注意,GET请求可以携带主体。`curl-XGET'http://9.138.158.214:10000?advertiser_id=93&auth_code=AUTH_CODE'-H'Content-Type:application/json'-d'{"action_time":1591100087,"ad_id":"101642"}'`如果URL中带有参数,需要用单引号或双引号将URL括起来,因为字符&是特殊的shell字符,或者使用反斜杠对其进行转义。获取网页数据。执行`curlhttps://www.baidu.com`后,屏幕上会显示百度官网的内容。保存网页内容。`curlhttps://www.baidu.com>baidu_index.html#或curlhttps://www.baidu.com-obaidu_index.html`静默下载文件。注意最后的URL一定要具体到某个文件,否则无法下载。`curl-s-Ohttps://dl.softmgr.qq.com/original/im/QQ9.3.3.27011.exe`下载文件时显示进度条。`curl-#-Ohttps://dl.softmgr.qq.com/original/im/QQ9.3.3.27011.exe##########################################################################100.0%`当访问需要授权的页面时,可以通过-u选项提供用户名和密码进行授权。`curl-uroothttps://github.com/jindeng/sz14.gitEnterhostpasswordforuser'root':`只打印响应头信息。`curl(-I|--head)https://github.com/jindeng/sz14.git`限制了curl的下载速度。`curlURL--limit-rate50k`使用--limit-rate限制curl的下载速度,在命令中用k(千字节)和m(兆字节)指定下载速度限制。指定可以下载的最大文件大小。`curlURL--max-filesizebytes`使用--max-filesize指定可以下载的最大文件大小。如果文件大小超过限制,则命令返回一个非零的退出代码,如果命令正常则返回0。使用curl设置用户代理。`curlURL-A"Mozilla/5.0"`有些网站访问会提示只能使用IE浏览器访问,这是因为这些网站设置了useragent进行校验,可以使用curl设置useragent来IE,这样你就可以访问了。使用-A或--user-agent选项。自定义标头信息被传递到服务器。使用多个-H选项来传递多个标头。`curl-H"Host:man.linuxde.net"-H"accept-language:zh-cn"URL`curl设置cookie。使用--cookie选项指定cookies,多个cookies用分号分隔。`curlURL--cookie"user=root;pass=123456"`要将cookie保存为文件,请使用--cookie-jar选项。`curlURL--cookie-jarcookie_file`curl设置引用页面字符串。使用--referer选项指定引用字符串。`curl--refererURL1URL2`参考页面是一个位于HTTP头中的字符串,用于指示用户从哪个页面到达当前页面。如果用户点击网页A中的一个链接,用户会跳转到网页B,网页B的header中的引用页面字符串包含网页A的URL.http。curl可以从一个特定的文件偏移量开始继续下载,它可以通过指定一个偏移量来下载文件的一部分。`curlURL/File-COFFSET`偏移量是以字节为单位的整数。如果您希望curl自动推断出正确的恢复位置,请使用:`curl-C-URL`在连接失败时不显示http错误。`curl-fhttps://unknow.com`通过ftp上传。`curl-Ttest.sqlftp://username:password@ip:port/demo/curtain/bbstudy_files/`通过ftp下载。`curl-u用户名:密码-OURL`