您的位置:首页 > 运维架构 > Shell

shell中curl 用法详解 (二)

2017-07-27 18:28 281 查看

shell中curl 用法详解 (二)

1. 基本用法

##基本用法(配合sed/awk/grep)
$curl http: //bpsky.net

##下载保存
$curl http://bpsky.net > index.html
$curl -o index.html http://bpsky.net $curl -O http://bpsky.net/target.tar.gz 
##通过代理
$curl -x 123.45.67.89:1080 -o page.html http://bpsky.net 
##保存cookie
$curl -x 123.45.67.89:1080 -o page1.html -D cookie0001.txt http://bpsky.net 
##使用cookie
$curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://bpsky.net 
##模仿浏览器
$curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x123.45.67.89:1080 -o page.html -D cookie0001.txt http://bpsky.net 
##伪造referer
$curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x123.45.67.89:1080 -e"mail.yahoo.com" -o page.html -D cookie0001.txt http://bpsky.net 
##循环下载
$curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG 
##循环(匹配)下载
$curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG  # >like zzh/001.JPG

##循环(引用)下载
$curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG # like >001_zzh.jpg

##断点续传
$curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG 
##分块下载
$curl -r  0 -10240  -o "zhao.part1"  http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
$curl -r 10241 -20480  -o "zhao.part1"  http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
$curl -r 20481 -40960  -o "zhao.part1"  http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
$curl -r 40961 - -o  "zhao.part1"  http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 ...
$cat zhao.part* > zhao.mp3

##GET 上传
$curl http://www.yahoo.com/login.cgi?user=nickwolfe&password=12345 
##POST 上传
$curl -d "user=nickwolfe&password=12345" http://www.yahoo.com/login.cgi 
##POST 文件上传
$curl -F upload= $localfile  -F $btn_name=$btn_value http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi[/code] 

2. 参数详解

3. 常用curl实例

1,抓取页面内容到一个文件中

[root@10.10.90.97 ~]# curl -o home.html http://www.sina.com.cn

2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西

[root@10.10.90.97 ~]# curl -O http://www.it415.com/czxt/linux/25002_3.html

3,模拟表单信息,模拟登录,保存cookie信息

[root@10.10.90.97 ~]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=** http://blog.51yip.com/wp-login.php

4,模拟表单信息,模拟登录,保存头信息

[root@10.10.90.97 ~]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=** http://blog.51yip.com/wp-login.php

-c(小写)产生的cookie和-D里面的cookie是不一样的。

5,使用cookie文件

[root@10.10.90.97 ~]# curl -b ./cookie_c.txt http://blog.51yip.com/wp-admin

6,断点续传,-C(大写的)

[root@10.10.90.97 ~]# curl -C -O http://www.sina.com.cn

7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功

[root@10.10.90.97 ~]# curl -d log=aaaa http://blog.51yip.com/wp-login.php

8,显示抓取错误

[root@10.10.90.97 ~]# curl -f http://www.sina.com.cn/asdf

curl: (22) The requested URL returned error: 404

[root@10.10.90.97 ~]# curl http://www.sina.com.cn/asdf

<HTML><HEAD><TITLE>404,not found</TITLE>

。。。。。。。。。。。。

9,伪造来源地址,有的网站会判断,请求来源地址

[root@10.10.90.97 ~]# curl -e http://localhost http://www.sina.com.cn

10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理

[root@10.10.90.97 ~]# curl -x 10.10.90.83:80 -o home.html http://www.sina.com.cn

11,比较大的东西,我们可以分段下载

[root@10.10.90.97 ~]# curl -r 0-100 -o img.part1 http://i2.f.itc.cn/thumb/180/bj/6018/b_60178154.jpg

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 101 100 101 0 0 1926 0 –:–:– –:–:– –:–:– 0

[root@10.10.90.97 ~]# curl -r 100-200 -o img.part2 http://i2.f.itc.cn/thumb/180/bj/6018/b_60178154.jpg

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 101 100 101 0 0 3498 0 –:–:– –:–:– –:–:– 98k

[root@10.10.90.97 ~]# curl -r 200- -o img.part3 http://i2.f.itc.cn/thumb/180/bj/6018/b_60178154.jpg

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 13515 100 13515 0 0 154k 0 –:–:– –:–:– –:–:– 280k

[root@10.10.90.97 ~]# ll |grep img.part

-rw-r–r– 1 root root 101 Jan 24 10:59 img.part1

-rw-r–r– 1 root root 101 Jan 24 11:00 img.part2

-rw-r–r– 1 root root 13515 Jan 24 11:00 img.part3

用的时候,把他们cat一下就OK了,cat img.part* >img.jpg

12,不显示下载进度信息

[root@10.10.90.97 ~]# curl -s -o aaa.jpg

13,显示下载进度条

[root@10.10.90.97 ~]# curl -# -O http://www.it415.com/czxt/linux/25002_3.html
######################################################################## 100.0%

14,通过ftp下载文件

[root@10.10.90.97 ~]# curl -u 用户名:密码 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

101 1934 101 1934 0 0 3184 0 –:–:– –:–:– –:–:– 7136

或者用下面的方式

[root@10.10.90.97 ~]# curl -O ftp://xukai:test@192.168.242.144:21/www/focus/enhouse/index.php

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 87518 100 87518 0 0 2312k 0 –:–:– –:–:– –:–:– 11.5M

15,通过ftp上传

[root@10.10.90.97 ~]# curl -T xukai.php ftp://xukai:test@192.168.242.144:21/www/focus/enhouse/

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 87518 0 0 100 87518 0 2040k –:–:– –:–:– –:–:– 8901k

4. 使用事例

使用事例:
#!/bin/bash
2 while read LINE
3 do
4   curl="$LINE"
5   echo -n  "$LINE "
6   /usr/bin/curl -s -o /dev/null -w %{http_code}"\\n" $curl
7   if [ "$http_code" == "200" ];then
8       echo  "$LINE   请求失败"
9   fi
10 done < a.log

a.log的内容如下:
1 http://10.10.10.30:51002/clearUserCache4Redis?userId=121 2 http://10.10.10.30:51002/clearUserCache4Redis?userId=123123 3 http://10.10.10.30:51002/clearUserCache4Redis?userId=12312312 4 http://10.10.10.30:51002/clearUserCache4Redis?userId=12312312 5 http://10.10.10.30:51002/clearUserCache4Redis?userId=123123
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  curl