curl
curl
在 Linux 中 curl 是一个利用 URL 规则在命令行下工作的文件传输工具,可以说是一款很强大的 http 命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称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
:进度条显示当前的传送状态
简单使用:
直接获取url
指向的内容,如果是 HTTP 协议的 url,就是网页指向的 html
curl http://172.16.20.143:8080/application-web-1.0-SNAPSHOT/hello-servlet
由于安装 linux 的时候很多时候是没有安装桌面的,也意味着没有浏览器,因此这个方法也经常用于测试一台服务器是否可以到达一个网站。
保存 url 指向的内容
curl http://172.16.20.143:8080/application-web-1.0-SNAPSHOT/ >> ~/mainpage.html
:使用重定向保存
使用 -o(小写) 保存内容,文件保存地址必须存在,否则报错
curl -o ~/outpage.html http://172.16.20.143:8080/application-web-1.0-SNAPSHOT/hello-servlet
使用 -O(大写) 保存网页中的文件,注意不能指定文件地址,默认保存在命令执行目录,要注意这里后面的 url 路径要正确,而且要具体到某个文件,不然抓不下来
curl -O http://172.16.20.143:8080/application-web-1.0-SNAPSHOT/aaa.js
测试网页返回值,这是很常见的测试网站是否正常的用法
curl -o /dev/null -s -w %{http_code} http://172.16.20.143:8080/application-web-1.0-SNAPSHOT/hello-servlet
指定 proxy 服务器以及其端口
比如我本地一直在用的SSR
的代理,地址是127.0.0.1:1080
,可以用来访问 Google,那是不是可以配置一下让虚拟机使用宿主机的代理然后让虚拟机可以上 Google 呢?
我试了一下:
curl -x 172.16.20.1:1080 http://www.baidu.com
失败
还有其他功能:
-
保存 http 的 response 里面的 cookie 信息。内置 option:
-c
(小写) -
保存 http 的 response 里面的 header 信息。内置 option:
-D
-
模仿浏览器(指定 request header 信息)
-
伪造 referer(盗链)
-
下载文件
-
利用 curl 下载文件。
-
循环下载
-
下载重命名
-
分块下载
-
通过 ftp 下载文件
-
显示下载进度条
-
不会显示下载进度信息
-
断点续传
-
上传文件
-
显示抓取错误