curl的使用指南
一、查看网页源码
直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短):
$ curl www.sina.com
如果要把这个网页保存下来,可以使用-o参数,这就相当于使用wget命令了。
$ curl -o [文件名] www.sina.com
二、自动跳转
有的网址是自动跳转的。使用-L参数,curl就会跳转到新的网址。
$ curl -L www.sina.com
键入上面的命令,结果就自动跳转为www.sina.com.cn。
三、显示头信息
-i参数可以显示http response的头信息,连同网页代码一起。
$ curl -i www.sina.com
HTTP/1.0 301 Moved Permanently Date: Sat, 03 Sep 2011 23:44:10 GMT Server: Apache/2.0.54 (Unix) Location: http://www.sina.com.cn/ Cache-Control: max-age=3600 Expires: Sun, 04 Sep 2011 00:44:10 GMT Vary: Accept-Encoding Content-Length: 231 Content-Type: text/html; charset=iso-8859-1 Age: 3239 X-Cache: HIT from sh201-9.sina.com.cn Connection: close
-I参数则是只显示http response的头信息。
四、显示通信过程
-v参数可以显示一次http通信的整个过程,包括端口连接和http request头信息。
$ curl -v www.sina.com
About to connect() to www.sina.com port 80 (#0)
Trying 61.172.201.195... connected
Connected to www.sina.com (61.172.201.195) port 80 (#0)
GET / HTTP/1.1
User-Agent: curl/7.21.3 (i686-pc-linux-gnu) libcurl/7.21.3 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
Host: www.sina.com
Accept: /
HTTP 1.0, assume close after body < HTTP/1.0 301 Moved Permanently < Date: Sun, 04 Sep 2011 00:42:39 GMT < Server: Apache/2.0.54 (Unix) < Location: http://www.sina.com.cn/ < Cache-Control: max-age=3600 < Expires: Sun, 04 Sep 2011 01:42:39 GMT < Vary: Accept-Encoding < Content-Length: 231 < Content-Type: text/html; charset=iso-8859-1 < X-Cache: MISS from sh201-19.sina.com.cn < Connection: close <
如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。
$ curl --trace output.txt www.sina.com
或者
$ curl --trace-ascii output.txt www.sina.com
运行后,请打开output.txt文件查看。
五、发送表单信息
发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在网址后面就行。
$ curl example.com/form.cgi?data=xxx
POST方法必须把数据和网址分开,curl就要用到--data参数。
$ curl -X POST --data "data=xxx" example.com/form.cgi
如果你的数据没有经过表单编码,还可以让curl为你编码,参数是--data-urlencode。
$ curl -X POST--data-urlencode "date=April 1" example.com/form.cgi
六、HTTP动词
curl默认的HTTP动词是GET,使用-X参数可以支持其他动词。
$ curl -X POST www.example.com
$ curl -X DELETE www.example.com
七、文件上传
假定文件上传的表单是下面这样:
你可以用curl这样上传文件:
$ curl --form upload=@localfilename --form press=OK [URL]
八、Referer字段
有时你需要在http request头信息中,提供一个referer字段,表示你是从哪里跳转过来的。
$ curl --referer http://www.example.com http://www.example.com
九、User Agent字段
这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页,比如手机版和桌面版。
iPhone4的User Agent是
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
curl可以这样模拟:
$ curl --user-agent "[User Agent]" [URL]
十、cookie
使用--cookie参数,可以让curl发送cookie。
$ curl --cookie "name=xxx" www.example.com
至于具体的cookie的值,可以从http response头信息的Set-Cookie字段中得到。
-c cookie-file可以保存服务器返回的cookie到文件,-b cookie-file可以使用这个文件作为cookie信息,进行后续的请求。
$ curl -c cookies http://example.com $ curl -b cookies http://example.com
十一、增加头信息
有时需要在http request之中,自行增加一个头信息。--header参数就可以起到这个作用。
$ curl --header "Content-Type:application/json" http://example.com
十二、HTTP认证
有些网域需要HTTP认证,这时curl需要用到--user参数。
$ curl --user name:password example.com
十三、爬取图片
curl -O http://aliimg.changba.com/cache/photo/[260929610-260939610]_640_640.jpg
十四、爬取网页源代码并下载
打开命令行,输入如下命令,可以向百度服务器发送获取首页源代码的请求,> 命令将源代码输出保存到当前目录的 baidu.html 下。
curl https://www.baidu.com > baidu.html
十五、获取表单 · GET 或 POST 方法
网页中的 <form> 标签常用来生成一个表单。当我们点击表单中的提交按钮时,浏览器会讲所有表单中填入的参数分析并包装,最终用指定的 HTTP 方式发送到目标网络地址。 如下所示代码将用户在输入框填写的参数信息 加入 URL 地址之后,并向目标服务器下的 judge.php 发送 GET 方法。GET 方法中,值和表单内各个字段一一对应。
GET 方法中的参数会出现在 URL 地址中,因此,我们同样在基于命令行 cURL 下模拟这一点。
URL 语法指明,一个通用的 URL 地址格式如下,不难看出,上例代码中的 year 字段及其取值是 <params> 的实例。
<scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>
与 GET 方法不同的是,HTTP 中的 POST 求求向服务器传送数据,由于常有账号密码等私密信息,这些数据通常加入 HTML Header,而在 URL 地址中不可见,并向目标服务器传送数据。 命令行中 cURL 对 POST 方法的处理方法为 -d 参数。
curl -d "year=1997&press=OK" www.example.com/judge.php
十六、上传文件 · POST 或 PUT 方法
1995年年末,RFC 1867 定义了一种新的POST方法,用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的:
对应的 cURL 命令中用 -F 作为命令参数如下。
curl -F upload=@localfilename -F press=OK URL
HTTP协议文件上传的标准方法是使用 PUT,此时 cURL 命令使用 -T 参数:
curl -T uploadfile www.uploadhttp. com/receive.php
十七、伪装成指定的客户端
有些网络资源首先需要判断用户使用的是什么浏览器,符合标准了才能够下载或者浏览。此时curl可以把自己“伪装”成任何其他浏览器:
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL
这个指令表示 cURL 伪装成了 IE5.0,用户平台是 Windows 2000。 curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL
此时 cURL 变成了 Netscape,运行在 PIII 平台的 Linux 上了。
关于我
微信公众号:infree6 或者直接扫码

curl的使用指南的更多相关文章
- curl网站开发指南
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...
- [转帖]curl 的用法指南
curl 的用法指南 作者: 阮一峰 日期: 2019年9月 5日 感谢 腾讯课堂NEXT学院 赞助本站,腾讯官方的前端课程 免费试学. http://www.ruanyifeng.com/blo ...
- [转帖]curl网站开发指南
curl网站开发指南 http://www.ruanyifeng.com/blog/2011/09/curl.html linux 里面有非常多很好的工具 比如这个 curl 之前 以为 wget 就 ...
- linux curl 的用法指南
curl用法指南
- curl 的用法指南
简介 curl 是常用的命令行工具,用来请求 Web 服务器.它的名字就是客户端(client)的 URL 工具的意思. 它的功能非常强大,命令行参数多达几十种.如果熟练的话,完全可以取代 Postm ...
- cURL命令使用指南
cURL是什么 curl是Linux命令行工具,可以使用任何可支持的协议(如HTTP.FTP.IMAP.POP3.SCP.SFTP.SMTP.TFTP.TELNET.LDAP或FILE)在服务器之间传 ...
- curl 命令行应用
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...
- 网络请求工具 cURL
网络请求工具 cURL 2017-08-16 cRUL 是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在“标准输出”(stdout)上面. 查看网页源码 1 $ curl baidu. ...
- cURL(wget)—— 测试 RESTful 接口及模拟 GET/POST/PUT/DELETE/OPTIONS 请求
cURL 是一个简单的 http 命令行工具.与最优秀的 Unix 工具一样,在设计之时,cURL 是个小型程序,功能十分专一,而且是故意为之,仅用于访问 http 服务器.(在 Linux 中,可以 ...
随机推荐
- RMAN备份数据库与表空间
脚本: 数据库备份: backup database format='/u01/app/oracle/oradata/Backup/oradb_%d_%s.bak'; 表空间备份:backup tab ...
- Sqlite—Python接口
#!/usr/bin/env python # -*- coding:utf-8 -*- import sqlite3,os,time import traceback class Sqlite(): ...
- CentOS自行编译升级Git
上一篇升级Git的方式是通过更改yum的源,然后通过yum来安装,那么对于喜欢折腾的人来说,怎么通过Git的源代码自行安装呢? 我安装的是CentOS-7-x86_64-1908,自带的git是1.8 ...
- 数据结构学习--单链表(python)
概念 链表(linked_list)是物理存储单元上非连续的.非顺序的存储结构,数据元素的逻辑顺序 是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间) ,另一个是指向 ...
- gohook 一个支持运行时替换 golang 函数的库实现
运行时替换函数对 golang 这类静态语言来说并不是件容易的事情,语言层面的不支持导致只能从机器码层面做些奇怪 hack,往往艰难,但如能成功,那挣脱牢笼带来的成就感,想想就让人兴奋. gohook ...
- COSCon'19 | 如何设计新一代的图数据库 Nebula
11 月 2 号 - 11 月 3 号,以"大爱无疆,开源无界"为主题的 2019 中国开源年会(COSCon'19)正式启动,大会以开源治理.国际接轨.社区发展和开源项目为切入点 ...
- python高阶函数——返回函数(闭包)
首先,来看一个一般意义的求和: >>> def cal_sum(*args): ... sum = 0 ... for i in args: ... sum = sum + i .. ...
- idea使用maven中的tomcat插件开启服务出现java.net.BindException: Address already in use: JVM_Bind :8080错误原因
[INFO] create webapp with contextPath: /maven_web 五月 11, 2019 6:05:26 下午 org.apache.coyote.AbstractP ...
- SSH框架之Spring第二篇
1.1 基于注解的IOC配置 既注解配置和xml配置要实现的功能都是一样的,都是要降低程序间的耦合.只是配置的形式不一样. 1.2 环境搭建 1.2.1 第一步:拷贝必备的jar包 需要多拷贝一个sp ...
- 使用gitolite搭建Git服务器
使用gitolite搭建Git服务器 运行环境 Ubuntu18.04 gitolite 搭建过程 安装好Ubuntu18.04系统 更新系统 sudo apt update sudo apt upg ...