Shell脚本编程--curl命令详解
⽤途说明curl是什么命令
curl命令是⼀个功能强⼤的⽹络⼯具,它能够通过http、ftp等⽅式下载⽂件,也能够上传⽂件。其实curl远不⽌前⾯所说的那些功能,⼤家可以通过man curl阅读⼿册页获取更多的信息。类似的⼯具还有wget。
curl命令使⽤了libcurl库来实现,libcurl库常⽤在C程序中⽤来处理HTTP请求,curlpp是libcurl的⼀个C++封装,这⼏个东西可以⽤在抓取⽹页、⽹络监控等⽅⾯的开发,⽽curl命令可以帮助来解决开发过程中遇到的问题。
常⽤参数
-b/–cookie <name=string/file> cookie字符串或⽂件读取位置,使⽤option来把上次的cookie信息追加到http request⾥⾯去。
-c/–cookie-jar 操作结束后把cookie写⼊到这个⽂件中
-C/–continue-at 断点续转
-d/–data HTTP POST⽅式传送数据
-D/–dump-header 把header信息写⼊到该⽂件中
-s/–slient 减少输出的信息,⽐如进度
-o/–output 指定输出⽂件名称
-I/–head 仅返回头部信息,使⽤HEAD请求
-O:按照服务器上的⽂件名,⾃动存在本地
-r/–range 检索来⾃HTTP/1.1或FTP服务器字节范围
-T/–upload-file 上传⽂件
使⽤⽰例
1,抓取页⾯内容到⼀个⽂件中
由于A/B下的⽂件名都是001,,201,下载下来的⽂件重名,这样,⾃定义出来下载下来的⽂件
名,就变成了这样:原来: A/001.JPG —-> 下载后: 001-A.JPG 原来: B/001.JPG ---> 下载后: 001-B.JPG
2,⽤-O(⼤写的),后⾯的url要具体到某个⽂件,不然抓不下来。还可以⽤正则来抓取东西
运⾏结果如下:
% Total    % Received % Xferd  Average Speed  Time    Time    Time  Current
Dload  Upload  Total  Spent    Left  Speed
100  1575  100  1575    0    0  14940      0 --:--:-- --:--:-- --:--:-- 1538k
会在当前执⾏⽬录中⽣成⼀张bdlogo.gif的图⽚。
3,模拟表单信息,模拟登录,保存cookie信息
4,模拟表单信息,模拟登录,保存头信息
-c(⼩写)产⽣的cookie和-D⾥⾯的cookie是不⼀样的。
5,使⽤cookie⽂件
6,断点续传,-C(⼤写)
7,传送数据,最好⽤登录页⾯测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功
8,显⽰抓取错误,下⾯这个例⼦,很清楚的表明了。
curl: (22) The requested URL returned error: 404
9,伪造来源地址,有的⽹站会判断,请求来源地址,防⽌盗链。
10,当我们经常⽤curl去搞⼈家东西的时候,⼈家会把你的IP给屏蔽掉的,这个时候,我们可以⽤代理
11,⽐较⼤的东西,我们可以分段下载
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 101 100 101 0 0 105 0 --:–:-- --:–:-- --:–:-- 0
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 101 100 101 0 0 57 0 0:00:01 0:00:01 --:–:-- 0
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 104k 100 104k 0 0 52793 0 0:00:02 0:00:02 --:–:-- 88961
[root@xi mytest]# ls |grep part | xargs du -sh
4.0K one.part1
112K three.part3
4.0K two.part2
⽤的时候,把他们cat⼀下就OK,cat img.part* >img.jpg
12,不会显⽰下载进度信息
13,显⽰下载进度条
>>>>>>>>>>>>>># 100.0% 14,通过ftp下载⽂件
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
101 1934 101 1934 0 0 3184 0 --:–:-- --:–:-- --:–:-- 7136
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
101 1934 101 1934 0 0 3184 0 --:–:-- --:–:-- --:–:-- 7136
或者⽤下⾯的⽅式
[xifj@Xi ~]$ curl -O ftp://⽤户名:密码@ip:port/demo/curtain/bbstudy_files/style.css
[xifj@Xi ~]$ curl -O ftp://⽤户名:密码@ip:port/demo/curtain/bbstudy_files/style.css
15,通过ftp上传
[xifj@Xi ~]$ curl -T test.sql ftp://⽤户名:密码@ip:port/demo/curtain/bbstudy_files/
[xifj@Xi ~]$ curl -T test.sql ftp://⽤户名:密码@ip:port/demo/curtain/bbstudy_files/
15,模拟浏览器头
16,PUT、GET、POST
这样⼀个HTTP表单,我们要⽤curl进⾏模拟,就该是这样的语法: curl -F upload=@localfile -F nick=go cgi2.jp/~zz/i

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论