curl命令是一个使用URL规则在命令行下工作的文件传输工具。curl支持文件的上传和下载,是一个综合性的传输工具,但是按照传统,习惯上称curl为下载工具。作为一个强大的工具,curl支持包括HTTP、HTTPS、FTP等多种协议,还支持GET、POST、cookies、身份验证、从指定偏移量下载部分文件、用户代理字符串、速度限制、文件大小、进度条和其他功能,它还可以自动化网页处理过程和数据检索。在开发和测试web后台程序的过程中,经常需要发送url进行测试。使用curl可以很方便的模拟满足要求的url命令curl语法:curl[options...]#curl(options)(parameters)例子1:curl-m30--retry3https://proxy.mimvp.com/ip.php//curl爬取网页,获取本地外网ip例2:curl-m30--retry3-xhttps://120.77.176.179:8888https://proxy.mimvp.com/ip.php//curl通过代理IP爬取网页,获取本地外网ip的更多示例:https://proxy.mimvp.com/demo2...(Shellcurlwget)使用curl发送GET请求:curlprotocol://ip:port/url?argscurlhttps://proxy.mimvp.com/login...使用curl发送POST请求:(推荐)curl-d"key1=value1&key2=value2&key3=value3"protocol://ip:port/path示例1:curl-d'post_data=i_love_mimvp.com'https://proxy.mimvp.com/ip.php//测试post,无论发送什么数据都会返回,比如'i_love_mimvp.com'例子2:curl-d"user=admin&passwd=12345678"https://proxy.mimvp.com/login//测试贴,模拟发送登录用户名和密码直接在header中作为参数.如果需要指定输出到文件,可以通过redirection.curl-H"Content-Type:application/json"-XPOST-d'jsondata'URL示例1:curl-H"Content-Type:application/json"-XPOST-d'{"post_data":"i_love_mimvp.com"}''https://proxy.mimvp.com/ip.php'示例2:curl-H"Content-Type:application/json"-XPOST-d'{"user":"admin","passwd":"12345678"}'https://proxy.mimvp.com/logincurl应用示例1.文件下载curl命令可用于执行下载和发送各种HTTP请求,指定HTTP如果系统没有curl用于head等操作,可以使用yuminstallcurl安装,也可以下载安装。curl将下载的文件输出到stdout,将进度信息输出到stderr,使用--silent选项不显示进度信息。curlURL--silent该命令将下载的文件输出到终端,所有下载的数据写入stdout。使用选项-O将下载的数据写入文件,必须使用文件的绝对地址:curlhttp://man.linuxde.net/text.iso--silent-O选项-o将下载的数据写入数据到指定名称的文件,使用--progress显示进度条:(常用)curlhttp://man.linuxde.net/test.iso-ofilename.iso--progress100.0%2。在特定的文件偏移处继续下载,它可以通过指定一个便宜的数量来下载文件的一部分:curlURL/File-Coffset#偏移量是以字节为单位的整数,如果你让curl自动推断正确使用-C-:卷曲-C-URL3。curl设置参考源页面(常用)参考页面是HTTP头中的一个字符串,用来表示用户从哪个页面到达当前页面。如果当用户点击网页A中的一个链接时,用户会跳转到网页B,而网页B的header中的referencepagestring中包含了网页A的URL。使用--referer选项指定引用页面字符串:curl--refererhttp://www.baidu.comhttps://proxy.mimvp.com4.curl设置cookies(常用)使用--cookie"COKKIES”选项指定Cookies,多个cookies用分号分隔:curlhttps://proxy.mimvp.com--cookie"user=root;pass=123456"将cookies保存为文件,使用--cookie-jar选项:curlURL--cookie-jarcookie_file5.curl设置用户代理字符串(常用)有些网站访问会提示只能使用IE浏览器访问,这是因为这些网站设置了勾选用户代理,可以使用curl将用户代理设置为IE,这将为您提供访问权限。使用--user-agent或-A选项:curlURL--user-agent"Mozilla/5.0"curlURL-A"Mozilla/5.0"其他HTTP头信息也可以使用curl发送,使用-H"头information”传递多个头信息,例如:curl-H"Host:proxy.mimvp.com"-H"accept-language:zh-cn"URL6.curl的带宽控制和下载配额使用--limit-ratelimitcurl的下载速度:k(千字节)和m(兆字节)用于在curlURL--limit-rate50k命令中指定下载速度限制。使用--max-filesize指定可以下载的最大文件大小:curlURL--max-filesizebytes如果文件大小超过限制,命令返回一个非零的退出代码,如果命令是返回0普通的。7.使用curl选项-u完成HTTP或FTP验证。您可以指定密码或不指定密码。后续操作输入密码:curl-uuser:pwdhttp://proxy.mimvp.comcurl-uuserhttp://proxy.mimvp.com8。curlonlyprintstheresponseheaderinformation(常用)通过-Ior-head可以只打印HTTP头信息:yg-mac:~homer$curl-Ihttps://proxy.mimvp.comHTTP/1.1200OKServer:nginxDate:2018年5月31日星期四03:51:08GMTContent-Type:text/html;charset=UTF-8Connection:keep-aliveVary:Accept-EncodingSet-Cookie:PHPSESSID=d4kf789gvurb10p7g5pcqd8;path=/Expires:Thu,19Nov198108:52:00GMTCache-Control:no-store,no-cache,must-revalidate,post-check=0,pre-check=0Pragma:no-cacheVary:代理-bjcurl参数说明-a/--append上传文件时,追加到目标文件-A/--user-agent设置用户代理发送到服务器-anyauth可以使用“any”认证方式-b/--cookiecookie字符串或文件读取位置--basic使用HTTP基本认证-B/--use-ascii使用ASCII/文本传输-c/--cookie-jar操作后写入-C/--continue-at在断点处继续-d/--dataHTTPPOST传输数据--data-ascii<data>以ascii格式发布数据--data-binary以二进制格式发布数据--negotiate使用HTTP身份验证--digest使用数字身份验证--disable-eprt禁用EPRT或LPRT--disable-epsv禁用EPSV-D/--dump-header将头信息写入文件--egd-filesetEGDsocketpathforrandomdata(SSL)--tcp-nodelayuseTCP_NODELAYOPTIONS-e/--referersourceurl-E/--cert客户端证书文件和密码(SSL)--cert-type证书文件类型(DER/PEM/ENG)(SSL)--key私钥文件名(SSL)--key-type私钥文件类型(DER/PEM/ENG)(SSL)--pass私钥密码(SSL)--engine要使用的加密引擎(SSL)。"--enginelist"forlist--cacertCAcertificate(SSL)--capathCAdirectory(madeusingc_rehash)toverifypeeragainst(SSL)--ciphersSSLciphers--compressed请求返回压缩形式(使用deflate或gzip)--connect-timeout设置最大请求时间--create-dirs为本地目录创建目录层次--crlf上传是将LF转换为CRLF-f/--failhttp连接失败时不显示错误--ftp-create-dirs如果远程目录不存在,则创建一个远程目录--ftp-method[multicwd/nocwd/singlecwd]控制CWD的使用--ftp-pasv使用PASV/EPSV代替端口--ftp-skip-pasv-ip使用PASV时,忽略IP地址--ftp-sslftp数据传输尽量使用SSL/TLS--ftp-ssl-reqdftp数据传输需要SSL/TLS-F/--form模拟http表单提交数据--form-string模拟HTTP表单提交数据-g/--globoff禁用URL序列和范围使用{}和[]-G/--get以get-H/--header自定义的形式发送数据头信息传递给服务器--ignore-content-length忽略HTTP头信息的长度-i/--include在输出中包含协议头信息-I/--head只显示请求头信息-j/--junk-session-cookies读取文件Forwardignoresessioncookie--interfaceusespecifiednetworkinterface/address--krb4usespecifiedsecuritylevelofkrb4-k/--insecureallownocertificatetoSSLsite-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使用HTTPNTLM身份验证-N/--no-buffer禁用缓冲输出-o/--outputputoutputwritetothisfile-O/--remote-name将输出写入此文件,保留远程文件的文件名-p/--proxytunnel使用HTTP代理--proxy-anyauth选择任何代理身份验证方法--proxy-basic使用基本身份验证代理--proxy-digest在代理上使用数字身份验证--proxy-ntlm在代理上使用ntlm身份验证-P/--ftp-port使用端口地址,而不是使用PASV-q作为第一个参数,关闭.curlrc-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显示错误--socks4proxygivenhostandportwithsocks4--socks5proxygivenhostandportwithsocks5--stderr-t/--telnet-optionTelnetoptionsetting--tracedebugthespecifiedfile--trace-asciiLike--tracebutnohexoutput---trace-timeadd跟踪/详细输出时的时间戳-T/--upload-file上传文件--url使用SpetURL-u/--user设置服务器用户和密码-U/--proxy-usersetproxyusernameandpassword-w/--write-out[format]whatoutputisdone-x/--proxyuseHTTPproxyongivenport-X/--request指定什么命令-y/--speed-time放弃限速的时间,默认是30-Y/--speed-limit停止传输限速,限速时间