curl 全称CommandLine Uniform Resource Locator,顾名思义,curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或者文件的传输。
这个命令行工具现在多用于Unix和Linux操作系统,是一个开源的工具,功能十分强大。
该工具支持以下30多种类型的传输方式,这当中包含多种协议。
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
最常使用的有FILE、FTP、HTTP、HTTPS等协议。
curl 语法:
语法:# curl [option] [url]
curl 参数:
-A/--user-agent <string> 设置用户代理发送给服务器 -b/--cookie <name=string/file> cookie字符串或文件读取位置 -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中 -C/--continue-at <offset> 断点续转 -D/--dump-header <file> 把header信息写入到该文件中 -e/--referer 来源网址 -f/--fail 连接失败时不显示http错误 -o/--output 把输出写到该文件中 -O/--remote-name 把输出写到该文件中,保留远程文件的文件名 -r/--range <range> 检索来自HTTP/1.1或FTP服务器字节范围 -s/--silent 静音模式。不输出任何东西 -T/--upload-file <file> 上传文件 -u/--user <user[:password]> 设置服务器的用户和密码 -w/--write-out [format] 什么输出完成后 -x/--proxy <host[:port]> 在给定的端口上使用HTTP代理 -#/--progress-bar 进度条显示当前的传送状态
curl 例子:
# curl https://www.nixonli.com <html> <head><title>403 Forbidden</title></head> <body> <center><h1>403 Forbidden</h1></center> <hr><center>nginx</center> </body> </html>
上面命令向www.nixonli.com
发出 GET 请求,服务器返回的内容会在命令行输出。
curl 下载单个文件
默认将输出打印到标准输出中(STDOUT)中
curl https://www.nixonli.com
通过-o/-O选项保存下载的文件到指定的文件中:
-o:将文件保存为命令行中指定的文件名的文件中
-O:使用URL中默认的文件名保存文件到本地
# 将文件下载到本地并命名为test.html
curl -o test.html https://www.nixonli.com/index.html
# 将文件保存到本地并命名为index.html
curl -O https://www.nixonli.com/index.html
同样可以使用转向字符”>”对输出进行转向输出
使用linux的重定向功能保存
# curl https://www.nixonli.com >> index.html
同时获取多个文件
curl -O URL1 -O URL2
curl proxy
指定proxy服务器以及其端口
很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用内置option:-x来支持设置代理
# curl -x 192.168.100.100:1080 https://www.nixonli.com
curl cookie
有些网站是使用cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可以很容易的处理cookie
保存http的response里面的cookie信息。内置option:-c(小写)
# curl -c cookiec.txt https://www.nixonli.com
执行后cookie信息就被存到了cookiec.txt里面了
保存http的response里面的header信息。内置option: -D
# curl -D cookied.txt https://www.nixonli.com
执行后cookie信息就被存到了cookied.txt里面了
注意:-c(小写)产生的cookie和-D里面的cookie是不一样的。
使用cookie
很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的,因此我们需要使用保存的cookie信息。内置option: -b
# curl -b cookiec.txt https://www.nixonli.com
curl 模仿浏览器
有些网站需要使用特定的浏览器去访问他们,有些还需要使用某些特定的版本。curl内置option:-A可以让我们指定浏览器去访问网站
# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" https://www.nixonli.com
这样服务器端就会认为是使用IE8.0去访问的
curl 伪造referer(盗链)
很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了
curl中内置option:-e可以让我们设定referer
# curl -e "www.nixonli.com" http://mail.nixonli.com
这样就会让服务器其以为你是从www.nixonli.com点击某个链接过来的
curl 分块下载
有时候下载的东西会比较大,这个时候我们可以分段下载。使用内置option:-r
# curl -r 0-100 -o test1_part1.JPG https://www.nixonli.com/test1.JPG # curl -r 100-200 -o test1_part2.JPG https://www.nixonli.com/test1.JPG # curl -r 200- -o test1_part3.JPG https://www.nixonli.com/test1.JPG # cat test1_part* > test1.JPG
这样就可以查看test1.JPG的内容了
curl 通过ftp下载文件
curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法
# curl -O -u 用户名:密码 ftp://www.nixonli.com/test1.JPG # curl -O ftp://用户名:密码@www.nixonli.com/test1.JPG
显示下载进度条
# curl -# -O https://www.nixonli.com/test1.JPG
不会显示下载进度信息
# curl -s -O https://www.nixonli.com/test1.JPG
curl 断点续传
在windows中,我们可以使用迅雷这样的软件进行断点续传。curl可以通过内置option:-C同样可以达到相同的效果
如果在下载test1.JPG的过程中突然掉线了,可以使用以下的方式续传
# curl -C -O https://www.nixonli.com/test1.JPG
curl 上传文件
curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现
# curl -T test1.JPG -u 用户名:密码 ftp://www.nixonli.com/img/
这样就向ftp服务器上传了文件test1.JPG
curl 显示抓取错误
# curl -f https://www.nixonli.com/error
crul的官方网站

获取更多建站运营运维新知!互联网创业、前沿技术......
最新评论
水淀粉vdfv
有其他下载方式么,网站上的点击下载后没有任何反应,或者直接发给我一下?83835079@qq.com
你好,我的型号ELECOM WRC-X3200GST3,ARMv8 Processor rev 4构架,CPU mediatek/mt7622,找了很久没有找到
我的也是这样。一直无法确认ARCH架构,或是不支持。一直没办法用。不知道怎么办了
您好,现在安装上了,可是ssr plus+配置好节点也没用,一直都是未运行,节点是有效的; 另外那个passwall2一找开就提示"无法确认ARCH架构,或是不支持", 麻烦大佬帮忙看下是什么问题,谢谢!