请求51cto下载-自己动手编写一个浏览器_分享c 项目开发案例

kr浏览器  时间:2021-04-29  阅读:()

自己动手编写一个浏览器

实例目标

在这一章我们使用微软提供的浏览器COM组件来编写一个Internet浏览器。 自己编写浏览器的好处就是可以实现一些扩展功能。在这章中我们将扩展我们的程序实现网站过滤、浏览记录和防止弹出广告窗口的功能。

在本章的后一部分我们将使用HttpWebRequest和HttpWebResponse组件来实现浏览网页源码的功能。最后我们还利用这个组件实现了网上文件的下载、上传等功能。

主要内容

 HTTP协议

 网页浏览器

 定制扩展浏览器功能

 WebRequest类

 网页源代码浏览

3.1 实例功能

我们首先要浏览器程序。这个实例可以实现简单的浏览器功能如图3-1。在编辑框中输入URL地址然后按GO按钮就可以实现浏览网页的功能如图3-2。

图3-1 浏览器程序 图3-2 浏览器程序效果

在我们的浏览器中您同样可以使用“主页” 、“刷新” 、“前进” 、“后退” 、“停止”按钮完成相应的浏览功能。

接下来我们为自制的浏览器程序添加几个扩展功能。禁止用户访问某些特殊站点如图3-3。

图3-3 禁止用户访问不良网站 图3-4 记录用户访问过的网站

接下来还实现了记录用户访问过的网站及时间这对于比较重要的工作站或公司都是很好用的监督、管理办法。其效果如图3-4。

最后如果你想杜绝弹出式广告窗口如图3-5对你的骚扰可以使用本章实例介绍的第三个扩展办法效果如图3-6。

第三章 浏览器程序 37

图3-5 弹出式广告窗经常骚扰我们 图3-6 免除弹出式广告窗的骚扰

本章的第二个实例是浏览网页的源代码如图3-7。

图3-7 网页源代码浏览程序 图3-8 浏览源代码效果

只要输入网址然后按回车或点击“源码”按钮就可以看到该网页传回来的源代码如图3-8。

3.2 编程思路

如果1995年的时候你掌握了浏览器的编程技术那您无疑是一个网络先锋、编程圣手。然而时至今日 浏览器编程已经算不上有什么技术含量了。编写浏览器的技术从商业机密到代码公开再到现在的组件模块化已经慢慢的从一项科技技术过渡到一项商业产品。我们只需要利用这些“半成品”就可以开发出自己的浏览器。说白了就是给实现浏览功能的核心模块穿上一层外衣并规定了它的一些动作。

那么我们还学习浏览器编程有什么用呢又没有什么技术含量而且现在浏览器到处都能免费下载为什么还要自己去做一个笔者的答案是大大的有必要学习浏览器编程技术。因为在Internet迅速普及的今天浏览器操作无疑已经成为继Windows之后第二个标准化操作平台。可以说现在会上网的人 99%会使用 Internet浏览器这是一个比Windows

更为广泛的操作平台。在这个“协议为王、平台为王” 的世界大家都争先恐后的使自己的产品与主流的平台兼容。 因为这样可以大大节省软件的使用培训费用而且利于软件的迅速推广。例如我们可以开发一套软件您可以标新立异的想出许多方便的用户界面例如点击鼠标右键就可以退出程序。但这并不符合Windows的用户习惯这样不管你的软件有多么方便在推广的时候必然会因为用户习惯问题受到很大的阻力。苹果公司的电脑与Linux主要就是因为这个原因没有得到普及。好在Internet浏览器来了可以打破微软在用户界面上的垄断。浏览器的超链接方式比Windows更为直观、更为方便。说到这里您应该明白使应用程序的操作界面符合浏览器界面方式有什么好处了吧。用户会觉得更亲切、更好用、更好学。

学习浏览器编程的另一个好处就是给你的应用程序添加了一个网络接口。随着Internet日渐普及的今天网络接口已经成为标准商用程序的必备。支持用户访问主页、在线帮助、在线升级已经成为了商业软件的标准组成模块。在程序中嵌入一个浏览器接口无疑使这些功能可以很方便的实现。例如超星图书馆的客户端程序中就提供浏览网页的功能您可以方便的在网络上找到想看的书。而腾讯公司的Tecent浏览器相信更是大名鼎鼎它把所有的IE窗口合并到一个主窗口下使浏览网页更为方便。

那么怎么样才能方便的使自己的应用程序添加浏览功能呢我们并不想费太多的时间弄清楚HTTP协议的实现细节我们只想对浏览器的外观进行一些改动并且对浏览器的行为进行一些设置或限制。显然微软已经注意到程序员们的这一急切的需求所以在Visual C#之中我们可以使用现成的浏览器COM组件然后对这个COM组件进行简单的设定就可以实现网页浏览的功能了。

第三章 浏览器程序 39

利用这个COM组件再结合上我们的需求我们可以因地制宜的拓展浏览器的功能。例如在本章介绍的防止用户进入不良网站的应用之中就是利用了 COM 组件的BeforeNavigate2事件接口。

最后我们再利用.NET平台提供的HttpWebRequest和HttpWebResponse组件实现网页源代码的浏览和网上文件的上传和下载。这两个组件是.NET框架中专门针对HTTP协议的通过它们我们可以方便的处理各种HTTP协议的数据。

3.3 关键技术

3.3.1 HTTP协议

众所周知 Internet的基本协议是TCP/IP协议 目前广泛采用的FTP、Archie Gopher等是建立在TCP/IP协议之上的应用层协议不同的协议对应着不同的应用。

WWW服务器使用的主要协议是H T T P协议即超文体传输协议。由于H TT P协议支持的服务不限于WWW还可以是其它服务因而H T T P协议允许用户在统一的界面下采用不同的协议访问不同的服务如FTP、Archie、 SMTP、 NNTP等。另外HTTP协议还可用于名字服务器和分布式对象管理。

HTTP协议简介

HTTP是一个属于应用层的面向对象的协议由于其简捷、快速的方式适用于分布式超媒体信息系统。它于1990年提出经过几年的使用与发展得到不断地完善和扩展。 目前在WWW中使用的是H T T P/1.0的第六版HT T P/1 .1的规范化工作正在进行之中而且HTTP-NG(NextGeneration of HTTP)的建议已经提出。

HTTP协议的主要特点可概括如下

 支持客户/服务器模式。

 简单快速客户向服务器请求服务时只需传送请求方法和路径。请求方法常用的有GET、 HEAD、 POST。每种方法规定了客户与服务器联系的类型不同。

由于HTTP协议简单使得HTTP服务器的程序规模小因而通信速度很快。 灵活HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 无连接无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后即断开连接。采用这种方式可以节省传输时间。

 无状态HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时它的应答就较快。

HTTP协议的几个重要概念

 连接(Connection) 一个传输层的实际环流它是建立在两个相互通讯的应用程序之间。 消息(Message) HTTP通讯的基本单位包括一个结构化的八元组序列并通过连接传输。

 请求(Request) 一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号

 响应(Response) 一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到” )和文档的MIME类型。

 资源(Resource) 由URI标识的网络数据对象或服务。

 实体(Entity) 数据资源或来自服务资源的回映的一种特殊表示方法它可能被包围在一

第三章 浏览器程序 41

个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。

 客户机(Cl ient) 一个为发送请求目的而建立连接的应用程序。

 用户代理(User agent) 初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。

 服务器(Server) 一个接受连接并对请求返回信息的应用程序。

 源服务器(Origin server) 是一个给定资源可以在其上驻留或被创建的服务器。 代理(Proxy) 一个中间程序它可以充当一个服务器也可以充当一个客户机为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前必须解释并且如果可能重写它。

 代理经常作为通过防火墙的客户机端的门户代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。

 网关(Gateway) 一个作为其它服务器中间媒介的服务器。与代理不同的是网关接受请求就好象对被请求的资源来说它就是源服务器发出请求的客户机并没有意识到它在同网关打交道。网关经常作为通过防火墙的服务器端的门户网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。

 通道(Tunnel) 是作为两个连接中继的中介程序。一旦激活通道便被认为不属于HTTP通讯尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时通道便消失。 当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。

 缓存(Cache) 反应信息的局域存储。

HTTP协议的运作方式

HTTP协议是基于请求响应范式的。一个客户机与服务器建立连接后发送一个请求给服务器请求方式的格式为统一资源标识符、协议版本号后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后给予相应的响应信息其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码后边是MIME信息包括服务器信息、实体信息和可能的内容。

许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成。如图3-8。

请求链

ComputerComputer2

图3-8 H TT P的请求响应方式

当一个或多个中介出现在请求响应链中时情况就变得复杂一些。 中介由三种代理(Proxy)、 网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求重写全部或部分消息通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理作为一些其它服务器的上层并且如果必须的话可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如防火墙等)或者是中介不能识别消息的内容时通道经常被使用。

第三章 浏览器程序 43

Computer1Computer2Computer3Computer4

图3-9 H TT P协议请求响应链

上面的图3-9表明了在用户代理(UA)和源服务器(O)之间有三个中介(A,B和C)。一个通过整个链的请求或响应消息必须经过四个连接段。这个区别是重要的因为一些HTTP通讯选择可能应用于最近的连接、没有通道的邻居应用于链的终点或应用于沿链的所有连接。尽管图2-2是线性的每个参与者都可能从事多重的、并发的通讯。例如B可能从许多客户机接收请求而不通过A并且不通过C把请求送到A在同时它还可能处理A的请求。

任何针对不作为通道的汇聚可能为处理请求启用一个内部缓存。缓存的效果是请求响应链被缩短条件是沿链的参与者之一具有一个缓存的响应作用于那个请求。图3-10说明结果链其条件是针对一个未被UA或A加缓存的请求B有一个经过C来自O的一个前期响应的缓存拷贝。

请求链

vv

Computer1 Computer2 Computer3 Computer4

图3-10 结果链

在Internet上HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80 但其它

Vultr新注册赠送100美元活动截止月底 需要可免费享30天福利

昨天晚上有收到VULTR服务商的邮件,如果我们有清楚的朋友应该知道VULTR对于新注册用户已经这两年的促销活动是有赠送100美元最高余额,不过这个余额有效期是30天,如果我们到期未使用完的话也会失效的。但是对于我们一般用户来说,这个活动还是不错的,只需要注册新账户充值10美金激活账户就可以。而且我们自己充值的余额还是可以继续使用且无有效期的。如果我们有需要申请的话可以参考"2021年最新可用Vul...

妮妮云,美国cera CN2线路,VPS享3折优惠

近期联通CUVIP的线路(AS4837线路)非常火热,妮妮云也推出了这类线路的套餐以及优惠,目前到国内优质线路排行大致如下:电信CN2 GIA>联通AS9929>联通AS4837>电信CN2 GT>普通线路,AS4837线路比起前两的优势就是带宽比较大,相对便宜一些,所以大家才能看到这个线路的带宽都非常高。妮妮云互联目前云服务器开放抽奖活动,每天开通前10台享3折优惠,另外...

ProfitServer$34.56/年,5折限时促销/可选西班牙vps、荷兰vps、德国vps/不限制流量/支持自定义ISO

ProfitServer怎么样?ProfitServer好不好。ProfitServer是一家成立于2003的主机商家,是ITC控股的一个部门,主要经营的产品域名、SSL证书、虚拟主机、VPS和独立服务器,机房有俄罗斯、新加坡、荷兰、美国、保加利亚,VPS采用的是KVM虚拟架构,硬盘采用纯SSD,而且最大的优势是不限制流量,大公司运营,机器比较稳定,数据中心众多。此次ProfitServer正在对...

kr浏览器为你推荐
参考手册NDXS和ND5XS网络音频播放器中文目录photoshop技术photoshop技术对哪些工作有用?iphone连不上wifi我的苹果手机连不上无线,其它手机能,怎么回事?只是家里的连不上itunes备份itunes 里面的资料如何备份?360chrome360Chrome 世界之窗极速浏览器 ChromePlus联通iphone4联通iphone4合约迅雷下载速度迅雷下载速度与什么有关?卡巴斯基好用吗卡巴斯基好吗搜狗拼音输入法4.3搜狗拼音输入法4.0怎么只能打出英文输入法呢?支付宝白领日记支付宝怎么建立交友圈
域名服务器 Oray域名注册服务商 荷兰服务器 dreamhost 免费网站监控 万网优惠券 idc是什么 爱奇艺vip免费试用7天 美国免费空间 如何用qq邮箱发邮件 上海联通宽带测速 空间登陆首页 西安服务器托管 我的世界服务器ip 数据库空间 ssl加速 nnt 学生机 godaddyssl e-mail 更多