CN111949851A - 一种解决js加密问题的爬虫方法 - Google Patents

一种解决js加密问题的爬虫方法 Download PDF

Info

Publication number
CN111949851A
CN111949851A CN202010820940.0A CN202010820940A CN111949851A CN 111949851 A CN111949851 A CN 111949851A CN 202010820940 A CN202010820940 A CN 202010820940A CN 111949851 A CN111949851 A CN 111949851A
Authority
CN
China
Prior art keywords
crawler
url
page
cookie
request
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.)
Pending
Application number
CN202010820940.0A
Other languages
English (en)
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.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
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 University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN202010820940.0A priority Critical patent/CN111949851A/zh
Publication of CN111949851A publication Critical patent/CN111949851A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/951Indexing; Web crawling techniques
    • 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/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种解决JS加密问题的爬虫方法,包括以下步骤:S1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;S2:通过调用selenium框架的webdriver工具获取cookie;S3:根据初始URL和cookie,调用内部start_requests()爬取列表页;S4:解析列表页并管理列表页的URL,完成页面爬取。本发明使用的是聚焦网络爬虫。本发明中先将要爬取的内容通过搜索引擎筛选出来,然后爬取筛选出来的页面内容,可爬取JS加密的页面,同时可获取网页重定向之后的链接。

Description

一种解决JS加密问题的爬虫方法
技术领域
本发明属于网络爬虫技术领域,具体涉及一种解决JS加密问题的爬虫方法。
背景技术
在大数据和互联网+时代,网络上的信息量飞速增长,传统的通过搜索引擎获取信息的方式已经有了局限性,越来越满足不了用户对信息获取的高效、快速和准确的要求。在自动化和智能化得到快速发展的今天,利用自动化方法获取信息将是一个重要的方向。在自动化获取信息的众多方法里,网络爬虫是一大利器,它基于搜索引擎,能够自动地解析出网页结构并快速定位到用户的目标数据进行爬取并储存,高效又准确。
网络爬虫是一个在网络上抓取页面、分析页面和抽取链接的程序。它自动遍历Web的超文本结构,从初始的超链接开始,递归地检索可从该文档访问的所有文档。网络爬虫的工作原理较为简单,一般的Web爬虫的内部维护了一个容器用于存储URL链接,从根页面开始,根页面的URL首先被爬虫添加到容器中,进入链接读取根页面的内容,解析出根页面中后续需要访问的链接将其加入到容器中,循环执行上述过程直至URL容器为空则停止运行。
除了通用爬虫,有学者还提出了一种聚焦网络爬虫,即在一般的Web爬虫的基础上,用户需要通过设置主题来过滤解析后的页面内容,舍弃无用信息并将目标信息存入数据库,以及将目标URL加入到URL容器中。但是现有的网虫技术无法爬取JS加密的页面,无法获取网页重定向之后的链接。
发明内容
本发明的目的是为了解决基于scrapy框架的爬虫无法爬取JS加密和重定向页面的问题,提出了一种解决JS加密问题的爬虫方法。
本发明的技术方案是:一种解决JS加密问题的爬虫方法包括以下步骤:
S1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;
S2:通过调用selenium框架的webdriver工具获取cookie;
S3:根据初始URL和cookie,调用内部start_requests()爬取列表页;
S4:解析列表页并管理列表页的URL,完成页面爬取。
本发明的有益效果是:本发明使用的是聚焦网络爬虫。本发明中先将要爬取的内容通过搜索引擎筛选出来,然后爬取筛选出来的页面内容,可爬取JS加密的页面,同时可获取网页重定向之后的链接。
进一步地,步骤S1中,scrapy项目包括引擎、调度器、下载器、爬虫、项目管道、下载器中间件和爬虫中间件;
引擎用于控制其他组件的动作流程;
调度器用于暂存引擎请求,当引擎需要URL时,调度器返回给引擎;
下载器用于获取到页面数据后将其递交给引擎;
爬虫内定义爬取的逻辑和网页的定义规则,用于解析响应并生成提取结果和新的请求;
项目管道用于处理Item;
下载器中间件用于处理下载器传递给引擎的Response;
爬虫中间件用于处理爬虫的输入和输出;
域名范围用于限制爬虫的可爬取范围;如果获取的链接不在这个域名下就自动过滤不在爬取;
请求头信息包括向网络服务器发送请求时传递的一组属性信息和配置信息;本爬虫中只设置了User-Agent,这个信息是一个特殊的字符串头,可以使服务器识别客户使用的操作系统和版本以及浏览器和版本等信息。加上此信息可以伪装成浏览器,如果不加会可能被识别为爬虫。
上述进一步方案的有益效果是:在本发明中,scrapy项目是一个基于Twisted的异步处理框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。
进一步地,步骤S2包括以下子步骤:
S21:调用selenium框架的webdriver工具声明浏览器对象并添加驱动;
S22:利用驱动运行浏览器,并利用浏览器对象访问初始URL;
S23:从浏览器中获取cookie并存储在字典中。
上述进一步方案的有益效果是:在本发明中,Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的操作,如点击和下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些JavaScript动态渲染的页面来说,这种抓取方式非常有效。
进一步地,步骤S23中,从浏览器获取到的cookie形式为“键:值”。
进一步地,步骤S3包括以下子步骤:
S31:调用内部start_requests()读取初始URL;
S32:根据cookie进行验证;
S33:根据读取后的URL和验证后的cookie,生成请求并传递给回调函数处理响应,完后爬取列表页。
进一步地,步骤S32中,根据cookie进行验证的方法为:爬虫请求中携带的cookie的值与浏览器缓存的cookie值进行比较,若完全相同,则可以从网页获取响应,否则结束爬取。
上述进一步方案的有益效果是:在本发明中,从浏览器获取的是“键:值”这样的形式,需要将字段名称和字段值储存在字典中。字典这种数据结构就是用于存储键值对的,可以通过冒号前面的键获取后面的值,进行验证。
进一步地,步骤S4中,解析列表页包括以下子步骤:
A41:解析获得的响应,得到解析数据;
A42:判断解析响应过程中URL是否被重定向和加密,若是则进入步骤A43,否则进入步骤A45;
A43:通过正则匹配获取列表页中详细页的真实链接;
A44:爬取并解析详细页的真实链接,获得解析数据;
A45:通过项目管道将解析数据输出并存储到数据库中。
进一步地,步骤S4中,管理列表页的URL包括以下子步骤:
B41:将列表页中各条目的URL加入到待爬取队列中;
B42:拿出待爬取队列中的各条目URL并进入详细页,获取详细信息;
B43:判断各条目URL队列是否为空,若是则获取详细信息完毕,结束页面爬取,否则返回步骤S3。
附图说明
图1为爬虫方法的流程图;
图2为Scrapy框架的结构图。
具体实施方式
下面结合附图对本发明的实施例作进一步的说明。
在描述本发明的具体实施例之前,为使本发明的方案更加清楚完整,首先对本发明中出现的缩略语和关键术语定义进行说明:
JS:JavaScript,一种脚本语言;
URL:统一资源标识符。
如图1所示,本发明提供了一种解决JS加密问题的爬虫方法,包括以下步骤:
S1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;
S2:通过调用selenium框架的webdriver工具获取cookie;
S3:根据初始URL和cookie,调用内部start_requests()爬取列表页;
S4:解析列表页并管理列表页的URL,完成页面爬取。
在本发明实施例中,如图1所示,步骤S1中,scrapy项目包括引擎、调度器、下载器、爬虫、项目管道、下载器中间件和爬虫中间件;
引擎用于控制其他组件的动作流程;
调度器用于暂存引擎请求,当引擎需要URL时,调度器返回给引擎;
下载器用于获取到页面数据后将其递交给引擎;
爬虫内定义爬取的逻辑和网页的定义规则,用于解析响应并生成提取结果和新的请求;
项目管道用于处理Item;
下载器中间件用于处理下载器传递给引擎的Response;
爬虫中间件用于处理爬虫的输入和输出;
域名范围用于限制爬虫的可爬取范围;如果获取的链接不在这个域名下就自动过滤不在爬取;
请求头信息包括向网络服务器发送请求时传递的一组属性信息和配置信息;本爬虫中只设置了User-Agent,这个信息是一个特殊的字符串头,可以使服务器识别客户使用的操作系统和版本以及浏览器和版本等信息。加上此信息可以伪装成浏览器,如果不加会可能被识别为爬虫。
在本发明中,scrapy项目是一个基于Twisted的异步处理框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。
如图2所示,引擎(Scrapy Engine)拿到爬虫中事先设定好的URL并将URL转发给下载器(Downloader);下载器(Downloader)根据URL获取到资源后生成一个Response,并将其通过下载中间件(Downloader middlewares)发送给引擎;引擎(Scrapy Engine)接收到Response后发送给爬虫(Spider)处理;爬虫(Spider)对Response处理过后,将需要的数据提取出来装入Item,随后向引擎(Scrapy Engine)递交Item和新的请求。引擎(ScrapyEngine)将Item给项目管道(Item Pipeline),将Request给调度器(Scheduler);一直重复这个过程直到调度器中没有更多的Request,关闭该网站。
在本发明实施例中,如图1所示,步骤S2包括以下子步骤:
S21:调用selenium框架的webdriver工具声明浏览器对象并添加驱动;
S22:利用驱动运行浏览器,并利用浏览器对象访问初始URL;
S23:从浏览器中获取cookie并存储在字典中。
在本发明中,Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的操作,如点击和下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些JavaScript动态渲染的页面来说,这种抓取方式非常有效。
Selenium主要由三种工具组成。第一个工具SeleniumIDE,是Firefox的扩展插件,支持用户录制和回访测试。录制/回访模式存在局限性,对许多用户来说并不适合,因此第二个工具Selenium Webdriver提供了各种语言环境的API来支持更多控制权和编写符合标准软件开发实践的应用程序。最后一个工具SeleniumGrid帮助工程师使用Selenium API控制分布在一系列机器上的浏览器实例,支持并发运行更多测试。在项目内部,它们分别被称为“IDE”、“Webdriver”和“Grid”。
Webdriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,Webdriver还利用操作系统级的调用模拟用户输入。Webdriver支持Firefox(FirefoxDriver)、IE(InternetExplorerDriver)、Opera(OperaDriver)和Chrome(ChromeDriver)。它还支持Android(AndroidDriver)和iPhone(IPhoneDriver)的移动应用测试。它还包括一个基于HtmlUnit的无界面实现,称为HtmlUnitDriver。WebdriverAPI可以通过Python、Ruby、Java和C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。
在本发明实施例中,如图1所示,步骤S23中,从浏览器获取到的cookie形式为“键:值”。
在本发明实施例中,如图1所示,步骤S3包括以下子步骤:
S31:调用内部start_requests()读取初始URL;
S32:根据cookie进行验证;
S33:根据读取后的URL和验证后的cookie,生成请求并传递给回调函数处理响应,完后爬取列表页。
在本发明实施例中,如图1所示,步骤S32中,根据cookie进行验证的方法为:爬虫请求中携带的cookie的值与浏览器缓存的cookie值进行比较,若完全相同,则可以从网页获取响应,否则结束爬取。
在本发明中,从浏览器获取的是“键:值”这样的形式,需要将字段名称和字段值储存在字典中。字典这种数据结构就是用于存储键值对的,可以通过冒号前面的键获取后面的值,进行验证。
在本发明实施例中,如图1所示,步骤S4中,解析列表页包括以下子步骤:
A41:解析获得的响应,得到解析数据;
A42:判断解析响应过程中URL是否被重定向和加密,若是则进入步骤A43,否则进入步骤A45;
A43:通过正则匹配获取列表页中详细页的真实链接;
A44:爬取并解析详细页的真实链接,获得解析数据;
A45:通过项目管道将解析数据输出并存储到数据库中。
在本发明实施例中,如图1所示,步骤S4中,管理列表页的URL包括以下子步骤:
B41:将列表页中各条目的URL加入到待爬取队列中;
B42:拿出待爬取队列中的各条目URL并进入详细页,获取详细信息;
B43:判断各条目URL队列是否为空,若是则获取详细信息完毕,结束页面爬取,否则返回步骤S3。
本发明的工作原理及过程为:
1.项目初始化:创建一个scrapy项目,设定允许爬取的域名范围、请求头信息和初始URL。
2.获取cookie:直接调用selenium框架下的webdriver工具,具体过程包括三步。第一步,声明浏览器对象并添加驱动;第二步,使用声明的浏览器对象访问设定的初始url;第三步,获取cookie信息并存储在字典中。
3.爬取列表页:使用设定好的url和获取到的cookie,通过调用内部start_requests()方法来获取初始的请求。其中,start_requests()工作流程是,首先读取start_urls中的URL,接着生成请求并传递给回调函数处理响应。
4.解析列表页:解析获取到的响应,将解析得到的数据加入到Item容器中,通过项目管道输出并存储到数据库中。在这个过程中,如果发现爬取到的页面的各子网页的url被重定向并加密,则通过正则匹配获取到子网页的真实链接并访问。
5.管理列表页url队列:将列表页各条目的URL加入到等待爬取的队列中,拿出每条URL并进入到详情页,就可以获取详细信息,当这一页的URL队列为空时说明此页的信息获取完毕,则可以进入到下一页。重复这个过程直到所有的页面的爬取完成。
本发明的有益效果为:本发明使用的是聚焦网络爬虫。本发明中先将要爬取的内容通过搜索引擎筛选出来,然后爬取筛选出来的页面内容,可爬取JS加密的页面,同时可获取网页重定向之后的链接。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

Claims (8)

1.一种解决JS加密问题的爬虫方法,其特征在于,包括以下步骤:
S1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;
S2:通过调用selenium框架的webdriver工具获取cookie;
S3:根据初始URL和cookie,调用内部start_requests()爬取列表页;
S4:解析列表页并管理列表页的URL,完成页面爬取。
2.根据权利要求1所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S1中,scrapy项目包括引擎、调度器、下载器、爬虫、项目管道、下载器中间件和爬虫中间件;
所述引擎用于控制其他组件的动作流程;
所述调度器用于暂存引擎请求,当引擎需要URL时,调度器返回给引擎;
所述下载器用于获取到页面数据后将其递交给引擎;
所述爬虫内定义爬取的逻辑和网页的定义规则,用于解析响应并生成提取结果和新的请求;
所述项目管道用于处理Item;
所述下载器中间件用于处理下载器传递给引擎的Response;
所述爬虫中间件用于处理爬虫的输入和输出;
所述域名范围用于限制爬虫的可爬取范围;
所述请求头信息包括向网络服务器发送请求时传递的一组属性信息和配置信息。
3.根据权利要求1所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S2包括以下子步骤:
S21:调用selenium框架的webdriver工具声明浏览器对象并添加驱动;
S22:利用驱动运行浏览器,并利用浏览器对象访问初始URL;
S23:从浏览器中获取cookie并存储在字典中。
4.根据权利要求3所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S23中,从浏览器获取到的cookie形式为“键:值”。
5.根据权利要求1所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S3包括以下子步骤:
S31:调用内部start_requests()读取初始URL;
S32:根据cookie进行验证;
S33:根据读取后的URL和验证后的cookie,生成请求并传递给回调函数处理响应,完后爬取列表页。
6.根据权利要求5所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S32中,根据cookie进行验证的方法为:爬虫请求中携带的cookie的值与浏览器缓存的cookie值进行比较,若完全相同,则可以从网页获取响应,否则结束爬取。
7.根据权利要求1所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S4中,解析列表页包括以下子步骤:
A41:解析获得的响应,得到解析数据;
A42:判断解析响应过程中URL是否被重定向和加密,若是则进入步骤A43,否则进入步骤A45;
A43:通过正则匹配获取列表页中详细页的真实链接;
A44:爬取并解析详细页的真实链接,获得解析数据;
A45:通过项目管道将解析数据输出并存储到数据库中。
8.根据权利要求1所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S4中,管理列表页的URL包括以下子步骤:
B41:将列表页中各条目的URL加入到待爬取队列中;
B42:拿出待爬取队列中的各条目URL并进入详细页,获取详细信息;
B43:判断各条目URL队列是否为空,若是则获取详细信息完毕,结束页面爬取,否则返回步骤S3。
CN202010820940.0A 2020-08-14 2020-08-14 一种解决js加密问题的爬虫方法 Pending CN111949851A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010820940.0A CN111949851A (zh) 2020-08-14 2020-08-14 一种解决js加密问题的爬虫方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010820940.0A CN111949851A (zh) 2020-08-14 2020-08-14 一种解决js加密问题的爬虫方法

Publications (1)

Publication Number Publication Date
CN111949851A true CN111949851A (zh) 2020-11-17

Family

ID=73343688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010820940.0A Pending CN111949851A (zh) 2020-08-14 2020-08-14 一种解决js加密问题的爬虫方法

Country Status (1)

Country Link
CN (1) CN111949851A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608134A (zh) * 2015-12-18 2016-05-25 盐城工学院 一种基于多线程的网络爬虫系统及其网页爬取方法
CN107391573A (zh) * 2017-06-19 2017-11-24 上海斐讯数据通信技术有限公司 一种基于信息重组的数据信息提取方法和系统
CN107944055A (zh) * 2017-12-22 2018-04-20 成都优易数据有限公司 一种解决Web证书认证的爬虫方法
CN109033115A (zh) * 2017-06-12 2018-12-18 广东技术师范学院 一种动态网页爬虫系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608134A (zh) * 2015-12-18 2016-05-25 盐城工学院 一种基于多线程的网络爬虫系统及其网页爬取方法
CN109033115A (zh) * 2017-06-12 2018-12-18 广东技术师范学院 一种动态网页爬虫系统
CN107391573A (zh) * 2017-06-19 2017-11-24 上海斐讯数据通信技术有限公司 一种基于信息重组的数据信息提取方法和系统
CN107944055A (zh) * 2017-12-22 2018-04-20 成都优易数据有限公司 一种解决Web证书认证的爬虫方法

Similar Documents

Publication Publication Date Title
US10362050B2 (en) System and methods for scalably identifying and characterizing structural differences between document object models
US7536389B1 (en) Techniques for crawling dynamic web content
US10567407B2 (en) Method and system for detecting malicious web addresses
KR102220127B1 (ko) 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치
US8601434B2 (en) Method and system for information processing and test case generation
US7992127B2 (en) Method and system of encapsulating web site transactions for computer-aided generation of web services
US8443346B2 (en) Server evaluation of client-side script
US8359317B2 (en) Method and device for indexing resource content in computer networks
CN107766344B (zh) 一种模板渲染的方法、装置及浏览器
CN108984202B (zh) 一种电子资源分享方法、装置和存储介质
CN112612943A (zh) 一种基于异步处理框架的具有自动测试功能的数据爬取方法
Oguz et al. Extracting information from large scale graph data: Case study on automated ui testing
US11841837B2 (en) Computer-based systems and methods for risk detection, visualization, and resolution using modular chainable algorithms
CN116719735A (zh) 一种测试用例生成方法及装置
CN104268246A (zh) 生成访问互联网站点指令脚本的方法及访问方法和装置
CN111949851A (zh) 一种解决js加密问题的爬虫方法
Losada et al. Efficient execution of web navigation sequences
CN110738024A (zh) 将WebAPP转换为API服务接口的方法
Yuan et al. Research and implementation of security vulnerability detection in application system of WEB static source code analysis based on JAVA
Leithner et al. CHIEv: concurrent hybrid analysis for crawling and modeling of web applications
CN111611462A (zh) 一种app数据获取方法及系统
Zhang et al. Data service API design for data analytics
Gao et al. Generating open api usage rule from error descriptions
KR100279751B1 (ko) 씨지아이 프로그램 자동생성 방법
CN112115330A (zh) 一种优化定位精度及爬取效率的爬虫方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20201117