Linux中curl详解
一、简介
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具
二、命令详解
1、常用命令
1.1 -A和-H
1 | # 不带有任何参数时,curl 就是发出 GET 请求。 |
1.2 -b 参数用来向服务器发送 Cookie
1 | # 生成一个标头Cookie: foo=bar,向服务器发送一个名为foo、值为bar的 Cookie。 |
1.3 -c参数将服务器设置的 Cookie 写入一个文件
1 | # 将服务器的 HTTP 回应所设置 Cookie 写入文本文件cookies.txt。 |
1.4 -d 参数 和 --data-urlencode
1 | # -d参数用于发送 POST 请求的数据体。 |
1.5 -H参数添加 HTTP 请求的标头
1 | # 添加 HTTP 标头Accept-Language: en-US。 |
1.6 显示 HTTP 头
1 | # 只想要显示 HTTP 头,而不显示文件内容,可以使用 -I 选项 |
1.7 -L参数会让 HTTP 请求跟随服务器的重定向
curl 默认不跟随重定向,如果直接使用 curl 打开某些被重定向后的链接,这种情况下就无法获取我们想要的网页内容
1 | # 默认会得到以下错误 |
1.8 保存内容
1 | # 使用linux的重定向功能保存 |
1.9 -F参数用来向服务器上传二进制文件
1 | # 给 HTTP 请求加上标头Content-Type: multipart/form-data,然后将文件photo.png作为file字段上传。 |
1.10 -k参数指定跳过 SSL 检测
1 | # 不会检查服务器的 SSL 证书是否正确 |
2、curl的下载
2.1 curl的内置option:-O(大写)保存网页中的文件
1 | # 这里后面的url要具体到某个文件,不然抓不下来 |
2.2 循环下载
1 | # 有时候下载图片可以能是前面的部分名称是一样的,就最后的尾椎名不一样,这样就会把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下来 |
2.3 下载重命名
1 | # 这样会被覆盖,这样就需要对文件进行重命名(这是错误示例) |
2.4 分块下载
1 | # 有时候下载的东西会比较大,这个时候我们可以分段下载。使用内置option:-r |
2.5 通过ftp下载文件
1 | # curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法 |
2.6 显示/不显示下载进度条
1 | curl -# -O http://www.linux.com/dodo1.JPG |
2.7 断点续传
1 | # 在windows中,我们可以使用迅雷这样的软件进行断点续传。curl可以通过内置option:-C同样可以达到相同的效果。如果在下载dodo1.JPG的过程中突然掉线了,可以使用以下的方式续传 |
3、其他命令
3.1 测试网页返回值
1 | # 在脚本中,这是很常见的测试网站是否正常的用法,-w 指定输出内容 |
3.2 指定proxy服务器以及其端口
1 | # 很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用内置option:-x来支持设置代理 |
3.3 保存http的response里面的header信息
1 | # 内置option: -D |
3.4 伪造referer(盗链)
1 | # 很多服务器会检查http访问的referer从而来控制访问。 |
3.5 上传文件
1 | # curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现 |
3.6 显示抓取错误
1 | # -w 指定输出内容 |
参考: