一种模拟访问网站适配器***
技术领域
本发明涉及视频监控的技术领域,尤其涉及一种视频监控中车辆识别跟踪的方法。
背景技术
在信息统计中,往往需要访问多个网站并从网站中获取具有一定标识的信息(如:统计某个网站每天的访问量等),这对访问网站的时效性和频次都有一定的要求。人工登录多个网站的时间成本较高,登录效率低,因此人们通常会采用特定的软件进行自动登录。
例如专利申请201210579372.5公开一种实现第三方应用业务网站登录的方法、装置及操作应用平台,其方法包括:操作应用平台在用户终端访问第三方应用业务网站时,接收第三方应用业务网站发送的第一URL请求;根据第一URL请求从本地获取第三方应用业务网站的账号登录信息;通过调用包含所述账号登录信息的第一预定函数,向第三方应用业务网站返回所述账号登录信息,由第三方应用业务网站提供快速登录页面供用户终端快速登录。本发明免去了用户再输入帐号信息的困扰,实现了第三方应用业务网站的快速登录,提高了用户操作效率。
然而,该方法是通过第三方网站记录登录信息,存在着安全隐患,因此难以获得应用。专利申请201610147571.7公开了网站登录方法和装置,其中方法包括:第一网站在接收到网站跳转触发时,获取第一网站运行所在的浏览器的cookie中存储的第一令牌,第一令牌包括网站跳转触发所指示的第二网站列表页面的其中一个第二网站的网站标识、以及用于表示在设定第二网站的无密代理登录时的设备指纹;第一网站根据设备指纹,确定当前运行环境与第二网站无密代理登录设定时的运行环境相同,获取所述第一令牌对应的第二令牌;第一网站根据第一令牌中的网站标识,向第二网站发送无密登录请求,携带第三令牌,第三令牌中包括第二令牌,并在第二网站验证所述第二令牌成功时,无密登录至所述第二网站。本申请提高了由第一网站无密登录至第二网站的安全性。该方法通过令牌的形式记录登录信息,能够提供登录的安全性和可靠性,但是无法实现批量登录,在需要登录多个网站的时候,仍然存在登录速度慢,时间成本高的问题。
发明内容
针对上述技术中存在的不足之处,本发明的首要目的提供一种模拟访问网站适配器***,该***融合ASP.NET及HTTP相关的技术能实现批量自动登录网站,能大大的节约时间成本,提高登录效率。
本发明的另一个目的是一种模拟访问网站适配器***,该***采用批量获取网站信息的中间适配器来获取登录信息并进行自动登录,易于实现,可广泛应用于现有的浏览器网站登录。
为实现上述目的,本发明是按照如下方式实现的。
一种模拟访问网站适配器***,其特征在于该模拟访问网站适配器***整体功能架构包含以下5个模块:自动登录模块、抓取指定页面模块、页面解析模块、数据提取模块、DB存取模块;其中,自动登录模块通过模拟HTTP请求过程,提取出请求HTTP过程报文中的相关信息,将这些参数填入到模拟过程中,实现自动登录;登录成功后,抓取指定页面模块抓取指定页面,抓取指定页面模块将页面数据组织起来后,将这些数据封装起来,进行模拟HTTP请求的请求过程,得到响应后,进行下一步处理;完成了页面抓取后,抓取到指定页面存储为HTML文件,页面解析模块和数据提取模块就是对HTML文件中的标签进行解析,提取中这些标签中数据;解析完之后在数据提取模块中进行相关处理,获取到指定信息,存储到DB存取模块中,进行相关序列化的操作,以便于后续随时获取。
该适配器***需要实现的关键部分如下:1.获取指定页面需要模拟HHTP的请求过程,通过抽象工厂设计模式,能有效的将所有请求页面的HTTP请求报文信息进行统一管理,以方便适配器抓取到所需的页面;2.抓取到指定页面后要提取出需要采集的页面,并解析HTML页面元素,获取指定元素中的信息。
因此,所述自动登录模块和抓取指定页面模块这两个模块要将请求HTTP报文的信息组织到数据库中,方便今后扩展和修改需要访问网站的相关信息;HTTP报文的信息这些数据组织起来后,将这些数据封装起来,提供给一个HTMLHelper类进行模拟HTTP请求的请求过程,得到响应后,进行下一步处理,在自动登录模块需要保存当前的页面,保持登录状态;在抓取指定页面模块需要保存当前的指定页面,这些文件都保存为HTML格式。
进一步,所述自动登录模块和抓取指定页面模块,需要采集访问登录页面及指定页面过程中网络数据包,分析网络数据包中页面HTTP请求过程中所需要的参数。
更进一步,所述页面HTTP请求过程中所需要的参数包括但不限于:请求页面的url、之前跳转url、cookie、post数据、useragent、contenttype、host。
更进一步,所述自动登录模块和抓取指定页面模块借助设计模式中的抽象工厂模式,将这些存在差异化的数据统一进行管理,能实现适配器程序对模拟HTTP请求过程的统一调度。
更进一步,该模块中抽象工厂的处理方法为:这些数据的差异来源是HTTP请求中附带上去的post数据中,对于POST方式的请求,这些数据就存在与请求的头部post参数中,对于GET请求方式,这些数据就直接存在于请求的URL中,这里统一称为postdata,主要是登录模块中的用户名和密码信息,抓取指定页面中需要提交的日期和渠道号等;利用ITAG通过该抽象类的getValue()方法进行数据的填充,这种方式有利于差异数据的扩展,同时在数据库中会以一个标签的形式去管理这些数据,在适配器程序中通过TAGManager对这些标签进行解析;这些带有标签的数据在数据库中的组织形式如下:UserName=[TAG_USER]&UserPass=[TAG_PWD]。
更进一步,TAGManager.cs中对数据库中带TAG标签的数据处理。在处理完自动登录和抓取指定页面数据后,需要在适配器程序中模拟HTTP请求,去获取相关的信息。
更进一步,页面抓取后,将抓取到指定页面存储为HTML文件,页面解析和数据提取模块就是对HTML文件中的标签进行解析,提取中这些标签中数据。
更进一步,所述提取标签的path可利用工具HtmlAgility Pack Tester工具解析到指定的标签,然后获取该标签中的内容。
更进一步,对于解析出页面激活量的数据,借助工具HtmlAgility Pack Tester解析出来的path,解析完之后在数据提取模块中进行相关处理,存入到DB存储模块中的数据库对应的表中。
本发明采用C#及SQLServer2008相关技术,实现一个批量信息采集管理网站,对批量自动登录和批量跳转到指定页面进行自动化地操作,方便信息采集人员进行采集工作。该适配器需要三个模块进行处理,登录模块中需要模拟登录网站的过程,提取出每个网站的登录过程中需要的信息,这些信息主要是通过请求登录网站过程中的HTTP报文中获取,需要对请求报文和响应报文都需要做出相关分析,提取出模拟登录过程中需要的信息;在登录完成后要保持登录状态并跳转到指定获取信息的页面,并解析跳转的页面,并获取到指定信息;数据提取模块是将上述指定信息的结果进行处理,存储到DB中,进行相关序列化的操作。
本发明实现自动抓取一组URL链接获取指定网页页面并通过页面解析工具提取出所需要的数据信息。采用C#语言,通过模拟HTTP请求过程对指定网站进行访问,将这些网页自动抓取下来,对这些页面进行解析。在自动抓取网页的过程中,结合软件设计模式的工厂模式,生产出所有网页在自动抓去过程中需要的HTTP请求报文信息,并将这些信息序列化到数据库中,统一管理,实现批量自动化抓取网页。再结合Html Agility Pack库对抓取下来到的网页进行解析,提取出所需要数据,存入到相应的数据库中。能有效地省去人工手动访问URL,获取数据所需要的时间,实现每天自动化地抓取网页并提取数据,为后期数据的维护、管理和分析奠定基础。
附图说明
图1是本发明所实现的***框图。
图2是本发明所实现的差异化数据抽象工厂UML图。
图3是本发明所实现的自动登录及抓取指定网页模块核心UML图。
具体实施方式
为了更清楚地表述本发明,下面结合附图对本发明作进一步地描述。
如图1所示,为本发明所实现的该模拟访问网站适配器***,图中所示,整体功能架构包含以下5个模块:自动登录模块、抓取指定页面模块、页面解析模块、数据提取模块、DB存取模块;其中,自动登录模块通过模拟HTTP请求过程,提取出请求HTTP过程报文中的相关信息,将这些参数填入到模拟过程中,实现自动登录;登录成功后,抓取指定页面模块抓取指定页面,抓取指定页面模块将页面数据组织起来后,通过工厂模式将这些数据封装起来,进行模拟HTTP请求的请求过程,得到响应后,进行下一步处理;完成了页面抓取后,抓取到指定页面存储为HTML文件,页面解析模块和数据提取模块就是对这些HTML文件中的标签进行解析,提取中这些标签中数据;解析完之后在数据提取模块中进行相关处理,存入到DB存取模块中的数据库,以便于后续随时获取。
在这两个模块中要将请求HTTP报文的信息组织到数据库中,方便今后扩展和修改需要访问网站的相关信息。抓取指定页面模块将这些数据组织起来后,借助简单工厂模式将这些数据封装起来,提供给一个HTMLHelper类进行模拟HTTP请求的请求过程,得到响应后,进行下一步处理,在自动登录模块需要保存当前的页面,保持登录状态;在抓取指定页面模块需要保存当前的指定页面。这些文件都保存为HTML格式。
在自动登录及抓取指定页面模块中,要采集访问登录页面及指定页面过程中网络数据包(可借助firebug工具获取网络数据包),分析网络数据包中页面HTTP请求过程中所需要的参数(包括:请求页面的url、之前跳转url、cookie、post数据、useragent、contenttype、host等);在该适配器程序中,请求HTTP的方式有GET和POST两种方法,各网站开发者在参数中的设置不一致,导致在请求HTTP过程中由于参数的差异性,可借助设计模式中的抽象工厂模式,将这些存在差异化的数据统一进行管理。通过一个抽象工厂类,根据差异化的数据类型能够制造出不同类型的产品,以满足适配器程序统一进行数据调度的管理。这部分是这两个模块设计的关键之一,能实现适配器程序对模拟HTTP请求过程的统一调度。
该模块中抽象工厂的UML图如图2所示,这些数据的差异来源是HTTP请求中附带上去的post数据中,对于POST方式的请求,这些数据就存在与请求的头部post参数中,对于GET请求方式,这些数据就直接存在于请求的URL中,这里统一称为postdata,主要是登录模块中的用户名和密码信息,抓取指定页面中需要提交的日期(日期格式不统一会导致产生多个日期产品)和渠道号等。ITAG就是抽象工厂中抽象类,后面具体的产品就是去实现该抽象类的getValue()方法,进行数据的填充,这种方式有利于差异数据的扩展,例如:当有新的日期格式产生时,可以直接新增一个日期类去实现这个抽象工厂类ITAG。在数据库中会以一个标签的形式去管理这些数据,在适配器程序中通过TAGManager这个类对这些标签进行解析(借助正则表达式)。这些带有标签的数据在数据库中的组织形式如下:UserName=[TAG_USER]&UserPass=[TAG_PWD]。
TAGManager.cs中对数据库中带TAG标签的数据处理。在处理完自动登录和抓取指定页面数据后,需要在适配器程序中模拟HTTP请求,去获取相关的信息,这两个模块具体实现的UML图,如图3所示。
完成了之前的页面抓取后,会将抓取到指定页面存储为HTML文件,页面解析和数据提取模块就是对这些HTML文件中的标签进行解析,提取中这些标签中数据。提取标签的path可利用工具HtmlAgility Pack Tester这个工具解析到指定的标签,然后获取该标签中的内容。需要解析出页面激活量的数据,借助工具HtmlAgility PackTester解析出来的path。解析完之后在数据提取模块中进行相关处理,存入到DB存储模块中的数据库对应的表中。
该网站适配器***需要导入HtmlAgilityPack.dll动态链接库,用来解析HTML文件。
总之,本发明实现自动抓取一组URL链接获取指定网页页面并通过页面解析工具提取出所需要的数据信息。采用C#语言,通过模拟HTTP请求过程对指定网站进行访问,将这些网页自动抓取下来,对这些页面进行解析。在自动抓取网页的过程中,结合软件设计模式的工厂模式,生产出所有网页在自动抓去过程中需要的HTTP请求报文信息,并将这些信息序列化到数据库中,统一管理,实现批量自动化抓取网页。再结合Html Agility Pack库对抓取下来到的网页进行解析,提取出所需要数据,存入到相应的数据库中。能有效地省去人工手动访问URL,获取数据所需要的时间,实现每天自动化地抓取网页并提取数据,为后期数据的维护、管理和分析奠定基础。
以上公开的仅为本发明的几个具体实施例,但是本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。