1. 概述
curl也就是command line tool and library for transferring data with URLs的縮寫,也就是一種通過URL傳輸數據的命令行工具和庫。可以直接通過curl命令行工具進行url協議通迅的相關操作,也可以通過其libcurl庫的接口,在自己的程序中進行相同的操作。其支持的協議非常全,而且提供了C的接口,所以很多庫和軟件都使用libcurl作爲url數據傳輸的底層庫。
2. 實例
libcurl庫的使用還是很繁瑣的,所有的操作都可以先用命令行工具curl驗證一下。如果是從源代碼編譯的curl,那麼兩者都會編譯。推薦先找到已經編譯好的curl來使用,因爲curl對於https的支持是需要ssl的,編譯器來稍微有點麻煩。這裏主要論述一下curl的使用。
2.1. 訪問網頁
curl最主要的功能就是訪問網頁了,不過因爲是命令行窗口,所以訪問的網頁的源代碼:
curl https://www.baidu.com
注意這裏我訪問的是https,當我訪問http的時候獲取的源代碼有點問題,可能是現在很多網站對http的訪問會遷移到https造成的。
2.2. 顯示頭信息
添加-i
參數,就顯示http response的頭信息:
curl -i https://www.baidu.com
2.3. 保存網頁
訪問的網頁可以通過-o
參數保存下來:
curl https://www.baidu.com -o 1.html
2.4. 下載圖片
使用同樣的方法可以下載網絡上的圖片:
curl https://cn.bing.com/th?id=OHR.GrandsCausses_EN-CN3335882379_800x480.jpg -o 1.jpg
利用這個方法可以通過curl來下載網絡上的一些資源。
2.5. 用戶代理設置
用戶代理設置也就是請求頭的User-Agent,有的網站服務器會屏蔽一些不被允許的客戶端去訪問它,這個時候可以通過設置User-Agent來訪問(提示不要做非法請求,惡意爬蟲是違法的):
curl https://www.sina.com.cn --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
2.6. 代理設置
curl還可以設置通過代理來訪問特定的服務器,比如說某些公司的內部網絡。代理也包含了很多繁複的種類和知識,我這裏只記錄一種簡單的無需賬號密碼的http代理,簡單的通過-x
或者--proxy
設置地址及端口即可:
curl --proxy 127.0.0.1:1080 https://www.google.com --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"