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

淘米浏览器  时间:2021-01-26  阅读:()

自己动手编写一个浏览器

实例目标

在这一章我们使用微软提供的浏览器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。

请求链

Computer Computer2

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

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

第三章 浏览器程序 43

Computer1 Computer2 Computer3 Computer4

图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的一个前期响应的缓存拷贝。

请求链

Computer1 Computer2 Computer3 Computer4

图3-10 结果链

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

华纳云CN2高防1810M带宽独享,三网直cn218元/月,2M带宽;独服/高防6折购

华纳云怎么样?华纳云是香港老牌的IDC服务商,成立于2015年,主要提供中国香港/美国节点的服务器及网络安全产品、比如,香港服务器、香港云服务器、香港高防服务器、香港高防IP、美国云服务器、机柜出租以及云虚拟主机等。以极速 BGP 冗余网络、CN2 GIA 回国专线以及多年技能经验,帮助全球数十万家企业实现业务转型攀升。华纳云针对618返场活动,华纳云推出一系列热销产品活动,香港云服务器低至3折,...

BGP.TO日本和新加坡服务器进行促销,日本服务器6.5折

BGP.TO目前针对日本和新加坡服务器进行促销,其中日本东京服务器6.5折,而新加坡服务器7.5折起。这是一家专门的独立服务器租售网站,提供包括中国香港、日本、新加坡和洛杉矶的服务器租用业务,基本上都是自有硬件、IP资源等,国内优化直连线路,机器自动化部署上架,并提供产品的基本管理功能(自助开关机重启重装等)。新加坡服务器 $93.75/月CPU:E3-1230v3内存:16GB硬盘:480GB ...

久久网云-目前最便宜的国内,香港,美国,日本VPS云服务器19.9元/月起,三网CN2,2天内不满意可以更换其他机房机器,IP免费更换!。

久久网云怎么样?久久网云好不好?久久网云是一家成立于2017年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,久久网云目前提供有美国免费主机、香港主机、韩国服务器、香港服务器、美国云服务器,香港荃湾CN2弹性云服务器。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经验,遍布亚太地区的海量节点为...

淘米浏览器为你推荐
滴滴软银合资嘀嘀打车是腾讯的还是阿里巴巴的非主流桌面背景图片大家都哪里找的那么个性的电脑壁纸,滚筒洗衣机和波轮洗衣机哪个好全自动洗衣机滚筒的和波轮的有什么区别,各有什么好处?电脑管家和360哪个好腾讯电脑管家和360安全卫士哪个更好免费阅读小说app哪个好求一个看书比较好的APP轿车和suv哪个好SUV和轿车哪个好少儿英语哪个好少儿英语哪个好少儿英语哪个好少儿英语哪套教材好哪里好呢?浮动利率和固定利率哪个好浮动利率房贷与固定利率房贷比较 购房者如何选择录音软件哪个好手机录音软件哪个好用
虚拟主机服务商 动态域名解析软件 贝锐花生壳域名 重庆服务器托管 westhost payoneer shopex空间 unsplash 万网优惠券 512m内存 hnyd 个人域名 100m独享 双线机房 华为云服务登录 电信网络测速器 阿里云邮箱登陆地址 主机返佣 学生服务器 腾讯网盘 更多