单页应用搜索方法、装置、设备及计算机存储介质与流程

文档序号:33185094发布日期:2023-02-04 06:08阅读:30来源:国知局
单页应用搜索方法、装置、设备及计算机存储介质与流程

1.本技术属于计算机应用领域,尤其涉及一种单页应用搜索方法、装置、设备、存储介质和计算机程序产品。


背景技术:

2.通常单页应用是通过动态重写当前页面部分内容来与用户交互,而非传统的服务器的重新加载整个新页面。
3.因此,搜索引擎的爬虫对这类应用的内容抓取支持度不高,导致搜索引擎无法检索单页应用的相关内容。


技术实现要素:

4.本技术实施例提供一种单页应用搜索方法、装置、设备、存储介质和计算机程序产品,能够对服务器搜索端装置进行优化,使现有的搜索引擎爬虫能够有效地爬取云端的多用户单页应用的资源和内容。
5.第一方面,本技术实施例提供一种单页应用搜索方法,方法包括:
6.接收目标用户代理服务器发送的目标用户的单页应用的超文本标记语言html文件和数据资源;
7.通过调用html解析器对html文件进行解析,得到文档对象模型dom树,并加载html文件依赖的javascript文件;
8.通过调用javascript引擎执行javascript文件,将dom树中相应节点替换为目标用户的html文件和数据资源,生成第一静态html资源;
9.通过调用锚点解析器,将第一静态html资源中锚点链接替换为非锚点链接,得到第二静态html资源;
10.将第二静态html资源发送给网关。
11.在一些实施方式中,在接收目标用户代理服务器发送的目标用户的单页应用的html文件和数据资源之前,方法还包括:
12.接收网关用于访问用户应用资源的请求;
13.通过调用用户路由组件对请求进行标记,得到用于向目标用户代理服务器请求链接指向资源的标记请求;
14.从目标用户的渲染结果缓存区中查询是否包括目标用户的渲染结果;
15.在目标用户的渲染结果缓存区中不包括目标用户的渲染结果的情况下,向目标用户代理服务器发送标记请求。
16.在一些实施例中,在目标用户渲染结果缓存区包括目标用户的渲染结果的情况下,该方法还包括:
17.将目标用户渲染结果缓存区中目标用户渲染结果发送给网关。
18.在一些实施方式中,在通过调用html解析器对html文件进行解析之前,方法还包
括:
19.通过调用内容过滤器对目标用户代理服务器请求链接进行检查;
20.在目标用户代理服务器请求链接不包括目标链接的情况下,通过调用html解析器对html文件进行解析。
21.在一些实施方式中,在通过调用html解析器对html文件进行解析之前,方法还包括:
22.通过内容过滤器对目标用户代理服务器请求链接指向的目标资源进行过滤,过滤内容包括图片、视频和层叠样式表css文件。
23.在一些实施方式中,在将第二静态html资源发送给网关之后,方法还包括:
24.将第一静态html资源写入对应目标用户的渲染结果缓存区中。
25.在一些实施方式中,在将第一静态html资源写入对应目标用户的渲染结果缓存区中后,方法还包括:
26.检测目标用户渲染结果缓存区中目标用户渲染结果缓存存储时间,若存储时间大于预设阈值,删除目标用户渲染结果缓存。
27.第二方面,本技术实施例提供了一种单页应用搜索装置,装置包括:
28.服务器端渲染器,用于接收目标用户代理服务器发送的目标用户的单页应用的超文本标记语言html文件和数据资源;
29.html解析器,用于对html文件进行解析,得到文档对象模型dom树,并加载html文件依赖的javascript文件;
30.javascript引擎,用于执行javascript文件,将dom树中相应节点替换为目标用户的html文件和数据资源,生成第一静态html资源;
31.锚点解析器,用于将第一静态html资源中锚点链接替换为非锚点链接,得到第二静态html资源;
32.服务器端渲染器,用于将第二静态html资源发送给网关。
33.在一些实施方式中,服务器端渲染器还用于接收网关用于访问用户应用资源的请求,通过调用用户路由组件对请求进行标记,得到用于向目标用户代理服务器请求链接指向资源的标记请求,从目标用户的渲染结果缓存区中查询是否包括目标用户的渲染结果,在目标用户的渲染结果缓存区中不包括目标用户的渲染结果的情况下,向目标用户代理服务器发送标记请求。
34.在一些实施方式中,该装置还包括:
35.内容过滤器,用于对目标用户代理服务器请求链接进行检查,在目标用户代理服务器请求链接不包括目标链接的情况下,通过调用html解析器对html文件进行解析。
36.在一些实施方式中,上述内容过滤器还用于对目标用户代理服务器请求链接指向的目标资源进行过滤,过滤内容包括图片、视频和层叠样式表css文件。
37.在一些实施方式中,服务器端渲染器还用于将第一静态html资源写入对应目标用户的渲染结果缓存区中。
38.在一些实施方式中,该装置还包括:
39.定时清理器,用于检测目标用户渲染结果缓存区中目标用户渲染结果缓存存储时间,若存储时间大于预设阈值,删除目标用户渲染结果缓存。
40.第三方面,本技术实施例提供了一种单页应用搜索设备,该电子设备包括:处理器以及存储有计算机程序指令的存储器;
41.处理器执行计算机程序指令时实现如第一方面的任一项实施例中的单页应用搜索方法的步骤。
42.第四方面,本技术实施例提供了一种计算机存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面的任一项实施例中的单页应用搜索方法的步骤。
43.第五方面,本技术实施例提供了一种计算机程序产品,计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备执行如第一方面的任一项实施例中的单页应用搜索方法的步骤。
44.本技术实施例的单页应用搜索方法、装置、设备及计算机存储介质,能够接收目标用户代理服务器发送的目标用户单页应用的超文本标记语言html文件和数据资源,对html文件进行解析得到文档对象模型dom树,加载html文件所依赖的javascript文件,调用javascript引擎执行javascript文件,将dom树中相应节点替换为目标用户的html文件和数据资源并将锚点链接替换为非锚点链接,最后,将处理后的html资源发送给网关。如此,通过将dom树中相应节点替换为目标用户的html文件和数据资源,并将网络爬虫不可识别锚点链接替换为网络爬虫可以识别的非锚点链接,可以实现网络爬虫对单页应用内容的全面抓取,进而使搜索引擎可以有效的检索单页应用的相关内容。
附图说明
45.图1是本技术实施例系统示意图;
46.图2是本技术实施例提供的一种装置示意图。
47.图3是本技术实施例提供的一种单页应用搜索方法的流程示意图;
48.图4是本技术实施例提供的另一种单页应用搜索方法的流程示意图;
49.图5是本技术实施例提供的一种单页应用搜索装置的结构示意图;
50.图6是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
51.下面将详细描述本技术的各个方面的特征和示例性实施例,为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本技术进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本技术,而不是限定本技术。对于本领域技术人员来说,本技术可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本技术的示例来提供对本技术更好的理解。
52.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括
……”
限定的要素,并不排除在包括
所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
53.本技术技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
54.单页应用是一种网络应用程序模型,通过动态重写当前页面部分内容来与用户交互,而非传统的服务器的重新加载整个新页面,避免多页面间切换打断用户体验。
55.因此,搜索引擎的爬虫对这类应用的内容抓取支持度不高,导致搜索引擎无法检索单页应用的相关内容。
56.另外,在多租户共享资源的模式下,爬虫抓取应用的内容在性能上也存在不足,会影响搜索引擎正常收率单页应用的相关内容。这里的租户是指为了满足信息化需求,出资购买硬件云设备和云管理服务的企业或个人。租户在本技术实施例中统称为用户。
57.为解决现有技术问题,本技术实施例提供了一种单页应用搜索方法、装置、设备、介质和产品。该方法可应用于云服务搜索场景,下面先结合图1对云服务搜索场景的系统进行描述。
58.在多用户共享资源模式下,用户的应用资源部署在独立的租户环境中,由用户的代理服务器控制资源的访问。代理服务器用于负责代理用户的应用资源。在本技术实施例中,代理服务器可以是web服务器。
59.图1是本技术实施例系统示意图。如图1所示,系统包括网关、装置和多个用户代理服务器,在图1中仅示意性的画出两个用户代理服务器,即用户1代理服务器和用户2代理服务器。
60.当用户端请求通过网关进入云服务时,网关通过识别请求中的用户代理标识判断该请求是否为爬虫访问。如果是爬虫访问,网关将请求转给装置。装置对请求进行标记,生成用户端向目标代理服务器请求链接指向资源的标记请求,并判断用户端的渲染结果缓存中是否包括用户端渲染结果,在用户端的渲染结果缓存中包括用户端渲染结果时,装置将用户端的渲染结果发送给网关,网关再发送给用户端。
61.在用户端的渲染结果缓存中不包括用户端渲染结果时,向用户代理服务器发送标记请求,以便于获取用户代理服务器中对应用户渲染结果的资源,对资源进行处理后发送给网关,网关再发送给用户端。。
62.图1中的装置包括多个组件,具体包括内容过滤器、服务器端渲染器、http代理、租户路由、锚点解释器、javascript引擎、多个租户渲染缓存区,如图2所示。装置中的各组件的功能结合图3描述,图3是本技术一个实施例提供的单页应用搜索方法的流程示意图。
63.如图3所示,该单页应用搜索方法具体可以包括如下步骤:
64.s310、接收目标用户代理服务器发送的目标用户的单页应用的超文本标记语言html文件和数据资源。
65.通过服务器端渲染器接收目标用户代理服务器发送给网关的目标用户的单页应用的html文件和数据资源,数据资源由服务器端渲染器调用http代理组件获取。
66.其中,目标用户代理服务器是针对不同用户设立的用于存储对应用户的应用资源,可以是万维网(world wide web,web)服务器。超文本标记语言(hyper text mark-up language,html)是web浏览器使用的一种语言,目标用户的单页应用html文件用于和网关进行信息交流。
67.s320、通过调用html解析器对html文件进行解析,得到文档对象模型dom树,并加载html文件依赖的javascript文件。
68.通过调用装置的html解析器对html文件进行解析,得到html的文档对象模型(document object model,dom)树,dom树是被视为节点树的html。在dom树中,树的每个结点表示了一个html标签或标签内的文本项。
69.在得到文档对象模型dom树时,加载html文件依赖的javascript文件。javascript文件具有嵌入动态文本于html页面、对浏览器事件做出响应、读写html元素等功能,以便于通过javascript文件对html文件中元素进行读取并嵌入动态文本在html页面。
70.s330、通过调用javascript引擎执行javascript文件,将dom树中相应节点替换为目标用户的html文件和数据资源,生成第一静态html资源。
71.javascript引擎执行javascript文件,读取html文件中元素并进行动态文本嵌入,动态生成页面,将dom树中相应节点替换为目标用户的html文件和数据资源,即可得到第一静态html资源。
72.其中,相应节点是javascript引擎执行javascript文件过程中用到的dom树中节点。
73.s340、通过调用锚点解析器,将第一静态html资源中锚点链接替换为非锚点链接,得到第二静态html资源。
74.锚点解析器用于扫描第一静态html资源,将跳转连接中的锚点链接替换为非锚点链接,例如“/#/link”替换为“/anchor/link”,替换后得到第二静态html资源。
75.s350、将第二静态html资源发送给网关。
76.将第二静态html资源发送给网关,以用于网关再进行后续处理。
77.由此,通过接收目标用户代理服务器发送的目标用户单页应用的超文本标记语言html文件和数据资源,对html文件进行解析得到文档对象模型dom树,加载html文件所依赖的javascript文件,调用javascript引擎执行javascript文件,将dom树中相应节点替换为目标用户的html文件和数据资源并将锚点链接替换为非锚点链接,最后,将处理后的html资源发送给网关。通过将dom树中相应节点替换为目标用户的html文件和数据资源并将网页爬虫不识别的锚点链接替换为网页爬虫识别的非锚点链接,实现了网络爬虫的对单页应用内容的全面抓取,进而使搜索引擎可以有效的检索单页应用的相关内容。
78.在一些实施方式中,如图3所示,在接收目标用户代理服务器发送的目标用户的单页应用的html文件和数据资源之前,该方法还包括s300。
79.s300、接收网关用于访问用户应用资源的请求,通过调用用户路由组件对请求进行标记,得到用于向目标用户代理服务器请求链接指向资源的标记请求,从目标用户的渲染结果缓存区中查询是否包括目标用户的渲染结果,在目标用户的渲染结果缓存区中不包括目标用户的渲染结果的情况下,向目标用户代理服务器发送标记请求。
80.接收网关用于访问用于应用资源的请求,由用户路由组件对请求进行标记,包括识别该请求的目标用户,并将该请求标记为对应目标用户的标记请求,标记请求用于向对应的目标用户代理服务器请求链接指向资源。对于标记请求,在其目标用户的渲染结果缓存区中查询是否存在目标用户的渲染结果,即判断目标用户结果缓存区是否包括请求链接指向资源,在不包括请求链接指向资源的情况下,向目标用户代理服务器发送用于请求链
接指向资源的标记请求。
81.如此,通过对来自网关的应用资源访问请求进行识别和标记,可以快速找到对应的目标用户代理服务器,并向其发送标记请求,减少了请求响应时间的同时提高了资源获取速度。
82.在一些实施方式中,在通过调用html解析器对html文件进行解析之前,该方法还包括s360。
83.s360、通过调用内容过滤器对目标用户代理请求链接进行检查,在目标用户代理服务器请求链接不包括目标链接的情况下,通过调用html解析器对html文件进行解析。
84.内容过滤器对目标用户代理服务器发送资源的目标代理请求链接进行检查,在目标用户代理服务器请求链接不包括目标链接的情况下,调用html解析器对目标用户代理服务器发送的html文件进行解析。
85.其中,目标链接为存在危险的连接或对目标用户有害的连接。
86.这样,通过对目标用户代理服务器请求链接进行检查,可以有效防范目标用户收到侵害,提高了目标用户进行资源访问的安全性和可靠性。
87.在一些实施方式中,在通过调用html解析器对html文件进行解析之前,该方法还包括s370。
88.s370、通过内容过滤器对目标代理请求链接指向的目标资源进行过滤,过滤内容包括图片、视频和层叠样式表css文件。
89.对目标用户代理服务器请求链接指向的目标资源进行过滤,将目标资源中包含的图片、视频和css文件剔除后,再由html解析器对html文件进行解析。
90.这样,在html解析器对html文件进行解析之前,过滤掉目标资源中网络爬虫不解析的图片、视频和css文件,可以提高解析效率。
91.在一些实施方式中,在将第二静态html资源发送给网关之后,该方法还可以包括s380。
92.s380、将第一静态html资源写入对应目标用户的渲染结果缓存区中。
93.发送器将对dom树中相应节点替换为目标用户的html文件和数据资源后生成的第一静态html资源发送到对应的目标用户渲染结果缓存区。
94.如此,通过将第一静态html资源存入对应的目标用户渲染结果缓存区,在目标用户再次查找相同的渲染结果时,可以直接在目标用户渲染结果缓存区调取渲染结果缓存,减少了目标用户搜索事件,提高了目标用户搜索效率。
95.在一些实施方式中,在将第一静态html资源写入对应目标用户的渲染结果缓存区中后,该方法还包括s390。
96.s390、检测目标用户渲染结果缓存区中目标用户渲染结果缓存存储时间,若存储时间大于预设阈值,删除目标用户渲染结果缓存。
97.在将第一静态html资源写入对应目标用户的渲染结果缓存区后,对该目标用户渲染结果缓存区中存储的目标用户渲染结果缓存存储时间进行检测,若存储时间大于预设阈值,将存储时间大于预设阈值的目标用户渲染结果缓存删除。
98.如此,通过对目标用户渲染结果缓存区的定时清理,删除存储时间过长的目标用户渲染结果缓存,可以保证目标用户渲染结果缓存区存储空间的充足。
99.基于相同的发明构思,本技术还提供了单页应用搜索的装置。具体结合图5进行详细说明。
100.图5是本技术一个实施例提供的单页应用搜索装置的结构示意图。
101.如图5所示,该单页应用搜素装置500可以包括:
102.服务器端渲染器,用于接收目标用户代理服务器发送的目标用户的单页应用的超文本标记语言html文件和数据资源;
103.html解析器,用于对html文件进行解析,得到文档对象模型dom树,并加载html文件依赖的javascript文件;
104.javascript引擎,用于执行javascript文件,将dom树中相应节点替换为目标用户的html文件和数据资源,生成第一静态html资源;
105.锚点解析器,用于将第一静态html资源中锚点链接替换为非锚点链接,得到第二静态html资源;
106.服务器端渲染器,用于将第二静态html资源发送给网关。
107.在一些实施方式中,服务器端渲染器还用于接收网关用于访问用户应用资源的请求,通过调用用户路由组件对请求进行标记,得到用于向目标用户代理服务器请求链接指向资源的标记请求,从目标用户的渲染结果缓存区中查询是否包括目标用户的渲染结果,在目标用户的渲染结果缓存区中不包括目标用户的渲染结果的情况下,向目标用户代理服务器发送标记请求。
108.在一些实施方式中,该装置还包括:
109.内容过滤器,用于对目标用户代理服务器请求链接进行检查,在目标用户代理服务器请求链接不包括目标链接的情况下,通过调用html解析器对html文件进行解析。
110.在一些实施方式中,上述内容过滤器还用于对目标用户代理服务器请求链接指向的目标资源进行过滤,过滤内容包括图片、视频和层叠样式表css文件。
111.在一些实施方式中,服务器端渲染器还用于将第一静态html资源写入对应目标用户的渲染结果缓存区中。
112.在一些实施方式中,该装置还包括:
113.定时清理器,用于检测目标用户渲染结果缓存区中目标用户渲染结果缓存存储时间,若存储时间大于预设阈值,删除目标用户渲染结果缓存。
114.由此,通过接收目标用户代理服务器发送的目标用户单页应用的超文本标记语言html文件和数据资源,对html文件进行解析得到文档对象模型dom树,加载html文件所依赖的javascript文件,调用javascript引擎执行javascript文件,将dom树中相应节点替换为目标用户的html文件和数据资源并将锚点链接替换为非锚点链接,最后,将处理后的html资源发送给网关。可以实现网络爬虫对单页应用内容的全面抓取,进而使搜索引擎可以有效的检索单页应用的相关内容。
115.图6是本技术一个实施例提供的电子设备的结构示意图。
116.电子设备600可以包括处理器601以及存储有计算机程序指令的存储器602。
117.具体地,上述处理器601可以包括中央处理器(cpu),或者特定集成电路(application specific integrated circuit,asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
118.存储器602可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器602可包括硬盘驱动器(hard disk drive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器602可包括可移除或不可移除(或固定)的介质。存储器602可在综合网关容灾设备的内部或外部。在特定实施例中,存储器602是非易失性固态存储器。
119.存储器602可以包括只读存储器(rom),随机存取存储器(ram),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。处理器601通过读取并执行存储器602中存储的计算机程序指令,以实现图1所示实施例中的方法/步骤s110至s160,并达到图1至图6所示实例执行其方法/步骤达到的相应技术效果,为简洁描述在此不再赘述。
120.在一些示例中,电子设备600还可包括通信接口603和总线610。其中,如图6所示,处理器601、存储器602、通信接口603通过总线610连接并完成相互间的通信。
121.通信接口603主要用于实现本技术实施例中各模块、装置、单元和/或设备之间的通信。
122.另外,结合上述实施例中的单页应用搜索方法,本技术实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种单页应用搜索方法。
123.本技术还提供了一种计算机程序产品,所述计算机程序产品中的指令由电子设备的处理器执行时,使得所述电子设备执行实现上述任意一种单页应用搜索方法实施例的各个过程。
124.计算机可读存储介质的示例包括非暂态计算机可读存储介质,如便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件等。
125.需要明确的是,本技术并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本技术的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本技术的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
126.以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(application specific integrated circuit,asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本技术的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、只读存储器(read-only memory,rom)、闪存、可擦除只读存储器(erasable read only memory,erom)、软盘、只读光盘(compact disc read-only memory,cd-rom)、光盘、硬盘、光纤介质、射频(radio frequency,rf)链路,等等。代码段可以经由诸如因特网、内联网
等的计算机网络被下载。
127.还需要说明的是,本技术中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本技术不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
128.上面参考根据本技术的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本技术的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
129.以上所述,仅为本技术的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1