curl使用小记(一)
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"