CN103577227B - 一种加载插件的方法、浏览器和服务器 - Google Patents

一种加载插件的方法、浏览器和服务器 Download PDF

Info

Publication number
CN103577227B
CN103577227B CN201310513333.XA CN201310513333A CN103577227B CN 103577227 B CN103577227 B CN 103577227B CN 201310513333 A CN201310513333 A CN 201310513333A CN 103577227 B CN103577227 B CN 103577227B
Authority
CN
China
Prior art keywords
plug
file
url
parameter information
filename
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310513333.XA
Other languages
English (en)
Other versions
CN103577227A (zh
Inventor
贺跃松
李锦伟
任寰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310513333.XA priority Critical patent/CN103577227B/zh
Publication of CN103577227A publication Critical patent/CN103577227A/zh
Priority to PCT/CN2014/089473 priority patent/WO2015058716A1/zh
Application granted granted Critical
Publication of CN103577227B publication Critical patent/CN103577227B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种加载插件的方法、浏览器和服务器,其中所述方法包括当浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;将所述第一插件对象的参数信息发送至服务器侧;接收所述服务器侧返回的第二插件对象的参数信息;依据所述第二插件对象的参数信息创建第二插件对象;建立所述代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行所述网页的加载。本发明可以避免用户下载和安装网页中的ActiveX插件,提高了页面加载的效率。

Description

一种加载插件的方法、浏览器和服务器
技术领域
本发明涉及插件加载的技术领域,特别是涉及一种加载插件的方法、一种浏览器以及一种服务器。
背景技术
ActiveX是一个开放的集成平台,为开发人员、用户和Web生产商提供了一个快速而简便的在Internet和Intranet创建程序集成和内容的方法。使用ActiveX,可轻松方便的在Web页中插入多媒体效果、交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体CD-ROM。基于ActiveX的ActiveX插件也具有越来越广泛的应用。ActiveX插件技术是国际上通用的基于Windows平台的软件技术,许多软件均采用此种方式开发,例如Flash动画播放插件、Microsoft MediaPlayer插件、Adobe PDF阅读插件等。
ActiveX插件叫做OLE插件或OCX插件,它是一些软件组件或对象,可以将其插入到WEB网页或其他应用程序中。例如,当用户浏览到特定的网页时,浏览器会提示用户下载并安装ActiveX插件。
在现有技术中,虽然浏览器侧一般都内置有一些基本功能的ActiveX插件,但很多网页也自带ActiveX插件,其需要用户下载并安装网页自带的ActiveX插件方能实现网页的某种功能。例如,浏览器内置插件Qvod插件,其可以支持一些网页元素的播放,但网页中规定使用百度影音插件来播放一些网页资源,因此,即使浏览器内置的Qvod插件支持该网页中视频文件的播放,用户也只能另外下载和安装百度影音插件进行视频播放,造成资源的浪费。并且网页ActiveX插件下载和安装的过程可能造成网页的阻滞,使得嵌有ActiveX脚本程序的页面的加载速度降低,甚至导致浏览器瞬间失去响应。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种加载插件的方法和相应的一种浏览器,以及一种服务器。
依据本发明的一个方面,提供了一种加载插件的方法,包括:
当浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;
将所述第一插件对象的参数信息发送至服务器侧;
接收所述服务器侧返回的第二插件对象的参数信息,所述第二插件对象的参数信息通过服务器侧在依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时提取获得;
依据所述第二插件对象的参数信息创建第二插件对象;
建立所述代理对象与所述第二插件对象的关联;
采用所述代理对象配置所述第二插件对象运行的脚本;
采用所述第二插件对象根据所述脚本进行所述网页的加载。
可选地,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;当存在可替换的第二插件对象时,所述第二文件的URL中的文件名,文件大小和文件哈希值,与所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
可选地,所述方法还包括:
浏览器侧接收服务器侧返回的提示信息,所述提示信息通过服务器侧在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时生成;
依据所述提示信息,创建第一插件对象;
采用所述第一插件对象进行所述网页的加载。
可选地,所述第一插件对象的参数信息还包括第一功能函数,所述第二插件对象运行的脚本包括第二插件对象的第二功能函数,所述采用所述代理对象配置所述第二插件对象运行的脚本的步骤包括:
在调用所述第一功能函数时,采用所述代理对象将所述第一功能函数替换为对应的第二功能函数;
采用所述代理对象按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
可选地,所述代理对象通过调度接口IDispatch接口将所述第一功能函数替换为第二插件对象中对应的第二功能函数。
可选地,在浏览器侧加载网页的过程中钩挂hook到cogetclassobject函数时,即拦截到第一插件对象的创建需求。
根据本发明的另一方面,提供了一种加载插件的方法,包括:
接收浏览器侧发送的第一插件对象的参数信息;
依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧,由所述浏览器侧依据所述第二插件对象的参数信息创建第二插件对象;建立代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行所述网页的加载,其中,所述代理对象为浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时创建。
可选地,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;
所述依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧的步骤,具体包括:
依据所述第一文件的URL,判断在服务器侧预置的映射表中是否存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL;
若是,则依据所述第二文件的URL获取第二插件对象的标识;
将所述第二插件对象的标识以及第二文件的URL返回浏览器侧。
可选地,所述方法还包括:
在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时,返回提示信息,由所述浏览器侧依据所述提示信息,创建第一插件对象,并采用所述第一插件对象进行所述网页的加载。
根据本发明的另一方面,提供了一种浏览器,包括:
代理对象创建模块,适于在浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;
第一插件对象的参数信息发送模块,适于将所述第一插件对象的参数信息发送至服务器侧;
第二插件对象的参数信息接收模块,适于接收所述服务器侧返回的第二插件对象的参数信息,所述第二插件对象的参数信息通过服务器侧在依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时提取获得;
第二插件对象创建模块,适于依据所述第二插件对象的参数信息创建第二插件对象;
关联建立模块,适于建立所述代理对象与所述第二插件对象的关联;
脚本配置模块,适于采用所述代理对象配置所述第二插件对象运行的脚本;
第一页面加载模块,适于采用所述第二插件对象根据所述脚本进行所述网页的加载。
可选地,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;当存在可替换的第二插件对象时,所述第二文件的URL中的文件名,文件大小和文件哈希值,与所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
可选地,所述浏览器还包括:
提示信息接收模块,适于接收服务器侧返回的提示信息,所述提示信息通过服务器侧在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时生成;
第一插件对象创建模块,适于依据所述提示信息,创建第一插件对象;
第二页面加载模块,适于采用所述第一插件对象进行所述网页的加载。
可选地,所述第一插件对象的参数信息还包括第一功能函数,所述第二插件对象运行的脚本包括第二插件对象的第二功能函数,所述脚本配置模块还适于:
在调用所述第一功能函数时,采用所述代理对象将所述第一功能函数替换为对应的第二功能函数;
采用所述代理对象按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
可选地,所述代理对象通过调度接口IDispatch接口将所述第一功能函数替换为第二插件对象中对应的第二功能函数。
可选地,在浏览器侧加载网页的过程中钩挂hook到cogetclassobject函数时,即拦截到第一插件对象的创建需求。
根据本发明的另一方面,提供了一种服务器,包括:
第一插件对象的参数信息接收模块,适于接收浏览器侧发送的第一插件对象的参数信息;
第二插件对象的参数信息返回模块,适于依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧,由所述浏览器侧依据所述第二插件对象的参数信息创建第二插件对象;建立代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行所述网页的加载,其中,所述代理对象为浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时创建。
可选地,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;
所述第二插件对象的参数信息返回模块还适于:
依据所述第一文件的URL,判断在服务器侧预置的映射表中是否存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL;
若是,则依据所述第二文件的URL获取第二插件对象的标识;
将所述第二插件对象的标识以及第二文件的URL返回浏览器侧。
可选地,所述服务器还包括:
提示信息返回模块,适于在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时,返回提示信息,由所述浏览器侧依据所述提示信息,创建第一插件对象,并采用所述第一插件对象进行所述网页的加载。
在本发明中,当浏览器侧的页面进程加载到网页中的ActiveX插件时,可以将其替换为浏览器内置的ActiveX插件,使得浏览器自带的ActiveX插件能够对当前页面中其支持的文件格式的网络元素的接管和打开,避免用户下载和安装网页中的ActiveX插件,提高了页面加载的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种加载插件的方法实施例一的步骤流程图;
图2示出了根据本发明一个实施例的一种加载插件的方法实施例二的步骤流程图;
图3示出了根据本发明一个实施例的一种浏览器实施例的结构框图;
图4示出了根据本发明一个实施例的一种服务器实施例的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,示出了根据本发明一个实施例的一种加载插件的方法实施例一的步骤流程图,从实施例从浏览器侧进行说明,具体可以包括以下步骤:
步骤101,当浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;
应用于本实施例,所述第一插件对象可以为网页中规定使用的ActiveX插件,如百度影音、QVOD(快播)等。所述浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求,具体可以为,在浏览器侧加载网页的过程中钩挂hook到CoGetClassObject函数时,即拦截到第一插件对象的创建需求。
具体而言,ActiveX插件是一种COM(Component Object Model,组件对象模型)组件,在COM库中,有三个API(Application Programming Interface,应用程序编程接口)函数可用于对象的创建,它们分别是CoGetClassObject、CoCreateInstance和CoCreateInstanceEx,通常情况下,客户程序调用其中之一完成对象的创建,并返回对象的初始化接口指针,COM库与类厂(类厂也是一个接口或COM对象,其职责是创造组件的对象并返回给客户程序一个接口的指针,每个组件都必须有一个与之相关的类厂)也通过这三个函数进行交互。
CoGetClassObject声明可以表示如下:
STDAPI CoGetClassObject(REFCLSID rclsid,
DWORD dwClsContext,
COSERVERINFO*pServerInfo,
REFIID riid,
LPVOID*ppv);
其中,rclsid用来唯一标识一个对象的CLSID(128位),通过rclsid可以知道需要创建的对象(需要用它来创建指定对象);dwClsContext为组件类别,可使用CLSCTX枚举器中预定义的值;pServerInfo是一个指针,它指向被实例化的类对象所在的机器(如果是本地机器,参数为NULL);riid为引用接口标识符,用来与对象通信;ppv作为输出参数存放返回的类厂接口指针。
当客户程序要调用COM库函数CoCreateInstance以得到类厂接口指针时,CoCreateInstance调用函数CoGetClassObject,在函数CoGetClassObject中使用参数CLSID查找注册表,找到COM组件DLL的路径并加载,调用所述DLL中实现的函数DllGetClassObject,DllGetClassObject函数创建类厂,并逆序返回类厂接口指针给CoGetClassObject,依据所述类厂接口指针创建对象。而在本发明实施例中,当浏览器侧的页面进程需要创建对象时,对CoGetClassObject函数进行hook(hook是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或“钩子”),从而阻止对象的创建。
在本发明实施例中,对于hook到浏览器侧中的CoGetClassObject函数而知道需要创建对象,从而启动代理对象(Prox对象)的创建,使用Prox对象替换CoGetClassObject函数实际要创建的对象。其中,Prox对象包括一系列接口,包括IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等,然后在调用IClassFactory(类厂)的CreateInstance(创建函数)时,将所创建的代理对象prox返回给页面进程的IUnknown指针,由此代理对象创建完成。
在实际中,在创建插件对象的同时,可以从浏览器侧的页面进程中获取所述第一插件对象的参数信息,从而知道具体需要创建的插件。在本发明实施例的一种优选示例中,所述第一插件对象的参数信息可以包括第一插件对象的标识以及第一文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,可以包括文件名,文件大小和文件哈希值。例如,当第一插件对象为百度影音(BaiduPlayer)插件时,其参数信息可以为:
<object classid="clsid:02E2D748-67F8-48B4-8AB4-0A085374BB99"
width="500"height="400"id="BaiduPlayer"name="BaiduPlayer">
<PARAM NAME='URL'VALUE='
bdhd://216615163|5E5F4843ED84AEA1812335413084E718|宫锁心玉
02.rmvb'>
<PARAM NAME='Autoplay'VALUE='1'>
</object>
其中,object为HTML语言中对COM组件的统一使用方式;classid为HTML语言中对WEB插件的调用语句;clsid为BaiduPlayer插件类型ID值;width/height为在网页中显示的该插件宽与高度;id/name/为BaiduPlayer插件的标识;URL为播放文件地址(即第一文件的URL),该URL值格式为bdhd://文件大小|文件hash值|文件名(bdhd为BaiduPlayer生成URL地址的协议);AutoPlay为是否自动播放,0:不自动播放1:自动播放,默认是不自动播放。
步骤102,将所述第一插件对象的参数信息发送至服务器侧;
步骤103,接收所述服务器侧返回的第二插件对象的参数信息,所述第二插件对象的参数信息通过服务器侧在依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时提取获得;
在本发明实施例中,当浏览器侧的页面进程加载到网页中的ActiveX插件时,可以将其替换为浏览器侧内置的ActiveX插件(第二插件对象),使得浏览器侧内置的ActiveX插件能够对当前页面中其支持的文件格式的网络元素的接管和打开,避免用户下载和安装网页中的ActiveX插件。
具体而言,浏览器侧将所述第一插件对象的标识以及第一文件的URL等信息上传到服务器侧,由服务器侧进行判断是否可以进行插件的替换操作。在具体实现中,服务器侧的数据资源库中保存有各种数据资源文件(包括文件名、文件大小和文件哈希值),服务器侧可以分别将数据资源库中的各数据资源文件按照浏览器侧内置的第二插件对象的协议生成各数据资源文件的URL(即第二文件的URL),并生成各数据资源文件与对应的URL的映射关系保存在映射表中。当服务器侧接收到浏览器侧上传的第一插件对象的标识以及第一文件的URL时,获得该第一插件对象的第一文件的URL中的文件名、文件大小和文件哈希值的文件信息,在映射表中查找与所述第一文件的URL中的文件名,文件大小和文件哈希值相同的文件名,文件大小和文件哈希值,若查找成功,则确定可以进行第二插件对象的替换,并获得对应的第二文件的URL(例如,与百度影音的播放地址对应的第二文件的URL可以为:
ed2k://|file|Lucky%20Girl%20-%20Just%20My%20Luck%20French%20Dvdrip%20Xvid-Justmyluck-Songo52%20Par%20Idonkey%20Ws.avi|729925632|73CF7916F3ABD182035C82A69CCA29F9|/),服务器侧将该对应的第二文件的URL和第二插件对象的标识(第二文件的URL和第二插件对象组成第二插件对象的参数信息)返回至浏览器侧。
另外,当服务器侧在映射表中没有查找与到所述第一文件的URL中的文件名,文件大小和文件哈希值相同的文件名,文件大小和文件哈希值时,则确定不存在可替换的第二插件对象,服务器侧返回的提示信息至浏览器侧,浏览器侧依据该提示信息,对拦截的CoGetClassObject函数放行,从而创建第一插件对象,采用所述第一插件对象与代理对象进行通信,实现网页的加载。
步骤104,依据所述第二插件对象的参数信息创建第二插件对象;
具体而言,当浏览器侧接收到服务器侧返回的第二插件对象的参数信息后,将所述第二插件对象的参数信息替换页面进程中的第一插件对象的参数信息,浏览器侧再次加载页面进程,在CoGetClassObject函数中获得类厂接口指针后,调用类厂中的创建函数创建第二插件对象,其中,所述第二插件对象为真正实现插件功能的对象。
步骤105,建立所述代理对象与所述第二插件对象的关联;
在本发明实施例中,可以在代理对象和第二插件对象中分别创建与对象关联的通信窗口,以建立所述代理对象与所述第二插件对象的关联,使得代理对象和第二插件对象可以通过通信窗口进行通信,通过代理对象和第二插件对象的通信窗口,实现代理对象调用第二插件对象和/或第二插件对象调用代理对象,从而实现插件所要实现的功能。
步骤106,采用所述代理对象配置所述第二插件对象运行的脚本;
在具体实现中,代理对象与第二插件对象的通信包括进程间的脚本执行过程,通过代理对象来配置第二插件对象运行的脚本。在本发明的一种优选实施例中,所述第一插件对象的参数信息还可以包括第一功能函数,所述第二插件对象运行的脚本可以包括第二插件对象的第二功能函数,所述步骤106可以包括如下子步骤:
子步骤S21,在调用所述第一功能函数时,采用所述代理对象将所述第一功能函数替换为对应的第二功能函数;
子步骤S22,采用所述代理对象按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
具体而言,所述代理对象可以通过调度接口IDispatch接口将所述第一功能函数替换为第二插件对象中对应的第二功能函数。在具体实现中,浏览器侧的页面进程在加载网页时,当解析到第一插件对象中脚本时,将该脚本中待执行的方法的名称调到代理对象的IDispatch接口中,IDispatch接口为调度接口,用于调用不支持虚函数表的语言程序中的函数,IDispatch接口具有GetIDsOfNames函数和Invoke函数,其中GetIDsOfNames函数提供的是利用方法的名称返回其调度ID的方法,Invoke函数提供的是利用方法的调度ID执行方法的指令。由于第一插件对象并没有真正创建,而第二插件对象是真正的插件的对象,所以代理对象通过通信窗口调用第二插件对象的IDispatch接口,调用第二插件对象的GetIDsOfNames函数提供的方法,让第二插件对象获取待执行的方法的调度ID,并根据所述调度ID获取相应的功能函数(第二功能函数),然后第二插件对象通过通信窗口将该调度ID和第二功能函数返回给代理对象,代理对象将所述第二功能函数替换第一功能函数(例如:第一插件对象中的Play函数,在Prox对象被调用时,实际被映射到第二插件对象的对应Play函数,其名称也可以不是play,但是功能是完全一致的),然后,按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
步骤107,采用所述第二插件对象根据所述脚本进行所述网页的加载。
具体而言,代理对象完成第二插件对象的脚本的配置后,将该脚本反馈给页面进程,页面进程采用所述第二插件对象执行Invoke(ID)的指令,从而执行脚本中待执行的方法,完成页面的加载。
在本发明实施例中,可以实现对于网页中的任一ActiveX插件的替换操作,从而实现了浏览器侧中所有的数据资源都可以找到一个合适的或者统一的ActiveX插件进行加载,而不需要用户进行手动的安装,大大地提高了浏览器侧对于网页中数据资源加载的效率。
参照图2,示出了根据本发明一个实施例的一种加载插件的方法实施例二的步骤流程图,从实施例从服务器侧进行说明,具体可以包括以下步骤:
步骤201,接收浏览器侧发送的第一插件对象的参数信息;
步骤202,依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧;
其中,所述浏览器侧依据所述第二插件对象的参数信息创建第二插件对象;建立代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行所述网页的加载,其中,所述代理对象为浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时创建。
在本发明的一种优选实施例中,所述第一插件对象的参数信息可以包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息可以包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,可以包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,可以包括文件名,文件大小和文件哈希值;所述步骤202可以包括如下子步骤:
依据所述第一文件的URL,判断在服务器侧预置的映射表中是否存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL;
若是,则依据所述第二文件的URL获取第二插件对象的标识;
将所述第二插件对象的标识以及第二文件的URL返回浏览器侧。
另外,当在服务器侧预置的映射表中不存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL时,则判定不存在可替换的第二插件对象,此时,服务器侧返回提示信息,由所述浏览器侧依据所述提示信息,创建第一插件对象,并采用所述第一插件对象进行所述网页的加载。
对于图2的方法实施例而言,由于其与图1的方法实施例基本相似,所以描述的比较简单,相关之处参见图1的方法实施例的部分说明即可
参照图3,示出了根据本发明一个实施例的一种浏览器实施例的结构框图,具体可以包括如下模块:
代理对象创建模块301,适于在浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;
其中,在浏览器侧加载网页的过程中钩挂hook到cogetclassobject函数时,即拦截到第一插件对象的创建需求。
第一插件对象的参数信息发送模块302,适于将所述第一插件对象的参数信息发送至服务器侧;
第二插件对象的参数信息接收模块303,适于接收所述服务器侧返回的第二插件对象的参数信息,所述第二插件对象的参数信息通过服务器侧在依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时提取获得;
第二插件对象创建模块304,适于依据所述第二插件对象的参数信息创建第二插件对象;
关联建立模块305,适于建立所述代理对象与所述第二插件对象的关联;
脚本配置模块306,适于采用所述代理对象配置所述第二插件对象运行的脚本;
第一页面加载模块307,适于采用所述第二插件对象根据所述脚本进行所述网页的加载。
在本发明的一种优选实施例中,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;当存在可替换的第二插件对象时,所述第二文件的URL中的文件名,文件大小和文件哈希值,与所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
在本发明实施例中,当不存在可替换的第二插件对象时,所述浏览器侧还可以包括:
提示信息接收模块,适于接收服务器侧返回的提示信息,所述提示信息通过服务器侧在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时生成;
第一插件对象创建模块,适于依据所述提示信息,创建第一插件对象;
第二页面加载模块,适于采用所述第一插件对象进行所述网页的加载。
在本发明的一种优选实施例中,所述第一插件对象的参数信息还包括第一功能函数,所述第二插件对象运行的脚本包括第二插件对象的第二功能函数,所述脚本配置模块还适于:
在调用所述第一功能函数时,采用所述代理对象将所述第一功能函数替换为对应的第二功能函数;
其中,所述代理对象通过调度接口IDispatch接口将所述第一功能函数替换为第二插件对象中对应的第二功能函数。
采用所述代理对象按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
对于浏览器实施例而言,由于其与上述方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图4,示出了根据本发明一个实施例的一种服务器实施例的结构框图,具体可以包括如下模块:
第一插件对象的参数信息接收模块401,适于接收浏览器侧发送的第一插件对象的参数信息;
第二插件对象的参数信息返回模块402,适于依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧,由所述浏览器侧依据所述第二插件对象的参数信息创建第二插件对象;建立代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行所述网页的加载,其中,所述代理对象为浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时创建。
在本发明的一种优选实施例中,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;
所述第二插件对象的参数信息返回模块还适于:
依据所述第一文件的URL,判断在服务器侧预置的映射表中是否存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL;
若是,则依据所述第二文件的URL获取第二插件对象的标识;
将所述第二插件对象的标识以及第二文件的URL返回浏览器侧。
在本发明实施例中,当不存在可替换的第二插件对象时,所述服务器侧还可以包括:
提示信息返回模块,适于在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时,返回提示信息,由所述浏览器侧依据所述提示信息,创建第一插件对象,并采用所述第一插件对象进行所述网页的加载。
对于服务器实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的进行加载插件的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种加载插件的方法,包括:
当浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;
将所述第一插件对象的参数信息发送至服务器侧;
接收所述服务器侧返回的第二插件对象的参数信息,所述第二插件对象的参数信息通过服务器侧在依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时提取获得;
依据所述第二插件对象的参数信息创建第二插件对象;
建立所述代理对象与所述第二插件对象的关联;
采用所述代理对象配置所述第二插件对象运行的脚本;
采用所述第二插件对象根据所述脚本进行所述网页的加载。
A2、如A1所述的方法,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;当存在可替换的第二插件对象时,所述第二文件的URL中的文件名,文件大小和文件哈希值,与所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
A3、如A1或A2所述的方法,还包括:
浏览器侧接收服务器侧返回的提示信息,所述提示信息通过服务器侧在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时生成;
依据所述提示信息,创建第一插件对象;
采用所述第一插件对象进行所述网页的加载。
A4、如A2所述的方法,所述第一插件对象的参数信息还包括第一功能函数,所述第二插件对象运行的脚本包括第二插件对象的第二功能函数,所述采用所述代理对象配置所述第二插件对象运行的脚本的步骤包括:
在调用所述第一功能函数时,采用所述代理对象将所述第一功能函数替换为对应的第二功能函数;
采用所述代理对象按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
A5、如A4所述的方法,所述代理对象通过调度接口IDispatch接口将所述第一功能函数替换为第二插件对象中对应的第二功能函数。
A6、如A1所述的方法,在浏览器侧加载网页的过程中钩挂hook到cogetclassobject函数时,即拦截到第一插件对象的创建需求。
本发明还公开了B7、一种加载插件的方法,包括:
接收浏览器侧发送的第一插件对象的参数信息;
依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧,由所述浏览器侧依据所述第二插件对象的参数信息创建第二插件对象;建立代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行所述网页的加载,其中,所述代理对象为浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时创建。
B8、如B7所述的方法,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;
所述依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧的步骤,具体包括:
依据所述第一文件的URL,判断在服务器侧预置的映射表中是否存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL;
若是,则依据所述第二文件的URL获取第二插件对象的标识;
将所述第二插件对象的标识以及第二文件的URL返回浏览器侧。
B9、如B7或B8所述的方法,还包括:
在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时,返回提示信息,由所述浏览器侧依据所述提示信息,创建第一插件对象,并采用所述第一插件对象进行所述网页的加载。
本发明还公开了C10、一种浏览器,包括:
代理对象创建模块,适于在浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;
第一插件对象的参数信息发送模块,适于将所述第一插件对象的参数信息发送至服务器侧;
第二插件对象的参数信息接收模块,适于接收所述服务器侧返回的第二插件对象的参数信息,所述第二插件对象的参数信息通过服务器侧在依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时提取获得;
第二插件对象创建模块,适于依据所述第二插件对象的参数信息创建第二插件对象;
关联建立模块,适于建立所述代理对象与所述第二插件对象的关联;
脚本配置模块,适于采用所述代理对象配置所述第二插件对象运行的脚本;
第一页面加载模块,适于采用所述第二插件对象根据所述脚本进行所述网页的加载。
C11、如C10所述的浏览器,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;当存在可替换的第二插件对象时,所述第二文件的URL中的文件名,文件大小和文件哈希值,与所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
C12、如C10或C11所述的浏览器,还包括:
提示信息接收模块,适于接收服务器侧返回的提示信息,所述提示信息通过服务器侧在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时生成;
第一插件对象创建模块,适于依据所述提示信息,创建第一插件对象;
第二页面加载模块,适于采用所述第一插件对象进行所述网页的加载。
C13、如C11所述的浏览器,所述第一插件对象的参数信息还包括第一功能函数,所述第二插件对象运行的脚本包括第二插件对象的第二功能函数,所述脚本配置模块还适于:
在调用所述第一功能函数时,采用所述代理对象将所述第一功能函数替换为对应的第二功能函数;
采用所述代理对象按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
C14、如C13所述的浏览器,所述代理对象通过调度接口IDispatch接口将所述第一功能函数替换为第二插件对象中对应的第二功能函数。
C15、如C10所述的浏览器,在浏览器侧加载网页的过程中钩挂hook到cogetclassobject函数时,即拦截到第一插件对象的创建需求。
本发明还公开了D16、一种服务器,包括:
第一插件对象的参数信息接收模块,适于接收浏览器侧发送的第一插件对象的参数信息;
第二插件对象的参数信息返回模块,适于依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧,由所述浏览器侧依据所述第二插件对象的参数信息创建第二插件对象;建立代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行所述网页的加载,其中,所述代理对象为浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时创建。
D17、如D16所述的服务器,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;
所述第二插件对象的参数信息返回模块还适于:
依据所述第一文件的URL,判断在服务器侧预置的映射表中是否存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL;
若是,则依据所述第二文件的URL获取第二插件对象的标识;
将所述第二插件对象的标识以及第二文件的URL返回浏览器侧。
D18、如D16或D17所述的服务器,还包括:
提示信息返回模块,适于在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时,返回提示信息,由所述浏览器侧依据所述提示信息,创建第一插件对象,并采用所述第一插件对象进行所述网页的加载。

Claims (18)

1.一种加载插件的方法,包括:
当浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;
将所述第一插件对象的参数信息发送至服务器侧;
接收所述服务器侧返回的第二插件对象的参数信息,所述第二插件对象的参数信息通过服务器侧在依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时提取获得;所述第二插件对象为ActiveX插件;
依据所述第二插件对象的参数信息创建第二插件对象;
建立所述代理对象与所述第二插件对象的关联;
采用所述代理对象配置所述第二插件对象运行的脚本;
采用所述第二插件对象根据所述脚本进行所述网页的加载;
其中,所述判断存在可替换的第二插件对象的步骤为:
当服务器侧接收到浏览器侧上传的第一插件对象的标识以及第一文件的URL时,获得该第一插件对象的第一文件的URL中的文件名、文件大小和文件哈希值的文件信息,在映射表中查找与所述第一文件的URL中的文件名,文件大小和文件哈希值相同的文件名,文件大小和文件哈希值,若查找成功,则确定进行第二插件对象的替换。
2.如权利要求1所述的方法,其特征在于,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;当存在可替换的第二插件对象时,所述第二文件的URL中的文件名,文件大小和文件哈希值,与所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
3.如权利要求1或2所述的方法,其特征在于,还包括:
浏览器侧接收服务器侧返回的提示信息,所述提示信息通过服务器侧在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时生成;
依据所述提示信息,创建第一插件对象;
采用所述第一插件对象进行所述网页的加载。
4.如权利要求2所述的方法,其特征在于,所述第一插件对象的参数信息还包括第一功能函数,所述第二插件对象运行的脚本包括第二插件对象的第二功能函数,所述采用所述代理对象配置所述第二插件对象运行的脚本的步骤包括:
在调用所述第一功能函数时,采用所述代理对象将所述第一功能函数替换为对应的第二功能函数;
采用所述代理对象按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
5.如权利要求4所述的方法,其特征在于,所述代理对象通过调度接口IDispatch接口将所述第一功能函数替换为第二插件对象中对应的第二功能函数。
6.如权利要求1所述的方法,其特征在于,在浏览器侧加载网页的过程中钩挂hook到cogetclassobject函数时,即拦截到第一插件对象的创建需求。
7.一种加载插件的方法,包括:
接收浏览器侧发送的第一插件对象的参数信息;
依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧,由所述浏览器侧依据所述第二插件对象的参数信息创建第二插件对象;建立代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行网页的加载,其中,所述代理对象为浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时创建;所述第二插件对象为ActiveX插件;
其中,所述判断存在可替换的第二插件对象的步骤为:
当服务器侧接收到浏览器侧上传的第一插件对象的标识以及第一文件的URL时,获得该第一插件对象的第一文件的URL中的文件名、文件大小和文件哈希值的文件信息,在映射表中查找与所述第一文件的URL中的文件名,文件大小和文件哈希值相同的文件名,文件大小和文件哈希值,若查找成功,则确定进行第二插件对象的替换。
8.如权利要求7所述的方法,其特征在于,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;
所述依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧的步骤,具体包括:
依据所述第一文件的URL,判断在服务器侧预置的映射表中是否存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL;
若是,则依据所述第二文件的URL获取第二插件对象的标识;
将所述第二插件对象的标识以及第二文件的URL返回浏览器侧。
9.如权利要求7或8所述的方法,其特征在于,还包括:
在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时,返回提示信息,由所述浏览器侧依据所述提示信息,创建第一插件对象,并采用所述第一插件对象进行所述网页的加载。
10.一种浏览器,包括:
代理对象创建模块,适于在浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时,创建代理对象,并获取所述第一插件对象的参数信息;
第一插件对象的参数信息发送模块,适于将所述第一插件对象的参数信息发送至服务器侧;
第二插件对象的参数信息接收模块,适于接收所述服务器侧返回的第二插件对象的参数信息,所述第二插件对象的参数信息通过服务器侧在依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时提取获得;所述第二插件对象为ActiveX插件;其中,当服务器侧接收到浏览器侧上传的第一插件对象的标识以及第一文件的URL时,获得该第一插件对象的第一文件的URL中的文件名、文件大小和文件哈希值的文件信息,在映射表中查找与所述第一文件的URL中的文件名,文件大小和文件哈希值相同的文件名,文件大小和文件哈希值,若查找成功,则确定进行第二插件对象的替换
第二插件对象创建模块,适于依据所述第二插件对象的参数信息创建第二插件对象;
关联建立模块,适于建立所述代理对象与所述第二插件对象的关联;
脚本配置模块,适于采用所述代理对象配置所述第二插件对象运行的脚本;
第一页面加载模块,适于采用所述第二插件对象根据所述脚本进行所述网页的加载。
11.如权利要求10所述的浏览器,其特征在于,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;当存在可替换的第二插件对象时,所述第二文件的URL中的文件名,文件大小和文件哈希值,与所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
12.如权利要求10或11所述的浏览器,其特征在于,还包括:
提示信息接收模块,适于接收服务器侧返回的提示信息,所述提示信息通过服务器侧在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时生成;
第一插件对象创建模块,适于依据所述提示信息,创建第一插件对象;
第二页面加载模块,适于采用所述第一插件对象进行所述网页的加载。
13.如权利要求11所述的浏览器,其特征在于,所述第一插件对象的参数信息还包括第一功能函数,所述第二插件对象运行的脚本包括第二插件对象的第二功能函数,所述脚本配置模块还适于:
在调用所述第一功能函数时,采用所述代理对象将所述第一功能函数替换为对应的第二功能函数;
采用所述代理对象按照所述第二功能函数以及所述第二文件的URL配置所述第二插件对象运行的脚本。
14.如权利要求13所述的浏览器,其特征在于,所述代理对象通过调度接口IDispatch接口将所述第一功能函数替换为第二插件对象中对应的第二功能函数。
15.如权利要求10所述的浏览器,其特征在于,在浏览器侧加载网页的过程中钩挂hook到cogetclassobject函数时,即拦截到第一插件对象的创建需求。
16.一种服务器,包括:
第一插件对象的参数信息接收模块,适于接收浏览器侧发送的第一插件对象的参数信息;
第二插件对象的参数信息返回模块,适于依据所述第一插件对象的参数信息判断存在可替换的第二插件对象时,提取所述第二插件对象的参数信息返回浏览器侧,由所述浏览器侧依据所述第二插件对象的参数信息创建第二插件对象;建立代理对象与所述第二插件对象的关联;采用所述代理对象配置所述第二插件对象运行的脚本;采用所述第二插件对象根据所述脚本进行网页的加载,其中,所述代理对象为浏览器侧在加载网页的过程中拦截到第一插件对象的创建需求时创建;所述第二插件对象为ActiveX插件;其中,当服务器侧接收到浏览器侧上传的第一插件对象的标识以及第一文件的URL时,获得该第一插件对象的第一文件的URL中的文件名、文件大小和文件哈希值的文件信息,在映射表中查找与所述第一文件的URL中的文件名,文件大小和文件哈希值相同的文件名,文件大小和文件哈希值,若查找成功,则确定进行第二插件对象的替换。
17.如权利要求16所述的服务器,其特征在于,所述第一插件对象的参数信息包括第一插件对象的标识以及第一文件的URL,所述第二插件对象的参数信息包括第二插件对象的标识以及第二文件的URL,所述第一文件的URL为按照第一插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL为按照第二插件对象的协议生成的URL,包括文件名,文件大小和文件哈希值;
所述第二插件对象的参数信息返回模块还适于:
依据所述第一文件的URL,判断在服务器侧预置的映射表中是否存在与所述文件名,文件大小和文件哈希值相同的第二文件的URL;
若是,则依据所述第二文件的URL获取第二插件对象的标识;
将所述第二插件对象的标识以及第二文件的URL返回浏览器侧。
18.如权利要求16或17所述的服务器,其特征在于,还包括:
提示信息返回模块,适于在依据所述第一插件对象的参数信息判断不存在可替换的第二插件对象时,返回提示信息,由所述浏览器侧依据所述提示信息,创建第一插件对象,并采用所述第一插件对象进行所述网页的加载。
CN201310513333.XA 2013-10-25 2013-10-25 一种加载插件的方法、浏览器和服务器 Active CN103577227B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310513333.XA CN103577227B (zh) 2013-10-25 2013-10-25 一种加载插件的方法、浏览器和服务器
PCT/CN2014/089473 WO2015058716A1 (zh) 2013-10-25 2014-10-24 一种加载插件的方法、浏览器和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310513333.XA CN103577227B (zh) 2013-10-25 2013-10-25 一种加载插件的方法、浏览器和服务器

Publications (2)

Publication Number Publication Date
CN103577227A CN103577227A (zh) 2014-02-12
CN103577227B true CN103577227B (zh) 2017-01-18

Family

ID=50049074

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310513333.XA Active CN103577227B (zh) 2013-10-25 2013-10-25 一种加载插件的方法、浏览器和服务器

Country Status (2)

Country Link
CN (1) CN103577227B (zh)
WO (1) WO2015058716A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577227B (zh) * 2013-10-25 2017-01-18 北京奇虎科技有限公司 一种加载插件的方法、浏览器和服务器
CN103810008B (zh) * 2014-02-19 2018-03-02 迈普通信技术股份有限公司 插件加载方法及系统
CN105893092B (zh) * 2016-04-01 2021-02-12 腾讯科技(深圳)有限公司 Com组件处理方法和装置
CN106789535B (zh) * 2016-12-29 2019-12-06 杭州迪普科技股份有限公司 Ssl vpn的ip接入方法及装置
CN110908726A (zh) * 2018-09-14 2020-03-24 广州神马移动信息科技有限公司 数据管理方法、装置、设备及计算机可读存储介质
CN110968358A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 一种基于浏览器插件加载脚本模块的方法及装置
CN110062195A (zh) * 2019-04-19 2019-07-26 视联动力信息技术股份有限公司 一种视频会议接入方法及系统
CN110580156A (zh) * 2019-08-21 2019-12-17 北京摩拜科技有限公司 页面处理方法、装置及电子设备
CN110806882B (zh) * 2019-11-08 2023-05-26 山东德昌电子科技有限公司 一种监控插件安装的方法及系统
CN111124713B (zh) * 2019-12-24 2024-03-26 北京安兔兔科技有限公司 设备系统函数调用方法、装置、终端设备和存储介质
CN113204336A (zh) * 2021-05-21 2021-08-03 珠海金山网络游戏科技有限公司 一种游戏平台创建方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567516A (zh) * 2011-12-28 2012-07-11 华为技术有限公司 脚本加载方法及装置
CN102929656A (zh) * 2012-09-28 2013-02-13 北京奇虎科技有限公司 使用浏览器中内置ActiveX插件的方法和客户端
CN103019733A (zh) * 2012-12-25 2013-04-03 北京奇虎科技有限公司 一种用于浏览器的活动对象执行方法、系统及浏览器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103179166A (zh) * 2011-12-23 2013-06-26 腾讯科技(深圳)有限公司 在客户端中提供服务的方法和客户端
CN103577227B (zh) * 2013-10-25 2017-01-18 北京奇虎科技有限公司 一种加载插件的方法、浏览器和服务器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567516A (zh) * 2011-12-28 2012-07-11 华为技术有限公司 脚本加载方法及装置
CN102929656A (zh) * 2012-09-28 2013-02-13 北京奇虎科技有限公司 使用浏览器中内置ActiveX插件的方法和客户端
CN103019733A (zh) * 2012-12-25 2013-04-03 北京奇虎科技有限公司 一种用于浏览器的活动对象执行方法、系统及浏览器

Also Published As

Publication number Publication date
CN103577227A (zh) 2014-02-12
WO2015058716A1 (zh) 2015-04-30

Similar Documents

Publication Publication Date Title
CN103577227B (zh) 一种加载插件的方法、浏览器和服务器
US11500946B2 (en) Apparatus for providing browsing capability between remote/virtual windows and from remote/virtual windows to conventional hypertext documents
US9342613B2 (en) Display and installation of portlets on a client platform
US6347398B1 (en) Automatic software downloading from a computer network
CN105389222B (zh) 一种动态调用原生接口的方法、装置和系统
US7634772B2 (en) Automatic software downloading from a computer network
CN102982169B (zh) 用于隔离网页插件的浏览器和方法
US8612947B2 (en) System and method for remotely compiling multi-platform native applications for mobile devices
US8191039B2 (en) Developmental tool and method for automating detection and construction of notification-based component applications
CN106406961A (zh) 一种基于浏览器加载、提供应用程序的方法、装置
US9182953B2 (en) Hybrid dynamic code compiling device, method, and service system thereof
EP1499966A2 (en) Automated installation of an application
CN103177115B (zh) 一种提取网页页面链接的方法和装置
CN105512190A (zh) 界面跳转方法及装置
CN102156650B (zh) 一种实现补丁自动分析的方法及装置
CN103853851B (zh) 浏览器中的文件下载方法和浏览器装置
CN107026854B (zh) 漏洞验证方法及装置
Moodie Pro Apache Tomcat 6
CN112559278B (zh) 操作数据的获取方法和装置
Shepherd Microsoft ASP. NET 4 Step by Step
CN106445530A (zh) 一种将客户端应用软件转换为网页软件的方法、装置
CN102075646A (zh) 呼叫中心设备控制系统及方法
CN105867953A (zh) 应用程序升级包生成方法和应用程序升级方法及对应装置
CN114296783A (zh) 调用安装包方法、装置、电子设备及存储介质
CN111475183A (zh) django项目部署方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220725

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.