LinuxShell脚本编程--curl命令详解
⽤途说明
curl命令是⼀个功能强⼤的⽹络⼯具,它能够通过http、ftp等⽅式下载⽂件,也能够上传⽂件。其实curl远不⽌前⾯所说的那些功能,⼤家可以通过man curl阅读⼿册页获取更多的信息。类似的⼯具还有wget。
curl命令使⽤了libcurl库来实现,libcurl库常⽤在C程序中⽤来处理HTTP请求,curlpp是libcurl的⼀个C++封装,这⼏个东西可以⽤在抓取⽹页、⽹络监控等⽅⾯的开发,⽽curl命令可以帮助来解决开发过程中遇到的问题。
常⽤参数
curl命令参数很多,这⾥只列出我曾经⽤过、特别是在shell脚本中⽤到过的那些。
-A:随意指定⾃⼰这次访问所宣称的⾃⼰的浏览器信息
-b/--cookie <name=string/file> cookie字符串或⽂件读取位置,使⽤option来把上次的cookie信息追加到http request⾥⾯去。
-c/--cookie-jar <file> 操作结束后把cookie写⼊到这个⽂件中
-C/--continue-at <offset> 断点续转
-d/--data <data> HTTP POST⽅式传送数据
-D/--dump-header <file> 把header信息写⼊到该⽂件中
-F/--form <name=content> 模拟http表单提交数据
-v/--verbose ⼩写的v参数,⽤于打印更多信息,包括发送的请求信息,这在调试脚本是特别有⽤。
-m/--max-time <seconds> 指定处理的最⼤时长
-H/--header <header> 指定请求头参数
curl是什么命令-s/--slient 减少输出的信息,⽐如进度
--connect-timeout <seconds> 指定尝试连接的最⼤时长
-x/--proxy <proxyhost[:port]> 指定代理服务器地址和端⼝,端⼝默认为1080
-
T/--upload-file <file> 指定上传⽂件路径
-o/--output <file> 指定输出⽂件名称
--retry <num> 指定重试次数
-e/--referer <URL> 指定引⽤地址
-I/--head 仅返回头部信息,使⽤HEAD请求
-u/--user <user[:password]>设置服务器的⽤户和密码
-O:按照服务器上的⽂件名,⾃动存在本地
-r/--range <range>检索来⾃HTTP/1.1或FTP服务器字节范围
-T/--upload-file <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
  <HTML><HEAD><TITLE>404,not found</TITLE>
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

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

发表评论