curl也就是command line tool and library for transferring data with URLs的缩写,也就是一种经过URL传输数据的命令行工具和库。能够直接经过curl命令行工具进行url协议通迅的相关操做,也能够经过其libcurl库的接口,在本身的程序中进行相同的操做。其支持的协议很是全,并且提供了C的接口,因此不少库和软件都使用libcurl做为url数据传输的底层库。html
libcurl库的使用仍是很繁琐的,全部的操做均可以先用命令行工具curl验证一下。若是是从源代码编译的curl,那么二者都会编译。推荐先找到已经编译好的curl来使用,由于curl对于https的支持是须要ssl的,编译器来稍微有点麻烦。这里主要论述一下curl的使用。linux
curl最主要的功能就是访问网页了,不过由于是命令行窗口,因此访问的网页的源代码:服务器
curl https://www.baidu.com
注意这里我访问的是https,当我访问http的时候获取的源代码有点问题,多是如今不少网站对http的访问会迁移到https形成的。网络
添加-i
参数,就显示http response的头信息:curl
curl -i https://www.baidu.com
访问的网页能够经过-o
参数保存下来:工具
curl https://www.baidu.com -o 1.html
使用一样的方法能够下载网络上的图片:网站
curl https://cn.bing.com/th?id=OHR.GrandsCausses_EN-CN3335882379_800x480.jpg -o 1.jpg
利用这个方法能够经过curl来下载网络上的一些资源。google
用户代理设置也就是请求头的User-Agent,有的网站服务器会屏蔽一些不被容许的客户端去访问它,这个时候能够经过设置User-Agent来访问(提示不要作非法请求,恶意爬虫是违法的):url
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"
curl还能够设置经过代理来访问特定的服务器,好比说某些公司的内部网络。代理也包含了不少繁复的种类和知识,我这里只记录一种简单的无需帐号密码的http代理,简单的经过-x
或者--proxy
设置地址及端口便可:.net
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"