具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)浏览器扩展,浏览器提供的一种独立于页面的JavaScript运行方式,可以针对不同场景定制功能;例如,AdBlock Plus扩展提供了广告过滤功能。
2)SDK,指定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合,通常包括相关文档、范例和工具。
3)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
4)交易(Transaction),等同于计算机术语“事务”,交易包括了需要提交到区块链网络执行的操作,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。
例如,部署(Deploy)交易用于向区块链网络中的节点安装指定的智能合约并准备好被调用;调用(Invoke)交易用于通过调用智能合约在区块链中追加交易的记录,并对区块链的状态数据库进行操作,包括更新操作(包括增加、删除和修改状态数据库中的键值对)和查询操作(即查询状态数据库中的键值对)。
5)区块链(Blockchain),是由区块(Block)形成的加密的、链式的交易的存储结构。
6)区块链网络(Blockchain Network),通过共识的方式将新区块纳入区块链的一系列的节点的集合。
7)账本(Ledger),是区块链(也称为账本数据)和与区块链同步的状态数据库的统称。其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(Key)值(Value)对的形式来记录区块链中的交易,用于支持对区块链中交易的快速查询。
8)智能合约(Smart Contracts),也称为链码(Chaincode)或应用代码,部署在区块链网络的节点中的程序,节点执行接收的交易中所调用的智能合约,来对状态数据库的键值对数据进行更新或查询的操作。
9)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
参见图1,图1是本发明实施例提供的扩展接口的调用系统100的架构示意图,为实现支撑一个示例性应用,终端400通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。
在一些实施例中,终端400上设置有浏览器,服务器200为浏览器所呈现的目标页面所对应的后台服务器,浏览器内置有浏览器扩展插件410,浏览器扩展插件410随浏览器发行,支持独立升级。
终端400,用于通过浏览器呈现目标页面,使用户基于呈现的目标页面进行页面操作,该页面操作触发通过目标页面发送针对浏览器的扩展接口的调用请求给浏览器扩展插件410;
浏览器扩展插件410,用于响应于调用请求,获取目标页面的页面信息;基于目标页面的页面信息,对目标页面进行调用权限验证,得到验证结果;当验证结果表征目标页面具备对扩展接口的调用权限时,基于接口参数,调用浏览器的扩展接口,得到调用结果;返回得到的调用结果;
终端400,用于通过浏览器,基于调用结果呈现页面操作对应的功能页面。
在实际应用中,服务器既可以为单独配置的支持各种业务的一个服务器,亦可以配置为一个服务器集群;终端可以为智能手机、平板电脑、笔记本电脑等各种类型的用户终端,还可以为可穿戴计算设备、个人数字助理(PDA)、台式计算机、蜂窝电话、媒体播放器、导航设备、游戏机、电视机、或者这些数据处理设备或其他数据处理设备中任意两个或多个的组合。
接下来对实施本发明实施例的扩展接口的调用方法的电子设备进行说明。在一些实施例中,电子设备可以为智能手机、平板电脑、笔记本电脑等各种类型的终端,还可以为服务器。参见图2,图2是本发明实施例提供的电子设备的结构示意图,图2所示的电子设备包括:处理器210、存储器250、网络接口220和用户接口230。电子设备中的各个组件通过总线系统240耦合在一起。可理解,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统240。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本发明实施例描述的存储器250旨在包括任意适合类型的存储器。
在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
显示模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的扩展接口的调用装置可以采用软件方式实现,图2示出了存储在存储器250中的扩展接口的调用装置255,其可以是程序和插件等形式的软件,包括以下软件模块:接收模块2551、获取模块2552、验证模块2553、调用模块2554、返回模块2555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的扩展接口的调用装置可以采用硬件方式实现,作为示例,本发明实施例提供的扩展接口的调用装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的扩展接口的调用方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
基于上述对本发明实施例的扩展接口的调用系统及电子设备的说明,接下来对本发明实施例提供的扩展接口的调用方法的流程示意图,图3为本发明实施例提供的扩展接口的调用方法,结合图1及图3,对本发明实施例提供的扩展接口的调用方法进行说明。
步骤301:浏览器扩展插件接收到针对浏览器的扩展接口的调用请求。
这里,调用请求通过浏览器呈现的目标页面中的页面操作所触发,携带有扩展接口的接口参数。
在实际实施时,终端上设置有浏览器,该浏览器为基于内置有浏览器扩展插件,浏览器扩展插件随浏览器客户端发行,支持独立升级。终端通过浏览器呈现目标页面,用户可以通过在浏览器上,针对目标页面中的功能按键执行点击操作,以触发对应该功能按键的扩展接口的调用请求,通过该目标页面将调用请求发送给浏览器扩展插件。
示例性地,以实现“一键导入书签”的功能为例,图4为本发明实施例提供的目标页面的界面示意图,参见图4,目标页面为浏览器的新手引导页面,新手引导页面中设置有“一键导入书签”的功能按键,用户可以通过点击该功能按键,触发针对对应“一键导入书签”浏览器的扩展接口的调用请求,终端通过新手引导页面将该调用请求发送给浏览器扩展插件,浏览器扩展插件接收到该调用请求。
在另一些实施例中,针对浏览器的扩展接口可以由其他浏览器插件发送。
步骤302:响应于调用请求,获取目标页面的页面信息。
这里,目标页面为调用请求的来源,通过获取目标页面的页面信息来确定调用请求的来源。
在一些实施例中,浏览器扩展插件还会对浏览器是否支持所要调用的扩展接口进行判断:响应于调用请求,获取浏览器的版本信息;基于浏览器的版本信息,确定所述浏览器支持扩展接口的调用时,获取目标页面的页面信息。
这里,只有当浏览器支持所要调用的扩展接口时,才能够实现扩展接口的调用,否则会导致调用崩溃的问题。由于每个版本的浏览器所支持的扩展接口不同,在实际实施时,浏览器扩展插件可以通过获取浏览器的版本信息,获取该版本的浏览器所支持的扩展接口,当该版本的浏览器所支持的扩展接口中存在所要调用的扩展接口时,表示该浏览器支持该扩展接口的调用,那么可以获取目标页面的页面信息,以执行下一步的操作。
本发明实施例通过浏览器扩展插件根据浏览器的版本信息,来检查该版本的浏览器是否支持所要调用的扩展接口,只有在支持所要调用的扩展接口时,才进行下一步操作,如此,解决了当前浏览器不支持被调用接口,导致调用崩溃的问题。
在一些实施例中,确定浏览器不支持扩展接口的调用时,返回第一错误信息,以基于第一错误信息,呈现用于提示下载最新版本的浏览器的提示信息。
在实际实施时,当该版本的浏览器所支持的扩展接口中不存在所要调用的扩展接口时,表示该版本的浏览器不支持所要调用的扩展接口,生成第一错误信息,并返回。浏览器基于第一错误信息,生成提示信息,以提示用于下载最新版本的浏览器。这里,提示信息可以为文字信息、图片信息等。
在一些实施例中,浏览器在呈现提示信息的同时,还会呈现最新版本的浏览器的下载功能键,以使用户可以直接根据提示信息,下载最新版本的浏览器。
例如,图5为本发明实施例提供的包含提示信息的界面示意图,参见图5,在浏览器不支持所要调用的扩展接口时,生成一个小窗口,在小窗口中呈现提示信息。这里,小窗口还呈现有用于下载最新版本的浏览器的功能键,用户可以通过点击该功能键,直接下载最新版本的浏览器。如此,用户能够快速获取到最新版本的浏览器,而无需自己查找最新版本的浏览器的下载地址,提升了用户的体验感。
在一些实施例中,浏览器的扩展接口响应于调用请求,获取目标页面对应的统一资源定位符URL、网际互连协议IP地址及域名;将以下至少之一作为目标页面的页面信息:URL、IP地址、域名。
这里,目标页面对应的URL、IP地址及域名均能够唯一确定目标页面。在实际实施时,浏览器可以监听到用户使用浏览器访问的目标页面URL。并且,终端可以通过构建虚拟专用网络VPN服务进程获取目标页面对应的TCP数据包和DNS数据包,其中,VPN服务进程包含传输控制协议TCP代理服务模块和域名系统DNS代理服务模块。浏览器扩展插件可以通过解析TCP数据包获取IP地址,通过解析DNS数据包获取域名。
步骤303:基于目标页面的页面信息,对目标页面进行调用权限验证,得到验证结果。
在一些实施例中,浏览器扩展插件可以将目标页面的页面信息传送给接口权限管理后台,由接口权限管理后台对目标页面进行调用权限验证,得到验证结果后,在返回给浏览器扩展插件;在另一些实施例中,权限管理数据内置于浏览器扩展插件中,浏览器扩展插件直接基于内置的权限管理数据对目标页面进行调用权限验证。
在实际实施时,将权限管理数据内置于浏览器扩展插件中,可以通过对浏览器扩展插件进行更新,进而对权限管理数据进行更新,以修改扩展接口的调用权限,如此,更利于对调用权限的灵活管理。
在一些实施例中,当仅允许特定页面对扩展接口进行调用时,浏览器扩展插件将目标页面的页面信息与可调用扩展接口的页面列表中的页面信息进行匹配;当页面列表中存在与目标页面的页面信息相匹配的页面信息时,确定目标页面具备对扩展接口的调用权限。
在实际实施时,将扩展接口的标识信息与可调用该扩展接口的页面列表进行关联存储,在对目标页面进行调用权限验证时,根据所需调用的扩展接口的标识信息,查找可调用该扩展接口的页面列表,列表中存储有具有调用权限的页面的页面信息。这里,页面信息包括以下至少之一:URL、IP地址、域名。
在一些实施例中,页面列表中的页面信息可以为完整的页面信息,如www.abc.com,也可以为模糊的页面信息,如www.a**.com。当页面列表中的页面信息为完整的页面信息时,目标页面的页面信息与页面列表中的某一页面信息完全相同时,则表示目标页面的页面信息与页面列表中的页面信息相匹配;当页面列表中的页面信息为模糊的页面信息时,如果目标页面的页面信息除了“*”出,其它均与页面列表中的页面信息相同,则表示目标页面的页面信息与页面列表中的页面信息相匹配,例如,“www.aaa.com”与“www.a**.com”相匹配。
需要说明的是,当页面列表中不存在与目标页面的页面信息相匹配的页面信息时,确定目标页面不具备对扩展接口的调用权限。
在一些实施例中,当仅允许特定页面在特定时间段内对扩展接口进行调用时,浏览器扩展插件获取所述调用请求所对应的触发时间;当基于页面信息确定所述目标页面存在于页面白名单中、且所述触发时间满足接口调用的时间要求时,确定所述目标页面具备对所述扩展接口的调用权限。
在实际实施时,浏览器扩展插件先将目标页面的页面信息与页面白名单中的页面信息进行匹配,当页面白名单中存在于目标页面的页面信息相匹配的页面信息时,表示目标页面存在于页面白名单中;然后再判断触发时间是否处于可调用的时间段内,若是,则表示触发时间满足接口调用的时间要求,进而确定目标页面具备对扩展接口的调用权限。需要说明的是,当目标页面不存在与页面白名单中,或触发时间不满足接口调用的时间要求时,均表示目标页面不具备对扩展接口的调用权限。
例如,扩展接口只允许新手引导页面在活动期间调用时,先基于目标页面的页面信息判断目标页面是否与新手引导页面的页面信息相同,若是,则进一步判断调用请求所对应的触发时间是否处于活动期间所对应的时间段内,若是,则确定目标页面具备扩展接口的调用权限。
在一些实施例中,当验证结果表征目标页面不具备对扩展接口的调用权限时,返回第二错误信息,以基于第二错误信息,呈现目标页面不具备调用权限的提示信息。
在实际实施时,通过呈现目标页面不具备调用权限的提示信息,能够让用户知道调用失败的原因,从而提高用户的体验感。
例如,图6为本发明实施例提供的提示信息的界面示意图,参见图6,当验证结果表征目标页面不具备对扩展接口的调用权限时,显示提示信息“当前页面不具备一键导入权限,请使用新手引导页面”,如此,用户能够找到具备调用权限的页面,以通过该页面实现一键导入书签的功能。
在一些实施例中,当浏览器不支持扩展接口的调用,或目标页面没有调用扩展接口的权限时,浏览器还会对调用异常信息进行统计。
在一些实施例中,当扩展接口的调用请求由浏览器插件发送时,内置浏览器扩展插件检查该浏览器插件是否有权限调用该扩展接口。在实际实施时,内置的浏览器扩展插件会获取该浏览器插件的插件信息,如插件标识,以根据插件标识,判断该浏览器插件是否有权限调用该扩展接口。
步骤304:当验证结果表征目标页面具备对扩展接口的调用权限时,基于接口参数,调用浏览器的扩展接口,得到调用结果。
在实际实施时,浏览器扩展插件将接口参数传输给扩展接口,使得扩展接口根据接口参数运行,得到调用结果。
在一些实施例中,浏览器扩展接口所对应的扩展功能,可以改用动态链接库(例如Windows DLL)实现,让浏览器动态加载动态库,从而实现动态权限管理。
在一些实施例中,浏览器扩展插件可以通过以下方式得到调用结果:将接口参数转换为对应扩展接口的目标数据结构的参数;基于目标数据结构的参数,调用浏览器的扩展接口,以得到功能页面对应的页面数据。
在实际实施时,浏览器扩展插件将接口参数转换为扩展接口能够识别的目标数据结构的参数,再将目标数据结构的参数传输给扩展接口,以使扩展接口基于目标数据结构的参数运行对应的函数,以获取功能页面对应的页面数据。
在一些实施例中,当扩展接口的调用请求由浏览器插件发送时,确定验证结果表征目标页面具备对扩展接口的调用权限时,基于接口参数,调用浏览器的扩展接口,得到调用结果。
步骤305:返回得到的调用结果,以基于调用结果呈现页面操作对应的功能页面。
在实际实施时,获取到功能页面对应的页面数据后,返回页面数据,浏览器基于页面数据,渲染并呈现对应的功能页面。这里,浏览器可以直接在原页面中呈现功能页面,也可以生成一个小窗口,在小窗口中呈现功能页面。
例如,图7为本发明实施例提供的功能页面的界面示意图,参见图7,浏览器呈现“导入书签”的功能页面,以将其他浏览器的书签和本地书签导入到浏览器的文件夹中。
在一些实施例中,还可以结合区块链技术,在对目标页面进行调用权限验证,得到验证结果,将对应目标页面的验证结果存储至区块链网络,以使下一次目标页面请求调用扩展接口时,可以直接从区块链网络获取到对应目标页面的验证结果。
这里,对目标页面进行调用权限验证后,生成用于存储对应目标页面的验证结果的交易,提交生成的交易至区块链网络的节点,以使所述节点对交易共识后存储对应验证结果至区块链网络;在存储至区块链网络之前,终端还可获取密钥对应的验证结果的摘要信息;将得到的密钥的摘要信息存储至区块链网络。
参见图8,图8为本发明实施例提供的区块链网络的应用架构示意图,包括业务主体400、验证中心500、区块链网络600(示例性示出了共识节点610-1至共识节点610-3),下面分别说明。
区块链网络600的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的电子设备例如用户终端和服务器,都可以在不需要授权的情况下接入区块链网络600;以联盟链为例,业务主体在获得授权后其下辖的电子设备(例如终端/服务器)可以接入区块链网络600,此时,成为区块链网络600中的一类特殊的节点即客户端节点。
在一些实施例中,客户端节点可以只作为区块链网络600的观察者,即提供支持业务主体发起交易(例如,用于上链存储数据或查询链上数据)功能,对于区块链网络600的共识节点610的功能,例如排序功能、共识服务和账本功能等,服务器节点可以缺省或者有选择性(例如,取决于业务主体的具体业务需求)地实施。从而,可以将业务主体的数据和业务处理逻辑最大程度迁移到区块链网络600中,通过区块链网络600实现数据和业务处理过程的可信和可追溯。
区块链网络600中的共识节点接收来自业务主体400的客户端节点提交的交易,执行交易以更新账本或者查询账本,执行交易的各种中间结果或最终结果可以返回业务主体的客户端节点中显示。
下面以业务主体接入区块链网络以实现扩展接口的调用为例,说明区块链网络的示例性应用。
参见图8,扩展接口的调用涉及的业务主体400,从认证中心500进行登记注册获得数字证书,数字证书中包括业务主体的公钥、以及认证中心600对业务主体的公钥和身份信息签署的数字签名,用来与业务主体针对交易的数字签名一起附加到交易中,并被发送到区块链网络,以供区块链网络从交易中取出数字证书和签名,验证消息的可靠性(即是否未经篡改)和发送消息的业务主体的身份信息,区块链网络会根据身份进行验证,例如是否具有发起交易的权限。业务主体下辖的电子设备(例如终端或者服务器)运行的客户端都可以向区块链网络600请求接入而成为客户端节点。
业务主体400的客户端节点用于扩展接口的调用,例如,接收到针对浏览器的扩展接口的调用请求;响应于调用请求,获取目标页面的页面信息;基于目标页面的页面信息,对目标页面进行调用权限验证,得到验证结果;将验证结果存储至区块链网络;当验证结果表征目标页面具备对扩展接口的调用权限时,基于接口参数,调用浏览器的扩展接口,得到调用结果;返回得到的调用结果,以基于调用结果呈现页面操作对应的功能页面。
其中,将验证结果存储至区块链网络600的操作,可以预先在客户端节点420设置业务逻辑,当基于目标页面的页面信息,对目标页面进行调用权限验证,得到验证结果时,客户端节点420将验证结果自动发送至区块链网络600,也可以由业务主体500的业务人员在客户端节点420中登录,手动打包验证结果,并将其发送至区块链网络600。在发送时,客户端节点420根据对应验证结果生成对应存储操作的交易,在交易中指定了实现存储操作需要调用的智能合约、以及向智能合约传递的参数,交易还携带了客户端节点420的数字证书、签署的数字签名(例如,使用客户端节点420的数字证书中的私钥,对交易的摘要进行加密得到),并将交易广播到区块链网络600中的共识节点610。
区块链网络600中的共识节点610中接收到交易时,对交易携带的数字证书和数字签名进行验证,验证成功后,根据交易中携带的业务主体400的身份,确认业务主体400是否是具有交易权限,数字签名和权限验证中的任何一个验证判断都将导致交易失败。验证成功后签署节点610自己的数字签名(例如,使用节点610-1的私钥对交易的摘要进行加密得到),并继续在区块链网络600中广播。
区块链网络600中的共识节点610接收到验证成功的交易后,将交易填充到新的区块中,并进行广播。区块链网络600中的共识节点610广播的新区块时,会对新区块进行共识过程,如果共识成功,则将新区块追加到自身所存储的区块链的尾部,并根据交易的结果更新状态数据库,执行新区块中的交易:对于提交更新验证结果的交易,在状态数据库中添加验证结果。
作为区块链的示例,参见图9,图9为本发明实施例提供的区块链网络600中区块链的结构示意图,每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,新产生的交易的记录被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长,区块之间基于哈希值的链式结构保证了区块中交易的防篡改和防伪造。
下面说明本发明实施例提供的区块链网络的示例性的功能架构,参见图10,图10为本发明实施例提供的区块链网络600的功能架构示意图,包括应用层601、共识层602、网络层603、数据层9604和资源层605,下面分别进行说明。
资源层605封装了实现区块链网路600中的节点的计算资源、存储资源和通信资源。
数据层604封装了实现账本的各种数据结构,包括以文件系统中的文件实现的区块链,键值型的状态数据库和存在性证明(例如区块中交易的哈希树)。
网络层603封装了点对点(P2P,Point to Point)网络协议、数据传播机制和数据验证机制、接入认证机制和业务主体身份管理的功能。
其中,P2P网络协议实现区块链网络600中节点之间的通信,数据传播机制保证了交易在区块链网络600中的传播,数据验证机制用于基于加密学方法(例如数字证书、数字签名、公/私钥对)实现节点之间传输数据的可靠性;接入认证机制用于根据实际的业务场景对加入区块链网络600的业务主体的身份进行认证,并在认证通过时赋予业务主体接入区块链网络600的权限;业务主体身份管理用于存储允许接入区块链网络600的业务主体的身份、以及权限(例如能够发起的交易的类型)。
共识层602封装了区块链网络600中的节点对区块达成一致性的机制(即共识机制)、交易管理和账本管理的功能。共识机制包括POS、POW和DPOS等共识算法,支持共识算法的可插拔。
交易管理用于验证节点接收到的交易中携带的数字签名,验证业务主体的身份信息,并根据身份信息判断确认其是否具有权限进行交易(从业务主体身份管理读取相关信息);对于获得接入区块链网络600的授权的业务主体而言,均拥有认证中心颁发的数字证书,业务主体利用自己的数字证书中的私钥对提交的交易进行签名,从而声明自己的合法身份。
账本管理用于维护区块链和状态数据库。对于取得共识的区块,追加到区块链的尾部;执行取得共识的区块中的交易,当交易包括更新操作时更新状态数据库中的键值对,当交易包括查询操作时查询状态数据库中的键值对并向业务主体的服务器节点返回查询结果。支持对状态数据库的多种维度的查询操作,包括:根据区块序列号(例如交易的哈希值)查询区块;根据区块哈希值查询区块;根据交易序列号查询区块;根据交易序列号查询交易;根据业务主体的账号(序列号)查询业务主体的账号数据;根据通道名称查询通道中的区块链。
应用层601封装了区块链网络能够实现的各种业务,包括交易的溯源、存证和验证等。
本发明通过获取目标页面的页面信息,对目标页面进行调用权限验证,在目标页面具备对所述扩展接口的调用权限时,基于所述接口参数,调用所述浏览器的扩展接口,得到调用结果;由于扩展接口的调用权限并不是由浏览器控制,在需要修改扩展接口的调用权限时,无需重新更新整个浏览器,如此,能够灵活地对调用权限进行控制。
下面以调用“一键导入书签”的功能所对应的扩展接口为例,说明本发明实施例的扩展接口的调用方法。图11为本发明实施例提供的扩展接口的调用方法的流程示意图,参见图11,本发明实施例提供的扩展接口的调用方法包括:
步骤701:通过新手引导页面发送针对“一键导入书签”的功能所对应的扩展接口的调用请求。
在实际实施时,参见图4,通过浏览器呈现新手引导页面,新手引导页面中设置有“一键导入书签”的功能按键,用户可以通过点击该功能按键,触发针对对应“一键导入书签”浏览器的扩展接口的调用请求,通过新手引导页面将该调用请求发送给浏览器扩展插件,浏览器扩展插件接收到该调用请求。
步骤702:浏览器扩展插件从浏览器获取浏览器的版本信息。
步骤703:浏览器扩展插件基于浏览器的版本信息,判断当前版本的浏览器是否支持“一键导入书签”的功能所对应的扩展接口的调用。
由于每个版本的浏览器所支持的扩展接口不同,在实际实施时,浏览器扩展插件可以通过获取浏览器的版本信息,获取该版本的浏览器所支持的扩展接口,当该版本的浏览器所支持的扩展接口中存在所要调用的扩展接口时,表示该浏览器支持该扩展接口的调用;否则,表示不支持。
步骤704:确定当前版本的浏览器支持“一键导入书签”的功能所对应的扩展接口的调用时,获取新手引导页面的URL。
在一些实施例中,确定当前版本的浏览器不支持“一键导入书签”的功能所对应的扩展接口的调用时,生成第一错误信息,并返回给新手引导页面,以基于第一错误信息,生成提示信息,提示用于下载最新版本的浏览器。
步骤705:将新手引导页面的URL与可调用扩展接口的页面列表中的URL进行匹配。
步骤706:当页面列表中存在新手引导页面的URL时,获取调用请求所对应的触发时间。
在一些实施例中,当页面列表中不存在新手引导页面的URL时,返回错误信息给新手引导页面,以呈现相应的提示信息,提示用户该页面没有权限调用该扩展接口。
步骤707:判断触发时间是否处于活动时间段内。
步骤708:确定触发时间处于活动时间段内,将接口参数转换为对应扩展接口的目标数据结构的参数。
在一些实施例中,当触发时间不处于活动时间段内,返回错误信息给新手引导页面,以呈现相应的提示信息,提示用户当前没有权限调用该扩展接口。
步骤709:基于目标数据结构的参数,调用浏览器的扩展接口,以得到功能页面对应的页面数据。
在实际实施时,将目标数据结构的参数传输给扩展接口,以使浏览器的扩展接口基于目标数据结构的参数运行,得到功能页面对应的页面参数。
步骤710:返回页面数据。
步骤711:基于页面数据,通过浏览器内核渲染并呈现“一键导入书签”的功能页面。
在实际实施时,参见图7,浏览器呈现“导入书签”的功能页面,以将其他浏览器的书签和本地书签导入到浏览器的文件夹中。
下面,将说明本发明实施例在一个实际的应用场景中的示例性应用。本发明实施例提供的扩展接口的调用方法涉及浏览器客户端、内置的浏览器扩展插件、接口权限管理后台。
其中,浏览器定制了一组JavaScript扩展接口,并限制只允许内置的浏览器扩展插件调用这些扩展接口,而不允许其他浏览器扩展插件或页面直接调用;另外,还实现了对各扩展接口调用的统计、上报功能,用于排查外部JavaScript环境的健康情况。
内置的浏览器扩展插件是一个特殊的浏览器扩展插件,随浏览器发行,支持独立升级;实现了对其他浏览器扩展插件、页面的JavaScript扩展接口调用的中转功能,向浏览器透明转发或直接拦截来自其他浏览器扩展插件或页面的扩展接口调用请求。
接口权限管理后台用于配置、存储各个命令的可调用范围,并响应内置的浏览器扩展插件的请求。这里,接口权限管理后台的数据可以放在内置的浏览器扩展插件中,并通过更新内置的浏览器扩展插件实现对权限管理数据的更新。
下面对本发明实施例提供的扩展接口的调用方法进行详细说明。图12为本发明实施例提供的扩展接口的调用方法的流程示意图,参见图12,当扩展接口的调用请求合法时,即当前浏览器支持扩展接口的调用,且目标页面有权限调用该扩展接口时,本发明实施例提供的扩展接口的调用方法包括:
步骤801:通过目标页面发送扩展接口的调用请求。
这里,终端通过浏览器呈现目标页面,用户可以通过在浏览器上,针对目标页面中的功能按键执行点击操作,以触发对应该功能按键的扩展接口的调用请求,通过该目标页面将调用请求发送给浏览器扩展插件。
示例性地,以实现“一键导入书签”的功能为例,参见图4,目标页面为浏览器的新手引导页面,新手引导页面中设置有“一键导入书签”的功能按键,用户可以通过点击该功能按键,触发针对对应“一键导入书签”浏览器的扩展接口的调用请求,终端通过新手引导页面将该调用请求发送给浏览器扩展接口,浏览器扩展接口接收到该调用请求。
在一些实施例中,扩展接口的调用请求还可以由其他浏览器插件发送。
步骤802:内置的浏览器扩展插件检查当前浏览器是否支持扩展接口的调用。
在实际实施时,内置的浏览器扩展插件可以通过获取浏览器的版本信息,基于浏览器的版本信息,判断当前浏览器是否支持该扩展接口的调用。
在一些实施例中,浏览器扩展插件可以通过获取浏览器的版本信息,获取该版本的浏览器所支持的扩展接口,当该版本的浏览器所支持的扩展接口中存在所要调用的扩展接口时,表示该浏览器支持该扩展接口的调用;否则,表示该浏览器不支持该扩展接口的调用。
步骤803:当浏览器支持该扩展接口的调用时,内置浏览器扩展插件检查目标页面是否有权限调用该扩展接口。
在实际实施时,当浏览器支持该扩展接口的调用时,内置的浏览器扩展插件会获取目标页面的页面信息,以根据目标页面的页面信息,判断目标页面是否有权限调用该扩展接口。其中,目标页面的页面信息可以为以下至少之一:URL、IP地址、域名。
在一些实施例中,浏览器扩展插件可以将目标页面的页面信息传送给接口权限管理后台,由接口权限管理后台对目标页面进行调用权限验证,得到验证结果后,在返回给浏览器扩展插件;在另一些实施例中,权限管理数据内置于浏览器扩展插件中,浏览器扩展插件直接基于内置的权限管理数据对目标页面进行调用权限验证。
在实际实施时,将权限管理数据内置于浏览器扩展插件中,可以通过对浏览器扩展插件进行更新,进而对权限管理数据进行更新,以修改扩展接口的调用权限,如此,更利于对调用权限的灵活管理。
在一些实施例中,还可以扩展接口的调用时间,如仅允许特定页面在特定时间段内对扩展接口进行调用,那么,浏览器扩展插件会获取调用请求所对应的触发时间;当基于页面信息确定目标页面存在于页面白名单中、且触发时间满足接口调用的时间要求时,确定目标页面具备对所述扩展接口的调用权限。
在一些实施例中,当扩展接口的调用请求由浏览器插件发送时,内置浏览器扩展插件检查该浏览器插件是否有权限调用该扩展接口。在实际实施时,内置的浏览器扩展插件会获取该浏览器插件的插件信息,如插件标识,以根据插件标识,判断该浏览器插件是否有权限调用该扩展接口。
步骤804:当目标页面有权限调用该扩展接口时,内置的浏览器扩展插件调用扩展接口,得到调用结果。
这里,浏览器扩展的功能,可以改用动态链接库(例如Windows DLL)实现,让浏览器动态加载动态库,从而实现动态权限管理。
在一些实施例中,当扩展接口的调用请求由浏览器插件发送时,确定浏览器插件有权限调用该扩展接口时,内置的浏览器扩展插件调用扩展接口,得到调用结果。
步骤805:内置的浏览器扩展插件返回调用结果。
这里,调用结果可以为功能页面对应的页面数据,根据内置的浏览器扩展插件返回的调用结果,渲染并呈现对应的功能页面。例如,参见图7,浏览器呈现“一键导入书签”的功能页面,以将其他浏览器的书签和本地书签导入到浏览器的文件夹中。
图13为本发明实施例提供的扩展接口的调用方法的流程示意图,参见图13,当前浏览器不支持扩展接口的调用时,本发明实施例提供的扩展接口的调用方法包括:
步骤901:通过目标页面发送扩展接口的调用请求。
步骤902:内置的浏览器扩展插件检查当前浏览器是否支持扩展接口的调用。
步骤903:当浏览器不支持该扩展接口的调用时,内置的浏览器扩展插件返回错误信息。
这里,基于错误信息,生成提示信息,以提示用于下载最新版本的浏览器。这里,提示信息可以为文字信息、图片信息等。例如,参见图5,在浏览器不支持所要调用的扩展接口时,生成一个小窗口,在小窗口中呈现提示信息。这里,小窗口还呈现有用于下载最新版本的浏览器的功能键,用户可以通过点击该功能键,直接下载最新版本的浏览器。
步骤904:浏览器统计调用异常信息。
图14为本发明实施例提供的扩展接口的调用方法的流程示意图,参见图14,当目标页面没有权限调用该扩展接口时,本发明实施例提供的扩展接口的调用方法包括:
步骤1001:通过目标页面发送扩展接口的调用请求。
步骤1002:内置的浏览器扩展插件检查当前浏览器客户端是否支持扩展接口的调用。
步骤1003:当浏览器支持该扩展接口的调用时,内置浏览器扩展插件检查目标页面是否有权限调用该扩展接口。
步骤1004:当目标页面无权限调用该扩展接口时,内置的浏览器扩展插件返回错误信息。
这里,基于错误信息,生成提示信息,以提示目标页面没有权限调用扩展接口,例如,参见图6,当验证结果表征目标页面不具备对扩展接口的调用权限时,显示提示信息“当前页面不具备一键导入权限,请使用新手引导页面”。
步骤1005:浏览器统计调用异常信息。
图15为相关技术提供的扩展接口的调用方法的流程示意图,参见图15,相关技术提供的扩展接口的调用方法包括:
步骤1101:通过目标页面发送扩展接口的调用请求。
步骤1102:当浏览器不支持该扩展接口时,导致调用异常。
这里,相关技术中通过页面直接调用浏览器的扩展接口,在浏览器不支持该扩展接口时,会直接受到调用异常。
通过本发明实施例,在将运行在低版本浏览器的代码适配到高版本浏览器时,能够大大减少工作量;并且,能灵活支持各类浏览器扩展、页面的运营需求,同时,能降低对第三方暴露扩展接口的安全风险。
下面继续说明本发明实施例提供的扩展接口的调用装置255的实施为软件模块的示例性结构,图16为本发明实施例提供的扩展接口的调用装置的结构示意图,参见图16,扩展接口的调用装置255中的软件模块可以包括:
接收模块2551,用于接收到针对浏览器的扩展接口的调用请求,所述调用请求通过所述浏览器呈现的目标页面中的页面操作所触发,携带有所述扩展接口的接口参数;
获取模块2552,用于响应于所述调用请求,获取所述目标页面的页面信息;
验证模块2553,用于基于所述目标页面的页面信息,对所述目标页面进行调用权限验证,得到验证结果;
调用模块2554,用于当所述验证结果表征所述目标页面具备对所述扩展接口的调用权限时,基于所述接口参数,调用所述浏览器的扩展接口,得到调用结果;
返回模块2555,用于返回得到的所述调用结果,以基于所述调用结果呈现所述页面操作对应的功能页面。
在一些实施例中,所述获取模块2552,还用于响应于所述调用请求,获取所述浏览器的版本信息;
基于所述浏览器的版本信息,确定所述浏览器支持所述扩展接口的调用时,获取所述目标页面的页面信息。
在一些实施例中,所述返回模块2555,还用于确定所述浏览器不支持所述扩展接口的调用时,返回第一错误信息,以基于所述第一错误信息,呈现用于提示下载最新版本的浏览器的提示信息。
在一些实施例中,所述获取模块2552,还用于响应于所述调用请求,获取所述目标页面对应的统一资源定位符URL、网际互连协议IP地址及域名;
将以下至少之一作为目标页面的页面信息:URL、IP地址、域名。
在一些实施例中,所述验证模块2553,还用于将所述目标页面的页面信息与可调用所述扩展接口的页面列表中的页面信息进行匹配;
当所述页面列表中存在与所述目标页面的页面信息相匹配的页面信息时,确定所述目标页面具备对所述扩展接口的调用权限。
在一些实施例中,所述验证模块2553,还用于获取所述调用请求所对应的触发时间;
当基于所述页面信息确定所述目标页面存在于页面白名单中、且所述触发时间满足接口调用的时间要求时,确定所述目标页面具备对所述扩展接口的调用权限。
在一些实施例中,所述返回模块2555,还用于当所述验证结果表征所述目标页面不具备对所述扩展接口的调用权限时,返回第二错误信息,以基于所述第二错误信息,呈现所述目标页面不具备调用权限的提示信息。
在一些实施例中,所述调用模块2554,还用于将所述接口参数转换为对应所述扩展接口的目标数据结构的参数;
基于所述目标数据结构的参数,调用所述浏览器的扩展接口,以得到所述功能页面对应的页面数据。
在一些实施例中,所述装置还包括:
存储模块,用于将对应所述目标页面的所述验证结果存储至区块链网络。
本发明实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的扩展接口的调用方法,例如,如图3示出的方法。
在一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。