curl 命令詳解

curl 命令詳解

一:curl簡介及語法

curl是一個命令行訪問URL的工具,作用是發出網絡請求,然後得到和提取數據,顯示在"標準輸出"(stdout)上面。可以用它構造http request報文,且可以解析服務器返回的http response,額外還支持cookie特性,可以用curl完成web瀏覽器的基本功能,curl還支持HTTPS/FTP/FTPS/TELNET/LDAP等協議。如下圖:

blob.png

[root@VM_110_98_centos ~]# curl --help

----------------------------------------------------------

省略輸出內容


[root@VM_110_98_centos ~]#curl --manual 查看模板和詳細用法

----------------------------------------------------------

省略輸出內容



常用選項:

-v 詳細輸出,包含請求和響應的首部

-o test 將指定curl返回保存爲test文件,內容從html/jpg到各種MIME類型文件

-O  把輸出寫到該文件中,保留遠程文件的文件名

-C 在保存文件時進行續傳

-x  ip:port 指定使用的http代理

-c <file> 保存服務器的cookie文件

-H <header:value>  爲HTTP請求設置任意header及值

-L 跟隨重定向

-S 顯示錯誤信息

-s 靜默模式,不輸出任何信息

-G 以get的方式發送數據

-f  連接失敗是不顯示http錯誤

-d 以post方式傳送數據

二:實例

1.只返回狀態碼

curl -I -m 15 -o /dev/null -s -w %{http_code} www.baidu.com

-I 僅測試HTTP頭信息

-m 15 最多查詢15s

-o /dev/null 屏蔽原有輸出信息

-s  靜默模式,不輸出任何東西

-w %{http_code} 控制額外輸出

2.自定義顯示文字和返回狀態碼

curl -I -m 15 -o /dev/null -s -w "我愛你:%{http_code}" www.baidu.com

3.抓取頁面內容到一個文件中(test文件不需要創建)

curl -o test.html www.baidu.com

blob.png

4. 後面的url要具體到某個文件,不然抓不下來,我們還可以用正則來抓取東西。

下圖是在百度中搜索這幾天比較熱門的李小璐事件爲例

blob.png

複製黏貼這個網址紅色箭頭的網址http://www.lutouwang.net/detail/17/1231/8jbutue9c.html

curl -O http://www.lutouwang.net/detail/17/1231/8jbutue9c.html

5. 通過--limit-rate選項對curl的最大網絡使用進行限制

curl --limit-rate 1000B -O http://www.lutouwang.net/detail/17/1231/8jbutue9c.html

blob.png

6. 在訪問需要授權的頁面時,可通過-u選項提供用戶名和密碼進行授權

通常的做法是在命令行只輸入用戶名,之後會提示輸入密碼,這樣可以保證在查看歷史命令記錄時不會將密碼泄露,本例以訪問svn服務器爲例。

curl -u 用戶名 svn服務器地址,之後輸入密碼即可看到目錄blob.png

7. 以CentOS 7.2版本使用curl一鍵安裝Docker腳本爲例

curl -sSL https://get.docker.com/ | sh (-s靜默模式,-S顯示錯誤,-L重定向,發送授權給其他主機)

-s和-S很好理解,怎麼知道一個網址要用到這個-L參數呢,簡單的截圖來說明 

圖片.png

上面有三個網址都是已經被重定向了,狀態碼顯示301,所以我們要加上-L參數。

8. 不管是在家裏還是在公司,很多時候都是在內網中,也就是說很多都是通過 NAT上網的,如果開發人員有需求,想知道他服務器的公網IP,可能有的朋友會說ip138.com,我們都知道現在服務器現在大多都是Linux系統,命令行下怎麼辦呢?下面是我們技術開發部的大神們分享的命令,我用我的內網虛擬機展示給大家。

1)web@rz13052:~$ curl ip.cn

當前 IP:36.110.230.14 來自:北京市 電信

2)web@rz13052:~$ curl ipinfo.io

{

  "ip": "36.110.230.14",

  "city": "Beijing",

  "region": "Beijing",

  "country": "CN",

  "loc": "39.9289,116.3883",

  "org": "AS23724 IDC, China Telecommunications Corporation"

}web@rz13052:~$

3)web@rz13052:~$ curl cip.cc  或者curl ip.cip.cc

IP      : 36.110.230.14

地址    : 中國  北京

 

數據二  : 北京市 | 電信

 

URL     : http://www.cip.cc/36.110.230.14

如果你在瀏覽器打開這個網址,可看到此命令的用法

blob.png

4)web@rz13052:~$ curl myip.ipip.net

當前 IP:36.110.230.14  來自於:中國 北京 北京  電信

5)web@rz13052:~$ curl ifconfig.me 這個沒下面第六條命令速度快

36.110.230.14

6)web@rz13052:~$ curl http://members.3322.org/dyndns/getip

36.110.230.14

總結下常用的我們就記住ip.cn和ifconfig.me就行,這個和Linux下的IP很相近。


附:官方文檔 https://curl.haxx.se/docs/manpage.html




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章