一种HTTP服务器数据拦截的方法、装置和存储介质制造方法及图纸

技术编号:33535853 阅读:15 留言:0更新日期:2022-05-19 02:16
本发明专利技术涉及一种HTTP服务器数据拦截的方法、装置和存储介质,所述方法包括以下步骤:加载步骤,在服务程序启动时加载Agent文件;注入步骤,在Agent文件中注入监控程序;替换步骤,在Agent文件中插入新的过滤方法用于拦截所述服务程序中原始的过滤方法;配置步骤,在新的过滤方法中配置过滤规则,采集事务类接口的输入输出报文数据;数据发送步骤,发送所述报文数据。本发明专利技术无需获取和修改服务程序的源码,而是在服务程序中注入代码,拦截WEB服务器的请求过程和应答过程,从中提取输入输出报文数据,更加通用,适合于不同形式的服务程序。适合于不同形式的服务程序。适合于不同形式的服务程序。

【技术实现步骤摘要】
一种HTTP服务器数据拦截的方法、装置和存储介质


[0001]本专利技术涉及接口测试技术,具体涉及一种HTTP服务器数据拦截的方法、装置和存储介质。

技术介绍

[0002]在接口自动化测试中,接口测试工具需要根据接口的输入输出参数,生成接口请求数据包,实现和被测服务程序的交互。接口信息包括接口的输入输出参数和服务路径,如果是HTTP服务,还需要知道请求的方法Method,请求格式Request ContentType和应答格式Response ContentType。在接口测试的实施过程中,经常遇到接口变更,导致接口文档和实际的接口参数不一致,有些应用系统甚至没有接口说明文档,在编写接口测试脚本时,需要花费大量的时间确认接口的实际参数。一种解决方法就是在网络中拦截请求和应答数据,直接生成接口配置信息,或者和已经配置的接口信息进行比对。
[0003]现有的网络数据拦截有三种方式。
[0004]方法1:在客户端PC上拦截网络数据;如果客户端是Web浏览器,在浏览器的开发工具中能看到请求和应答数据;如果客户端是手机APP,需要配置网络代理,从Fiddler、Wireshark等网络过滤器工具中抓取报文;如果是Windows客户端程序,也可以使用Fiddler、Wireshark等工具拦截报文。这种方式的局限性在于:1、如果数据是加密的,拦截到的数据是密文;2、一次服务请求,可能会产生大量的辅助请求,比如一次表单提交,会触发很多下载图片文件、js文件、css文件等额外的HTTP请求,无法快速的在其中找到核心数据;3、拦截到的数据需要手工复制到接口分析工具中,尤其是请求头中的数据,操作很不方便。
[0005]方法2:在网络上拦截TCP数据,需要在专用的路由器上配置旁路或映射端口,并设置过滤规则拦截指定IP和端口的数据。这种方法比较通用,除了拦截HTTP数据,也可以拦截所有TCP数据,这种方式的局限性在于,1、需要专用的路由器,由专业人员配置旁路;2、当并发量比较大时,拦截的数据量比较大,很难找到需要的数据;3、拦截的是TCP数据,需要从中提取并解析HTTP数据;4、需要配对请求和应答数据;5、加密数据需要解密;6、数据采集量比较大,很难实时采集数据并提供给测试人员。
[0006]方法3:在WEB服务程序中增加拦截器Filter,在拦截器的doFilter方法中包装HttpServletRequest和HttpServletResponse这两个对象,拦截这两个对象中的InputStream和OutputStream变量,在操作输入输出流时增加旁路处理,把数据记录到缓存中。这种方法需要修改服务程序的源程序,需要为测试环境和生产环境发布两种运行包,并且所有需要监控的服务程序都需要完成这种修改,实施难度比较大。

技术实现思路

[0007]针对现有技术的不足,本专利技术公开了一种HTTP服务器数据拦截的方法、装置和存储介质。
[0008]本专利技术所采用的技术方案如下:
[0009]一种HTTP服务器数据拦截的方法,包括以下步骤:
[0010]加载步骤,在服务程序启动时加载Agent文件;
[0011]注入步骤,在Agent文件中注入监控程序;
[0012]替换步骤,在Agent文件中插入新的过滤方法用于拦截所述服务程序中原始的过滤方法;
[0013]配置步骤,在新的过滤方法中配置过滤规则,采集事务类接口的输入输出报文数据;
[0014]数据发送步骤,发送所述报文数据。
[0015]其进一步的技术方案为:在所述加载步骤中,修改服务程序的启动脚本,增加JVM启动参数

javaagent:Agent文件;在Agent文件中,实现一个ClassFileTransformer类,用于修改所述服务程序。
[0016]其进一步的技术方案为:在所述注入步骤中,分析和识别WEB容器或应用框架的类型,并根据WEB容器或应用框架的类型,确定需要修改的类装载器,将监控程序注入到服务程序中。
[0017]其进一步的技术方案为:在分析和识别WEB容器或应用框架的类型之前,对应用类装载器的种类进行判断,并根据应用类装载器的种类确定监控程序的注入方法:
[0018]如果应用类装载器是JDK提供的,其加载时间可能早于Agent,需要通过addUrl方法注入监控程序;
[0019]如果应用类装载器是WEB容器或应用框架实现的,其加载时间晚于Agent,可以修改loadClass方法注入监控程序。
[0020]其进一步的技术方案为:在所述替换步骤中:
[0021]配置需要拦截的Filter类;
[0022]插入新的过滤方法用于拦截原始的过滤方法
[0023]在新的过滤方法中,检查请求是否需要监控;如果请求需要监控,包装HttpServletRequest和HttpServletResponse类。
[0024]其进一步的技术方案为:在所述配置步骤中:
[0025]在HttpServletRequest的包装类中,替换getInputStream和getReader方法,返回一个ServletInputStream或BufferedReader的包装类,当服务程序从输入流中读取请求数据时,所返回的包装类把所述报文数据加入到请求数据缓存中;
[0026]在HttpServletResponse的包装类中,替换getOutputStream和getWriter方法,返回一个ServletOutputStream或PrintWriter的包装类,当服务程序把应答数据写到输出流时,所返回的包装类把所述报文数据加入到应答数据缓存中。
[0027]其进一步的技术方案为:所述数据发送步骤包括:
[0028]利用所述监控程序将所述报文数据发送至监控服务器;
[0029]监控服务器收到所述报文数据后,推送至监控台;
[0030]在所述监控台设置过滤模块,过滤并显示所述报文数据。
[0031]一种HTTP服务器数据拦截的装置,包括以下模块:
[0032]加载模块,用于在服务程序启动时加载Agent文件;
[0033]注入模块,用于在Agent文件中注入监控程序;
[0034]替换模块,用于在Agent文件中插入新的过滤方法用于拦截所述服务程序中原始的过滤方法;
[0035]配置模块,用于在新的过滤方法中配置过滤规则,采集事务类接口的输入输出报文数据;
[0036]数据发送模块,用于发送所述报文数据。
[0037]一种HTTP服务器数据拦截的装置,所述装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上任一项所述方法的步骤。
[0038]一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述方法本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种HTTP服务器数据拦截的方法,其特征在于,包括以下步骤:加载步骤,在服务程序启动时加载Agent文件;注入步骤,在Agent文件中注入监控程序;替换步骤,在Agent文件中插入新的过滤方法用于拦截所述服务程序中原始的过滤方法;配置步骤,在新的过滤方法中配置过滤规则,采集事务类接口的输入输出报文数据;数据发送步骤,发送所述报文数据。2.根据权利要求1所述的HTTP服务器数据拦截的方法,其特征在于:在所述加载步骤中,修改服务程序的启动脚本,增加JVM启动参数

javaagent:Agent文件;在Agent文件中,实现一个ClassFileTransformer类,用于修改所述服务程序。3.根据权利要求1所述的HTTP服务器数据拦截的方法,其特征在于:在所述注入步骤中,分析和识别WEB容器或应用框架的类型,并根据WEB容器或应用框架的类型,确定需要修改的类装载器,将监控程序注入到服务程序中。4.根据权利要求3所述的HTTP服务器数据拦截的方法,其特征在于:在分析和识别WEB容器或应用框架的类型之前,对应用类装载器的种类进行判断,并根据应用类装载器的种类确定监控程序的注入方法。5.根据权利要求1所述的HTTP服务器数据拦截的方法,其特征在于,在所述替换步骤中:配置需要拦截的Filter类;插入新的过滤方法用于拦截原始的过滤方法在新的过滤方法中,检查请求是否需要监控;如果请求需要监控,包装HttpServletRequest和HttpServletResponse类。6.根据权利要求1所述的HTTP服务器数据拦截的方法,其特征在于,在所述配置步骤中:在HttpServletRequest的包装类中,替换getInput...

【专利技术属性】
技术研发人员:吴天波王希郎咸鑫
申请(专利权)人:江苏京玉信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1