curl
curl是一種命令行工具,作用是發(fā)出網(wǎng)絡(luò)請(qǐng)求,然后得到和提取數(shù)據(jù),顯示在"標(biāo)準(zhǔn)輸出"(stdout)上面。
它支持多種協(xié)議。
命令
基礎(chǔ):獲得源碼/headers/通信過(guò)程
#直接看源碼
curl www.sina.com
#保存到文件
curl -o [文件名] www.sina.com
#自動(dòng)跳轉(zhuǎn)(比如這個(gè)跳轉(zhuǎn)到了www.sina.com.cn)
curl -L www.sina.com
# 顯示http Headers信息連同網(wǎng)頁(yè)源代碼
curl -i www.sina.com
# 只顯示Headers不顯示網(wǎng)頁(yè)源代碼
curl -I www.sina.com
# 顯示整個(gè)通信過(guò)程
curl -v www.sina.com
#更詳細(xì)的通信過(guò)程
curl --trace [輸出到文件名稱] www.sina.com
curl --trace-ascii [輸出到文件名稱] www.sina.com
HTTP動(dòng)詞
#默認(rèn)是GET
curl example.com/form.cgi?data=xxx
#如果想替換成其他的動(dòng)詞,要用-X指定。POST:數(shù)據(jù)要和url分離
curl -X POST --data "data=xxx" example.com/form.cgi
curl -X POST www.example.com
curl -X DELETE www.example.com
#如果你的數(shù)據(jù)沒(méi)有經(jīng)過(guò)表單編碼,還可以讓curl為你編碼
curl -X POST--data-urlencode "date=April 1" example.com/form.cgi
#文件上傳:假設(shè)表單是這樣
#
# <form method="POST" enctype='multipart/form-data' action="upload.cgi">
# <input type=file name=upload>
# <input type=submit name=press value="OK">
# </form>
curl --form upload=@localfilename --form press=OK [URL]
HTTP headers
# Referer:你從哪里跳轉(zhuǎn)過(guò)來(lái)
curl --referer http://www.example.com http://www.example.com
#User-agent:用戶客戶端信息
curl --user-agent "[User Agent]" [URL]
curl -A "[User Agent]" [URL]
#cookie
curl --cookie "name=xxx" www.example.com
#發(fā)送cookie
curl -b "name=x" -b "age=y" www.example.com
#保存cookies到文件
curl -c [file] http://www.example.com
# 使用文件中的cookie進(jìn)行請(qǐng)求
curl -d [file] http://www.example.com
#認(rèn)證
curl --user name:password example.com
#增加一些header
curl --header "Content-Type:application/json" http://example.com
curl -H "Content-Type:application/json" http://example.com