神器之CURL

什么是CURL

curl是利用URL語法在命令行方式下工作的開源文件傳輸工具.它被廣泛應用在Unix\多種Linux發(fā)行版中,并且有DOS和Win32\Win64下的移植版本.

常見用法

1.獲取頁面內(nèi)容

root@amu:/Data/apps# curl 127.0.0.1/login.php
<!DOCTYPE html>
<html>
<head>
    <title>login</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
</head>
<body>
    歡迎注冊募舟,請輸入用戶名和密碼  
    <form method="post" action="register.php">  
        <p>姓名:<input type="text" name="name" size="10"></p>  
        <p>密碼:<input type="password" name="password" size="10"></p>  
        <p>
            <input type="submit" value="確定">  
            <input type="reset" value="取消">
         </p>  
    </form> 
    <a >微信連Wi-Fi</a>
</body>
</html>

當我們不加任何選修使用curl時,默認會發(fā)送GET請求來獲取鏈接內(nèi)容到標準輸出

2.顯示HTTP頭

root@amu:/Data/apps# curl -I 127.0.0.1
HTTP/1.1 302 Found
Server: nginx/1.13.8
Date: Thu, 10 May 2018 03:47:56 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.1.13
Location: http://127.0.0.1/login.php

也可以同時顯示HTTP頭和文件內(nèi)容,使用-i選項
curl -i 127.0.0.1

3.將內(nèi)容保存到文件

root@amu:/Data/apps# curl -o index.html 127.0.0.1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   969    0   969    0     0   429k      0 --:--:-- --:--:-- --:--:--  473k
root@amu:/Data/apps# ls
index.html  nginx1.13.8  openresty  php7.1.13
root@amu:/Data/apps# curl -O 127.0.0.1/index.php
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   969    0   969    0     0   441k      0 --:--:-- --:--:-- --:--:--  473k
root@amu:/Data/apps# ls
index.html  index.php  nginx1.13.8  openresty  php7.1.13

兩種用法:-o 和 -O
-o:結(jié)果會被保存到命令行中提供的文件名
-O:URL中的文件名會被用作保存輸出的文件名

4.同時下載多個文件

curl -O 127.0.0.1/index.php -O 127.0.0.1/login.php
當然用-o也可以

5.使用 -L 跟蹤重定向

從第二個例子中我們可以看到網(wǎng)站給我們返回的狀態(tài)碼是302,說明網(wǎng)站跳轉(zhuǎn)了,在這種情況下就無法獲取我們想要的網(wǎng)頁內(nèi)容,這是我們就可以用-L選項了.

root@amu:/Data/apps# curl -L 127.0.0.1
<!DOCTYPE html>
<html>
<head>
    <title>login</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
</head>
<body>
    歡迎注冊蹋宦,請輸入用戶名和密碼  
    <form method="post" action="register.php">  
        <p>姓名:<input type="text" name="name" size="10"></p>  
        <p>密碼:<input type="password" name="password" size="10"></p>  
        <p>
            <input type="submit" value="確定">  
            <input type="reset" value="取消">
         </p>  
    </form> 
    <a >微信連Wi-Fi</a>
</body>
</html>

6.使用 -A 自定義 USER-Agent

curl --user-agent "[User Agent]" [URL]
curl --user-agent "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7" www.baidu.com

7.使用 -H 自定義 header

curl -H 'Host: 192.168.199.4' -H 'Accept-Language:es' http://127.0.0.1

8.使用 Cookie

#保存http的responses里面的Cookie信息
curl -c cookiec.txt http://www.baidu.com
#保存http的response里面的header信息
curl -D cookied.txt http://www.baidu.com
#使用cookie
curl -b cookiec.txt http://www.baidu.com

9.傳遞數(shù)據(jù)

http協(xié)議有各種請求的方法,如:GET\POST\HEADD\PUT等.這些方法curl都支持.使用-X指定請求方法,沒有指定的情況下,默認使用GET請求方法.POSTPUT方法提交的數(shù)據(jù)用-d參數(shù)指定

//GET方法
curl http://127.0.0.1?age=2
//HEAD方法,獲取響應的頭部信息
curl -I http://127.0.0.1
// POST 方法
curl -X POST http://127.0.0.1 -d "name=admin&pwd=123"
// PUT 方法
curl -X PUT http://127.0.0.1 -d '{"name":"admin"}'

10.查看詳細請求和響應過程

root@amu:/Data/apps# curl -v 127.0.0.1
* Rebuilt URL to: 127.0.0.1/
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: 127.0.0.1
> User-Agent: curl/7.47.0
> Accept: */*
> 
< HTTP/1.1 302 Found
< Server: nginx/1.13.8
< Date: Thu, 10 May 2018 04:41:13 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: PHP/7.1.13
< Location: http://127.0.0.1/login.php
< 
<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: HTTP_REFERER in /Data/apps/nginx1.13.8/html/index.php on line <i>66</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0002</td><td bgcolor='#eeeeec' align='right'>373888</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='/Data/apps/nginx1.13.8/html/index.php' bgcolor='#eeeeec'>.../index.php<b>:</b>0</td></tr>
</table></font>
* Connection #0 to host 127.0.0.1 left intact

11.查看請求或響應的具體某一指標

root@amu:/Data/apps# curl -s -w "%{time_total}\n%{size_download}\n" https://github.com -o /dev/null
7.514
54697
root@amu:/Data/apps# curl -w %{http_code} https://github.com -o /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 54697    0 54697    0     0  11389      0 --:--:--  0:00:04 --:--:-- 13515

12.完成認證

curl --basic --user 'admin:123' http://example.com/

13文件上傳

curl --form upload=@localfilename --form press=OK [URL]
curl http://api.example.com/profile -F "image=@profile.jpg"
curl http://api.example.com/profile -F "image=@profile.jpg" -F "phone=123456789"

其他一些用法

curl --trace output.txt www.sina.com
curl --referer http://www.example.com http://www.example.com

歡迎關注個人微信公眾號:

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末氏淑,一起剝皮案震驚了整個濱河市榄笙,隨后出現(xiàn)的幾起案子舶得,更是在濱河造成了極大的恐慌尝抖,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窄潭,死亡現(xiàn)場離奇詭異春宣,居然都是意外死亡,警方通過查閱死者的電腦和手機嫉你,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門月帝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人幽污,你說我怎么就攤上這事嚷辅。” “怎么了距误?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵簸搞,是天一觀的道長扁位。 經(jīng)常有香客問我,道長趁俊,這世上最難降的妖魔是什么贤牛? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮则酝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闰集。我一直安慰自己沽讹,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布武鲁。 她就那樣靜靜地躺著爽雄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沐鼠。 梳的紋絲不亂的頭發(fā)上挚瘟,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音饲梭,去河邊找鬼乘盖。 笑死,一個胖子當著我的面吹牛憔涉,可吹牛的內(nèi)容都是我干的订框。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼兜叨,長吁一口氣:“原來是場噩夢啊……” “哼穿扳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起国旷,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤矛物,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后跪但,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體履羞,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年特漩,在試婚紗的時候發(fā)現(xiàn)自己被綠了吧雹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡涂身,死狀恐怖雄卷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛤售,我是刑警寧澤丁鹉,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布妒潭,位于F島的核電站,受9級特大地震影響揣钦,放射性物質(zhì)發(fā)生泄漏雳灾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一冯凹、第九天 我趴在偏房一處隱蔽的房頂上張望谎亩。 院中可真熱鬧,春花似錦宇姚、人聲如沸匈庭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阱持。三九已至,卻和暖如春魔熏,著一層夾襖步出監(jiān)牢的瞬間衷咽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工蒜绽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镶骗,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓躲雅,卻偏偏與公主長得像卖词,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吏夯,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359