博客 / Linux/ linux curl命令用法示例二

linux curl命令用法示例二

linux curl命令用法示例二

1. 抓取页面内容到文件

使用 -o 选项可以将 URL 内容保存到指定文件。

curl -o home.html http://www.baidu.com

上述命令将百度首页内容保存到当前目录的 home.html 文件中。

对于批量下载且需要自定义文件名的情况,可以使用 # 占位符。例如:

curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{A,B}/[001-201].JPG

此命令会下载两个目录(A 和 B)中编号 001 到 201 的 JPG 文件。下载后,文件命名规则为 序号-目录名.JPG(例如 001-A.JPG001-B.JPG),从而避免重名。

2. 使用 -O 选项下载文件

使用 -O(大写 O)选项,可以 URL 中的文件名将内容保存到当前目录。URL 必须指向具体的文件。

curl -O http://www.baidu.com/img/bdlogo.gif

执行后会在当前目录生成 bdlogo.gif 文件。

同样支持使用正则表达式进行批量下载:

curl -O http://example.com/screen[1-10].JPG

此命令会下载 screen1.jpgscreen10.jpg 十个文件。

3. 模拟登录与 Cookie 管理

保存 Cookie 到文件

使用 -c(小写)选项可以将服务器返回的 Cookie 保存到文件。

curl -c ./cookie_c.txt -F log=username -F pwd=password http://example.com/wp-login.php

保存 HTTP 响应头到文件

使用 -D 选项可以将完整的 HTTP 响应头(包括 Set-Cookie)保存到文件。

curl -D ./cookie_D.txt -F log=username -F pwd=password http://example.com/wp-login.php

注意-c 保存的是解析后的 Cookie 数据,而 -D 保存的是原始的 HTTP 头信息,两者格式不同。

使用 Cookie 文件访问

使用 -b 选项可以读取之前保存的 Cookie 文件,用于维持登录状态访问后续页面。

curl -b ./cookie_c.txt http://example.com/wp-admin

4. 断点续传

使用 -C - 选项可以实现断点续传。如果文件已部分下载,curl 会从中断处继续下载。

curl -C - -O http://www.baidu.com/img/bdlogo.gif

5. 发送 POST 数据

使用 -d 选项可以发送 POST 请求数据。常用于模拟表单提交。

curl -d "log=username" http://example.com/wp-login.php

服务器处理后会返回响应内容,可用于验证提交是否成功。

6. 显示错误信息

使用 -f 选项时,如果服务器返回 HTTP 错误状态码(如 404、500),curl 会以非零状态退出并显示简洁的错误信息。

curl -f http://example.com/asdf
# 输出示例:curl: (22) The requested URL returned error: 404

若不使用 -f 选项,curl 会输出服务器返回的错误页面 HTML 内容。

7. 伪造 Referer

使用 -e--referer 选项可以设置 HTTP Referer 头,用于绕过一些防盗链检查。

curl -e http://localhost http://example.com/wp-login.php

8. 使用代理

当 IP 被限制时,可以通过 -x 选项使用代理服务器。

curl -x 192.168.1.1:8080 -o home.html http://example.com

9. 分段下载大文件

使用 -r 选项可以指定下载文件的字节范围,用于分段下载或并行下载。

# 下载 0-100 字节
curl -r 0-100 -o img.part1 http://example.com/largefile.jpg
# 下载 100-200 字节
curl -r 100-200 -o img.part2 http://example.com/largefile.jpg
# 下载从 200 字节到文件末尾
curl -r 200- -o img.part3 http://example.com/largefile.jpg

下载完成后,可以使用 cat 命令合并文件:

cat img.part* > complete_img.jpg

10. 控制输出信息

静默模式

使用 -s 选项可以隐藏进度信息和错误信息。

curl -s -o logo.jpg http://www.baidu.com/img/bdlogo.gif

显示进度条

使用 -0(数字零)选项强制使用 HTTP/1.0 协议,并会显示一个简单的进度条。

curl -0 http://www.baidu.com/img/bdlogo.gif

11. FTP 操作

FTP 下载

使用 -u 选项指定用户名和密码进行 FTP 下载。

curl -u username:password -O ftp://example.com/demo/style.css
# 或使用 URL 内嵌凭证的格式
curl -O "ftp://username:password@example.com/demo/style.css"

FTP 上传

使用 -T 选项上传文件到 FTP 服务器。

curl -T localfile.sql "ftp://username:password@example.com/demo/"

12. 设置 HTTP 头部

模拟浏览器 User-Agent

使用 -A 选项可以设置 User-Agent 字符串。

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" -o page.html http://www.baidu.com

13. HTTP 方法:GET、POST 与 PUT

GET 请求

GET 请求的参数通常附加在 URL 后。

curl "http://example.com/login.cgi?user=nick&password=12345"

POST 请求

使用 -d 选项发送 POST 请求体数据。

curl -d "user=nick&password=12345" http://example.com/login.cgi

PUT 请求

使用 -T 选项可以发送 PUT 请求,通常用于上传文件。

curl -T localfile http://example.com/upload.cgi

上传文件(multipart/form-data)

模拟包含文件上传的表单,需使用 -F 选项。

curl -F "upload=@localfile" -F "nick=go" http://example.com/up_file.cgi

其中 @localfile 表示上传名为 localfile 的文件,字段名 upload 需与表单定义一致。

发表评论

您的邮箱不会公开。必填项已用 * 标注。