原文链接:
http://www.ruanyifeng.com/blog/2011/09/curl.html
curl网站开发指南
作者: 阮一峰
日期: 2011年9月 4日
我一向以为,curl只是一个编程用的函数库。
最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法。
===================================
curl网站开发指南
阮一峰 整理
curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。
它支持多种协议,下面举例讲解如何将它用于网站开发。
一、查看网页源码
直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短):
curl www.sina.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.sina.com.cn/">here</a>.</p>
</body></html>
如果要把这个网页保存下来,可以使用-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
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.sina.com.cn/">here</a>.</p>
</body></html>
-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
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.sina.com.cn/">here</a>.</p>
</body></html>
* Closing connection #0
如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。
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 --data "data=xxx" example.com/form.cgi
如果你的数据没有经过表单编码,还可以让curl为你编码,参数是--data-urlencode。
curl --data-urlencode "date=April 1" example.com/form.cgi
六、文件上传
假定文件上传的表单是下面这样:
<form method="POST" enctype='multipart/form-data' action="upload.cgi">
<input type=file name=upload>
<input type=submit name=press value="OK">
</form>
你可以用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字段中得到。
十、增加头信息
有时需要在http request之中,自行增加一个头信息。--header参数就可以起到这个作用。
curl --header "xxx: xxxxxx" http://example.com
十一、HTTP认证
有些网域需要HTTP认证,这时curl需要用到--user参数。
curl --user name:password example.com
分享到:
相关推荐
grepTheCurl指南:使用curl和grep可以进行一次线性正则表达式匹配以在JS文件中进行搜索! 从Hakrawler收集URL:hakrawler -url https://redacted.com -plain -depth 3 | tee -a /urls.txt奖励:使用正确的语法作为...
Redis开发运维实践指南.epub Scala 初学指南.epub Spring Batch 参考文档中文版.epub Stackoverflow about Python 中文版.epub Swift设计模式 (iOS).epub txt.txt Webpack 中文指南.epub 使用Spring Cloud与Docker...
前端开发设置指南 - Mac 本指南将帮助您在 Mac 上安装前端开发所需的最基本的软件包和命令行工具。 终端 下载 [iTerm2] ( ) 安装 [on-my-zsh] ( ) > curl -L http://install.ohmyz.sh | sh 安装 [Homebrew] ( ) ...
3.6.1 CocosBuilder使用指南 95 3.6.2 引擎中的应用 97 3.7 本章小结 98 第4章 动作功能 100 4.1 概述 100 4.2 动作基类 101 4.2.1 动作类的继承关系 102 4.2.2 动作基类CCAction的成员函数 102 4.2.3 类CCNode中与...
排名第一的免费开放源CDN,旨在使开发人员的生活更加轻松。 介绍 这是仅用于跟踪CDN的CDNJS KV存储上执行的每个操作的审核日志的自动存储库。 可以在找到每个记录的事件的文档。 其他资料库 有关控制我们在cdnjs上...
则可以通过在终端中运行以下脚本在MacOS和Unix上安装Yarn: curl -o- -L https://yarnpkg.com/install.sh | bash发展安装require依赖项后,请从以下目录运行以下命令: 安装依赖项: yarn 启动开发环境: yarn run ...
设置全面的设置指南以及自动化脚本,可让您的开发人员从几天到几小时不停地入职! 设置环境可能令人沮丧! 有时,您也想确保在提出问题之前设置正确的数量。 这就是为什么我为入职流程创建了这个Github存储库的原因...
Flask 是一个用于 Python 的轻量级 Web 开发框架。 它基本上只是一个路由器和视图。 在本指南中,我们将逐步介绍 Python 和 Flask 的入门,并构建一个简单的站点。 安装 Python 本指南将重点介绍 OSX。 OSX ...
leetcode网页崩溃开发中心 环境 ...curl、项目、命令行工具、库、一切如何开始以及如何成为今天的一切的广泛指南 JavaScript - 现代 JavaScript 教程 安全 - 打开 Web 应用程序安全项目 网络 人们 宣言
如果这是您第一次开发边缘微服务,请遵循的边缘微服务开发快速入门指南。在使用之前,您需要构建微服务,然后将其部署到edgeEngine。建立过程构建脚本default.yml在config目录下指定。 安装依赖项: npm install ...
PowerDocker指南内容关于PowerDocker PowerDocker-使用Docker进行WEB开发的工作区。 PowerDocker基本原理:主要专注于PHP开发以及Laravel开箱即用的最需要PHP扩展基本的Laravel开发任务的服务可用性轻松访问日志和...
故事书入门套件 安装 先决条件: > = 8.10.0 ...要启动开发服务器,请运行: $ npm start 您现在可以在localhost:3000访问样式指南。 一切就绪,开始: 在src目录.twig组件创建为.twig (Twig)文件 在src目录
阿里欧SDKAleo SDK 是一个开发人员框架,可让您轻松创建新帐户、制作交易并将其广播到网络。目录1. 概述2. 构建指南三、使用指南1. 概述** 注意:此代码库正在积极开发中。**有关更多信息,请访问欢迎使用 Aleo以...
iBurn是《节艺术节的离线地图和指南。 在2014年重写之后,2015版本已针对iOS 8进行了更新,我们开始在Swift中编写新代码。 我们决定使用 + 代替Core Data,并使用代替MapKit作为我们的。 有关更完整的列表,请查看...
为了维护不同版本的Ruby并在它们之间切换,请安装rbenv,而不要遵循官方的Ruby指南。 sudo apt install curlcurl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -curl -sS ...
Drupal专业开发指南 第22章 Drupal优化(1) - g089h515r806的专栏 - CSDNBlog.mht 由Table_locks_waited想到的mysql 表锁问题_含笑的波浪在逐浪.mht MySQL优化经验 key_buffer_size,query_cache_size,table_cache....
#适用于OWNCLOUD的安装指南##必备条件ownCloud版本7.0.0、7.0.1、7.0.2和7.0.3。 在PHP中有效的Curl扩展名(分别在Windows或Linux php.ini中取消注释“ extension = php_curl.dll”或“ ** extension = curl.so” *...