网易首页 > 网易号 > 正文 申请入驻

堪称神器的命令行工具系列——curl

0
分享至

  作者 | 琼璞 责编 | 张红月

  来源 | 晚晴幽草轩(ID:nice-links)

  curl 非常有用的命令行工具库,用于通过 URL 传输数据。它的名字就是客户端(client)的 URL 工具的意思(command line tool and library for transferring data with URLs)。它的功能非常强大,命令行参数多达几十种。如能熟练使用,可以在很多应用场景下,发挥巨大的价值。本篇文章,就跟大家一起探讨下 curl 以及关于它的那些妙用。

  
关于 curl

  curl 是免费的开源软件,截至 2021 年 2 月,最近稳定版本是 7.75.0;它支持包括 FTP、HTTP、HTTPS、FTP、SCP,SFTP 数十种协议;curl 在命令行或脚本中用于传输数据。另外,它还用于汽车,电视机,路由器,打印机,音频设备,移动电话,平板电脑,机顶盒,媒体播放器中,并且是数千种每天影响数十亿人口的软件应用程序的互联网传输基础。如果您想了解更多关于 curl,可参见 curl.se 或 github.com/curl/curl。

  如何使用

  
curl https://nicelinks.site/

  如上命令,不带有任何参数时,curl 就是发出 GET 请求(向 nicelinks.site,服务器返回的内容会在命令行输出。当然,你还可以为其添加各种参数(如 -A、-b、-c、-d、-e、-F、-H等等),使得可以完成更多复杂任务;

  -e

  -e参数用来设置 HTTP 的标头Referer,表示请求的来源。

  curl -e 'https://nicelinks.site?q=quickapp' https://quickapp.lovejade.cn/

  上面命令将Referer标头设为https://nicelinks.site?q=quickapp。

  --limit-rate

  --limit-rate用来限制 HTTP 请求和回应的带宽,模拟慢网速的环境。下面命令将带宽限制在每秒 200K 字节。

  
curl --limit-rate 200k https://nicelinks.site
-F

  -F 参数用来向服务器上传二进制文件。如下命令会给 HTTP 请求加上标头Content-Type: multipart/form-data,然后将文件example.png作为file字段上传。

  
curl -F 'file=@example.png' https://example.com/files

  -F参数可以指定 MIME 类型。如下命令指定 MIME 类型为image/png,否则 curl 会把 MIME 类型设为application/octet-stream。

  curl -F 'file=@example.png;type=image/png' https://example.com/files

  -F 参数也可以指定文件名。在下面的命令中,原始文件名为 example.png,但是服务器接收到的文件名为profile.png。

  curl -F 'file=@example.png;filename=me.png' https://example.com/files

  上面,简单列举了些参数,以及具体作用;如果您想了解更多,可以参见:《cookbooks/curl》 或其中文翻译版文章 curl 的用法指南;对于 curl 参数及功能说明,可参见 curl - How To Use,或 curl 命令(中文说明)。

  curl 妙用

  查看网页源码

  直接在 curl 命令后加上网址,就可以看到网页源码。以及个人所维护的 倾城之链 来举例:

  
curl https://nicelinks.site/

  这里需要说明下的是,倾城之链前端基于 Vue 框架所构建的单页应用(SPA);且未采取 SSR 方式来解决 SEO 及首页渲染;因此您使用如上命令来请求,无论是针对哪些页面,得到的都是一段项目首页 html。为优化在非谷歌引擎 SEO 问题,基于 prerender,根据请求 url 是否携带_escaped_fragment_ 参数,走预渲染路线服务,从而解决 SEO;

  
curl https://nicelinks.site/\?_escaped_fragment_

  基于如上命令,所获得的内容,才是真正渲染后的网页源代码;关于在 Nginx 的配置,请参见如下代码(3000 端口,为 prerender 服务);

  
if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator") {set $prerender 1;}
if ($args ~ "_escaped_fragment_") {set $prerender 1;}
if ($prerender = 1) {set $prerender "127.0.0.1:3000";
rewrite .* /$scheme://$host$request_uri? break;proxy_pass http://$prerender;}

  如果您想保存文件到本地,只需添加 -o 参数即可,如下命令:

  curl -o your-file-name.html https://nicelinks.site/\?_escaped_fragment_
自动跳转

  很多网址是自动跳转(或重定向)。使用-L参数,curl 就会跳转到新的网址。

  
curl -L https://hacpai.com/

  如上命令,就会跳转到 ld246.com 新地址。需要补充说明的是,如果页面在前端,通过修改 location.href 来跳转,curl -L 这种方式,是无法“跟着“自动跳转的。

  显示通信过程

  通过 -v 参数,可以显示一次 http 通信的整个过程,包括端口连接和 http request 头信息,参见如下命令:

  
curl -v https://github.com

  如果你想要更详细的信息,可以通过下面的命令,查看更详细的通信过程:

  
curl --trace output.txt https://github.com# orcurl --trace-ascii output.txt https://github.com

  更进一步,如果想知道,一次传输中所消耗时间(毫秒数),添加 --trace-time 参数即可:

  curl --trace-ascii output.txt --trace-time https://github.com

  个人比较偏爱命令行工具,有时候也常用 curl 命令,来检查某网站是否能正常工作。

  发送表单信息

  发送表单信息,通常用 GET 和 POST 两种方法。GET方 法相对简单,只要把数据附在网址后面就行。

  
curl example.com/api/v1/profile?name=prfect-man

  POST 方法必须把数据和网址分开,curl 就要用到 --data 参数,参加如下示例:

  
curl -X POST --data "file=xyz" example.com/api/v1/upload

  如果你的数据没有经过表单编码,还可以让 curl 为你编码,参数是--data-urlencode:

  curl -X POST--data-urlencode "date=April 2" example.com/api/v1/timedate
文件上传

  在 倾城之链 ,先前收录了一个短链接文 + 件托管服务:THE NULL POINTER,其使用示例如下(当然,上传文件,在某些场景下,也可以 --form 来完成):

  
# 托管本地文件curl -F'file=@yourfile.png' https://0x0.st
# 托管线上文件curl -F'url=http://example.cn/img.jpg' https://0x0.st
调用服务缩短您指定的 url
curl -F'shorten=https://nicelinks.site' https://0x0.st
获取所在地 ip
curl -L tool.lu/ip# orcurl -L ip.tool.lu

  当前IP: 119.120.121.122

  归属地: 中国 xx省 oo市

  获取天气预报

  网站 wttr.in 支持命令行请求天气预报,具体使用示例如下:

  
curl wttr.in

  通过 curl 获取天气预报

  这样的服务,可谓比比皆是;当然,您也可以提供类似的服务,开放给同事、或者其他朋友,对效率很有帮助。而且,也无需提供前端界面,也能节省蛮多精力。倘若您需要些参考,How to Easily use cURL for HTTP Requests 是一篇值得推荐的短篇文章。

  下载文件并显示下载进度curl -# -o pretty-gril.jpg https://w.wallhaven.cc/full/9m/wallhaven-9mxjp8.jpg

  谈到下载这块儿,利用正则循环下载(文件名一样,部分尾号不同)、下载后重命名、分块儿下载、通过 ftp 下载等等,在此就不一一展开说明了。

  结尾

  当然,如果您从事编程开发,可以用到 curl 更多功能,比如,基于 curl 命令从文件中读取 cookie 信息、构造一个请求头、模拟 User Agent 字段、伪造 referer 等等,鉴于篇幅,就不在此展示说明;如果您有兴趣了解更多,可以参见 The Art Of Scripting HTTP Requests Using Curl;如果您有 curl 更多妙用方法,欢迎留言分享。

  
☞☞

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
俄央行宣布将从28日起停止在国内市场购买外币

俄央行宣布将从28日起停止在国内市场购买外币

环球网资讯
2024-11-28 06:39:13
张一鸣:十年面试2000人,我发现优秀的人,都有同一个特质!

张一鸣:十年面试2000人,我发现优秀的人,都有同一个特质!

小刀99
2024-11-27 22:23:22
快船大胜送奇才13连败:哈登43+7创17项纪录 壮举历史第一

快船大胜送奇才13连败:哈登43+7创17项纪录 壮举历史第一

醉卧浮生
2024-11-28 10:23:38
立陶宛求恢复外交关系,中国的反应侮辱性很强,立总统:太记仇了

立陶宛求恢复外交关系,中国的反应侮辱性很强,立总统:太记仇了

文理TALK
2024-11-28 10:41:53
多地“躺平式”干部被调整背后

多地“躺平式”干部被调整背后

中国新闻周刊
2024-11-28 09:20:12
曝泰国普吉岛大量店铺歧视中国游客,进店要先买“门票”,老板称:中国人太吵

曝泰国普吉岛大量店铺歧视中国游客,进店要先买“门票”,老板称:中国人太吵

小萝卜丝
2024-11-27 16:33:16
人社部定调!退休老人新增一项津贴,2025年起实施,你符合条件吗

人社部定调!退休老人新增一项津贴,2025年起实施,你符合条件吗

社保小达人
2024-11-28 11:50:02
前曼联临时主帅范尼找到工作了:失业17天再就业,执教英超前冠军

前曼联临时主帅范尼找到工作了:失业17天再就业,执教英超前冠军

侧身凌空斩
2024-11-28 07:28:37
让全体广东人又爱又恨的“土特产”,被网暴20年,硬控全国爸妈

让全体广东人又爱又恨的“土特产”,被网暴20年,硬控全国爸妈

毒sir财经
2024-11-27 21:58:16
突发!大众汽车出售新疆工厂和上海安亭测试场

突发!大众汽车出售新疆工厂和上海安亭测试场

沙雕小琳琳
2024-11-28 11:25:27
这次是霉变!山姆扇了860万会员一巴掌

这次是霉变!山姆扇了860万会员一巴掌

互联网品牌官
2024-11-28 12:13:20
大胜!哈登43+7+4历史第一,你再这样打下去,快船要给你1.5亿了

大胜!哈登43+7+4历史第一,你再这样打下去,快船要给你1.5亿了

巴叔GO聊体育
2024-11-28 10:28:20
最新批准!多地行政区划调整

最新批准!多地行政区划调整

鲁中晨报
2024-11-27 18:28:03
女孩应聘上海舞蹈家教,家长面试要求拍裸照,上课不允许穿内裤

女孩应聘上海舞蹈家教,家长面试要求拍裸照,上课不允许穿内裤

杨哥历史
2024-11-27 13:57:45
民警涉嫌猥亵继女案开庭,被害人坚持出庭:希望给自己前半生一个交代

民警涉嫌猥亵继女案开庭,被害人坚持出庭:希望给自己前半生一个交代

红星新闻
2024-11-28 13:00:25
广州地铁被曝5人发生肢体冲突,有老人倒地!警方称正在调查

广州地铁被曝5人发生肢体冲突,有老人倒地!警方称正在调查

南方都市报
2024-11-28 14:28:10
小S首谈跟许雅钧开放性关系:只要不再有一个小孩,惨遭对方拒绝!

小S首谈跟许雅钧开放性关系:只要不再有一个小孩,惨遭对方拒绝!

圈里的甜橙子
2024-11-28 08:37:13
性高潮真相曝光:你绝对想不到的秘密!

性高潮真相曝光:你绝对想不到的秘密!

智见派
2024-11-28 12:31:50
大本营有异动,杜特尔特搬援兵,16万菲军已站队,马科斯担忧成真

大本营有异动,杜特尔特搬援兵,16万菲军已站队,马科斯担忧成真

阿绐聊社会
2024-11-28 10:44:12
别再盯着俄乌了!南海要出大事,中方拦截失败?美防长曝出消息!

别再盯着俄乌了!南海要出大事,中方拦截失败?美防长曝出消息!

星辰故事屋
2024-11-27 20:41:32
2024-11-28 14:43:00
CSDN
CSDN
成就一亿技术人
25087文章数 241906关注度
往期回顾 全部

科技要闻

前实习生攻击模型训练,字节跳动索赔800万

头条要闻

干部被查 15年内7位"一把手"中已有6人被查

头条要闻

干部被查 15年内7位"一把手"中已有6人被查

体育要闻

梦回巅峰!哈登单节炸裂+7记三分轰43分

娱乐要闻

耗资1亿的新片被宋佳打蒙,片方亏大了

财经要闻

马光远:所有的房地产政策基本都到位了

汽车要闻

ID. CODE概念车/探岳L领衔 大众汽车携25款车亮相

态度原创

亲子
艺术
本地
房产
公开课

亲子要闻

老爸的爱让她随时吃上爆米花

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

本地新闻

云游中国|来伦布夏果感受充满Passion的人生

房产要闻

20万/套!不是首付,是一套!海口楼市,最炸裂的价格来了!

公开课

一块玻璃,如何改变人类世界?

无障碍浏览 进入关怀版