curl网站开发指南

news/2024/5/20 15:31:06/文章来源:https://blog.csdn.net/heybob/article/details/41648463

来源:http://www.ruanyifeng.com/blog/2011/09/curl.html


curl网站开发指南

作者: 阮一峰

我一向以为,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

六、HTTP动词

curl默认的HTTP动词是GET,使用-X参数可以支持其他动词。

  curl -X POST www.example.com

  curl -X DELETE www.example.com

七、文件上传

假定文件上传的表单是下面这样:

  <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 "Content-Type:application/json" http://example.com

十二、HTTP认证

有些网域需要HTTP认证,这时curl需要用到--user参数。

  curl --user name:password example.com

【参考资料】

  * Using cURL to automate HTTP jobs

  * 教你学用CURL

  * 9 uses for cURL worth knowing

(完)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_871201.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样用SharePoint创建网站?

SharePoint能够让企业开发出智能的门户站点&#xff0c;无缝连接用户、团队及信息。下面&#xff0c;我们就将教你如何在sharepoint中创建网站&#xff1a; 创建网站 2. 在 SharePoint 主页上选择“ 创建网站”。 3. 在向导中对网站属性进行基本设置&#xff0c;如网站类型、网…

Linux 安装apache ,发布网站修改端口和配置第二顺位默认发布文件

1.安装apache 软件和手册 2.发布网站&#xff0c;找到默认的发布目录 用xftp 链接上自己的主机传送需要发布的网站到/var/www/html 目录下 使用命令ls查看是否有文件上传 上传成功打开浏览器&#xff0c;输入主机名&#xff0c;查看是否发布成功 3.修改默认端口 #主配置目录 …

js逆向入门网站分析(某空气质量监测平台)

文章目录 前言一、瞧一瞧网站是啥样呢二、新的开始&#xff0c;新的挑战2.1通过第一个 eval2.2分析第二个eval 三、模拟得到服务器传回的数据3.1如何得到关键js文件3.2如何模拟运行eval3.3匹配参数3.4发出请求3.5解密数据 前言 又要到放假的时间啦&#xff0c;学习了好一段时间…

novipnoad电影网站分析

文章目录 前言一.url跳转反调试二.整个过程分析2.1ts重定向2.2 寻找m3u82.3寻找ckey 声明&#xff1a;本文只作学习研究&#xff0c;禁止用于非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff01; 前言 记录远哥讲的一次…

学习前端的有用网站

藏匿 1. 文档型教程 1.1 HTML教程 W3C的HTML教程 1.2 CSS教程 W3C的CSS教程 W3C Candidate Recommendation Draft 1.3 JavaScript教程 MDN的JavaScript教程 2.视频型教程 2.1 HTML & CSS Udemy排名第一的 HTML5CSS3 课程 2.1 JavaScript Udemy排名第一的JavaSc…

大型分布式网站架构

大型分布式网站架构 2016-02-22 17:50 480人阅读 评论(0) 收藏 举报 大型分布式网站架构技术总结 本文是学习大型分布式网站架构的技术总结。对架构一个高性能&#xff0c;高可用&#xff0c;可伸缩&#xff0c;可扩展的分布式网站进行了概要性描述&#xff0c;并给出一个架…

各大日语学习网站整理

日语学习网站 一、http://www.gavo.t.u-tokyo.ac.jp/ojad/search 二、http://yomikatawa.com/ 三、http://nlt.tsukuba.lagoinst.info/ 四、http://j-nihongo.com/about/ 五、https://mnamae.jp/ 六、http://18.art-studio.cc/~koenoizumi/ 七、http://www.jakka.jp/index.htm…

c# 爬虫之(搜狗微信网站)

1、需求获取搜狗微信网站 通过关键词搜索得到的结果列表及详情 2、通过跟踪发现具体的url为&#xff1a;https://weixin.sogou.com/weixin?query%E9%92%9B%E6%A3%92%E6%BB%A4%E8%8A%AF&_sug_type_&s_frominput&_sug_n&type2&page2&ieutf8 其中query…

基于ASP.NET的日语学习网站 毕业设计成品讲解(程序+论文)-王翔-专题视频课程...

基于ASP.NET的日语学习网站 毕业设计成品讲解&#xff08;程序论文&#xff09;—1467人已学习 课程介绍 本文是基于ASP.NET的日语学习网站的毕业设计成品讲解&#xff0c;包括整套网站程序、数据库和配套的论文&#xff0c;网站期初使用的技术和设计比较一般&#xff0c;本…

基于ASP.NET网站开发的 SQL SERVER 数据库教学辅导 新手基础实用技术精讲-王翔-专题视频课程...

基于ASP.NET网站开发的 SQL SERVER 数据库教学辅导 新手基础实用技术精讲—1183人已学习 课程介绍 ASP.NET网站开发 数据库教学辅导 实用技术精讲,主要针对基于ASP.NET的Visual Studio 2010和SQL SERVER 2008 R2下开发的基础数据库部分 课程收益 快速掌握对数据库开发的基础…

从小型网站到超大规模网站的MySQL参考架构

转自&#xff1a;http://www.infoq.com/cn/news/2013/03/MySQL-Reference-Architectures Oracle发布《面向大规模可伸缩网站基础设施的MySQL参考架构》白皮书&#xff0c;针对将MySQL用作数据存储的不同类型和不同规模的网站给出了推荐的拓扑结构。 根据分别提供4类服务——用…

读书笔记-大型网站架构案例分析

从事传统软件行业多年&#xff0c;一直钻研于基于企业应用环境下的快速开发平台&#xff0c;而这种平台应用场景同时在线人数也不会超过百人&#xff0c;同一业务并发数在同一时间点或段内出现猛烈的增长&#xff0c;曾经也一度想设计一个怎样怎么样的NB架构&#xff0c;但现在…

网站交互相互技术

cookie和session什么区别&#xff1f; 1、cookie存本地&#xff0c;session存服务器 2、cookie只能存最大4k&#xff0c;session可以无限大

jmeter与apache测试网站并发

本文主要介绍性能测试中的常用工具jmeter的使用方式&#xff0c;以方便开发人员在自测过程中就能自己动手对系统进行自动压测和模拟用户操作访问请求。最后还用linux下的压测工具ab做了简单对比。 1. Jmeter相关概念简介&#xff1a; JMeter是Apache组织开发的基于Java的压…

大型网站架构演变过程理解

web动静资源分离 浏览器的请求分为静态资源请求&#xff0c;与动态资源请求。 静态有&#xff1a;html文件&#xff0c;js脚本&#xff0c;css等。 动态有&#xff1a;jsp&#xff0c;php等 http服务器用来处理静态请求&#xff0c;应用服务器处理动态请求。分别可以称为前端…

解决火车头7.6版本无法采集部分https网站处理方法

因为现在大多数网站都采取https&#xff0c;导致很多网站无法采集。那哪行&#xff0c;肯定得有解决办法&#xff0c;今日就说说关于火车头采集器7.6版本无法采集部分https网站处理方法。 火车头7.6版本由于发布时间久远&#xff0c;虽然采集器大部分功能都还可以正常使用&…

destooon7.0装修网站源码带分站多地区带设计报价

源码为destoon7.0系统&#xff0c;整站打包&#xff0c;功能很多&#xff0c;不保证无bug&#xff0c;请测试好演示站&#xff1b; 安装测试环境为&#xff1a;宝塔-php-mysql&#xff1b; 源码带手机版&#xff0c;dt内核&#xff0c;安全稳定&#xff0c;支持二次开发等 下…

响应式行业资讯网类网站织梦mip模板带数据完整无错版

织梦最新内核开发的模板&#xff0c;该模板属于比特币新闻资讯类、博客类企业都可使用&#xff0c; 这款模板使用范围极广&#xff0c;不仅仅局限于一类型的企业&#xff0c;你只需要把图片和产品内容&#xff1b; 换成你的&#xff0c;颜色都可以修改&#xff0c;改完让你耳目…

响应式自适应推土机挖掘机机械类网站织梦模板

响应式自适应推土机挖掘机机械类网站织梦模板介绍 响应式自适应推土机挖掘机机械类网站织梦模板&#xff0c;此套dedecms模板可以作为推土机挖掘机机械类、大型机械重工类网站&#xff0c;比较简洁实用的网站模板&#xff0c;是做推土机挖掘机机械类、大型机械重工类网站朋友的…

织梦最新版后台一键更新网站、更新文档HTML、添加文档卡死500的解决方法

后台操作很卡&#xff0c;经常卡住&#xff0c;解决方法 1、/data/common.inc.php 里面如果是 localhost 的话&#xff0c;把它改成 127.0.0.1 2、把 /dede/templets/index_body.htm 25到41行&#xff0c;删除 3、检查 /include/common.inc.php 文件最下面的代码是不是这样的 …