一种基于支持ajax的web代理方法

文档序号:8447502阅读:189来源:国知局
一种基于支持ajax的web代理方法
【技术领域】
[0001]本发明属于计算机网络和数据通信领域,主要涉及一种基于支持AJAX的WEB代理方法。
【背景技术】
[0002]随着互联网2.0概念的提出,AJAX技术已经成为网页信息请求的重要方式,由于AJAX是基于异步加载,请求数据时不必重新加载整个网页,浏览器也不会像同步请求那样一直阻塞直到请求结束,等到请求的数据返回时再根据执行结果对网页做动态调整,这样显著的提高了网页的加载速度。
[0003]AJAX的请求大都通过在浏览器中执行动态代码动态生成,传统的代理都是通过对静态可识别的完整请求地址替换达到代理目的,对于这些动态生成的地址无法识别,在网页的源代码中无法找到请求的地址,这就给代理的功能增加了困难。

【发明内容】

[0004]本发明的目的在于提供一种能够对AJAX的请求进行代理的基于支持AJAX的WEB代理方法。
[0005]本发明的目的是这样实现的:
[0006](I)系统接受服务器发送的网页源代码信息;
[0007](2)找到AJAX调用,根据原型机制创建请求方法,替换掉原内置请求方法:方法内部首先判断请求地址是否为相对路径,如果是则需转换成绝对地址;修改请求地址中的域名为代理域名,真实的请求地址可做为参数存放在修改后的请求地址中;使用代表当前调用对象的关键字在函数执行过程中,代表调用函数的对象,最后通过关键字代表当前调用方法的实例,实现原代码的功能;
[0008](3)将修改后的内容发送给客户端,客户端浏览器执行修改后的AJAX请求被发送到代理系统;
[0009](4)代理从客户端发送的AJAX请求的请求地址中提取真实的请求地址并向服务器请求数据。
[0010]本发明的有益效果在于:
[0011]本发明针对AJAX这种通过动态代码动态生成的请求不能有效代理的问题,以原型机制为基础设计了一种对已封装的内置方法进行重写的方法达到了修改请求地址的目的,进而实现了对于AJAX动态请求的代理功能。采用这种方法后浏览器只需通过执行修改后的网页源代码即可,简单实用,完善了 WEB代理的功能。
【附图说明】
[0012]图1是AJAX请求代理的流程图。
[0013]图2是进行请求方法替换的原理图。
[0014]图3是采用比发明的方法前后代理对比效果图。
【具体实施方式】
[0015]下面结合具体实施例对本发明作更详细的描述:
[0016]本发明针对AJAX请求的代理,提出了以原型为基础重写AJAX请求的方案。AJAX的核心是调用XMLHttpRequest对象,而最终生成请求的地址存放在该对象的内置方法中,通过在XMLHttpRequest对象的原型中对其发送请求的方法的内部实现重写,达到了修改请求地址的目的。不同于以往代理服务的原理,对于AJAX请求地址的替换不是在代理程序中进行的,而是在浏览器执行时触发。通过实验表明该方案达到了预期的效果,能够对AJAX请求地址进行有效替换,进而完整代理。
[0017]AJAX请求的核心是调用XMLHttpRequest对象,该对象是被所有浏览器所支持的内置对象,发送请求的关键就是调用其内部的请求方法填充请求地址等参数,再调用发送方法发送请求。
[0018]由于XMLHttpRequest是一个已经封装好的内置对象,无法再对其内部的属性和方法就行修改,这时就必须要使用原型对象。对象所具有的属性和方法其原型对象也能够访问,如果通过原型指针将原本的请求方法赋值给一个新的方法,这样调用新方法即相当于调用了原请求方法;然后再使用原型指针对对象添加一个新的请求方法,内部实现过程中先修改其中的请求地址等参数,再调用新定义的方法,即对象内置的请求方法,这样就实现了修改内置方法的功能,可以在其内部进行任意操作,只要最后调用原方法即可。
[0019]将这段新增代码插入到请求文件或者网页源代码文件中包含AJAX请求代码的前面,这段代码的作用域就会影响到整个文件的AJAX请求方法,浏览器在执行到AJAX请求的方法时,实际上调用的是通过原型新增的请求方法。
[0020]本发明的实施方法为:
[0021](I)系统接受服务器发送的网页源代码信息。
[0022](2)找到其中的AJAX调用,根据原型机制创建新的请求方法,进而替换掉原内置请求方法,其具体过程为:方法内部首先判断请求地址是否为相对路径,如果是则需转换成绝对地址;修改请求地址中的域名为代理域名,真实的请求地址可做为参数存放在修改后的请求地址中;原始的请求方法一般包含3个参数,但是有时也会通过用户名和密码参数进行用户验证,所以要加以判断;使用代表当前调用对象的关键字在函数执行过程中,代表调用函数的那个对象,所以最后通过关键字代表当前调用方法的实例,可以实现原代码的功能。
[0023](3)将修改后的内容发送给客户端,客户端浏览器执行修改后的AJAX请求被发送到代理系统。
[0024](4)代理从客户端发送的AJAX请求的请求地址中提取真实的请求地址并向服务器请求数据。
[0025]支持AJAX的WEB代理技术:
[0026]针对AJAX请求原理以XMLHttpRequest对象为核心,通过原型机制重写XMLHttpRequest对象的请求方法,对方法内部的请求地址等参数进行修改后再调用原请求方法,以达到代理目的;
[0027]所述内置请求方法的重写是:
[0028]通过原型指针将原本的请求方法赋值给一个新的方法,调用新的方法即相当于调用了原请求方法;再使用对象的原型属性对AJAX对象的原型对象添加一个新请求方法。
[0029]所述调用原请求方法:
[0030]通过表示当前调用方法的关键字属性,代表当前调用方法的对象,无需对网页中源代码进行任何修改即可实现方法重写后的调用。
[0031]实施例:
[0032](I)实验环境
[0033]当前环境采用回流模式,在一台服务器上部署代理程序,只有当代理程序运行时才能正常上网,否则不能访问外部网络。在另一台服务器上部署分流程序,客户端部署在服务器上,安装操作系统的虚拟机通过浏览器进行正常上网。
[0034](2)实验及结果分析
[0035]支付宝首页的登陆框在输入用户名后,可以根据网页事件动态触发AJAX请求,进而验证输入的账号是否存在或者是否有效,这种功能目前在大多数网站输入登陆信息时都被采取。用户在输入账号信息后在网页没有重新加载也没有其他变化的情况下就触发了AJAX请求,执行代码通过XMLHttpRequest对象执行请求,根据之前理论分析,可以通过嵌入代码的方式实现对请求方法的劫持,修改其中请求地址等参数再执行请求。
[0036]在未增加AJAX修改代码之前的传统代理在输入用户名之后的情况中,在任意输入用户名之后,在浏览器的开发者工具中查看到了一个网络请求,但是由于未能对其中的请求地址进行有效替换,发出的请求没有得到服务器的响应,导致请求失败,页面也没有显示用户名输入无效的提示信息。
[0037]在输入用户名称后,触发AJAX调用发出了一个请求,正常情况下请求的地址经过代理系统后,由于其请求为相对地址,而在变为绝对地址后其协议名已经由原始的加密请求链接被静态替换模块替换为明文请求链接协议,但是请求地址本身由于无法识别导致不能被替换,所以整个请求的地址替换不完全,无法被代理系统识别解析成正确的地址进行请求,原本的加密连接变成了明文的连接,服务器当然不会做出正确响应。
[0038]在代理系统中加入对AJAX的动态请求进行处理的模块之后,对于同样的请求的代理,经过处理之后,用户名验证请求的地址的末尾加入了新的标记,由此可以识别出此次请求需要代理系统将地址的协议头变换为原始请求类型,经过密文连接向远端服务器进行加密请求,即变为正确情况下的请求地址。在登陆框中也显示了服务器的返回信息,表示此用户名是无效的。浏览器的开发者工具中显示的字段证明了登陆名验证的请求正是输入用户名之后触发的,服务器返回的响应码200表明此次请求成功的收到了服务器的响应。
[0039]针对支付宝,人人,百度,新浪微博分别进行了系统测试,为了进行效果对比,测试内容包括经过传统代理后请求成功的请求地址个数,经过支持AJAX的代理后请求成功的请求地址个数,成功百分比如图3。
【主权项】
1.一种基于支持AJAX的WEB代理方法,其特征在于,包括如下步骤: (1)系统接受服务器发送的网页源代码信息; (2)找到AJAX调用,根据原型机制创建请求方法,替换掉原内置请求方法:方法内部首先判断请求地址是否为相对路径,如果是则需转换成绝对地址;修改请求地址中的域名为代理域名,真实的请求地址可做为参数存放在修改后的请求地址中;使用代表当前调用对象的关键字在函数执行过程中,代表调用函数的对象,最后通过关键字代表当前调用方法的实例,实现原代码的功能; (3)将修改后的内容发送给客户端,客户端浏览器执行修改后的AJAX请求被发送到代理系统; (4)代理从客户端发送的AJAX请求的请求地址中提取真实的请求地址并向服务器请求数据。
【专利摘要】本发明属于计算机网络和数据通信领域,主要涉及一种基于支持AJAX的WEB代理方法。本发明包括:系统接受服务器发送的网页源代码信息;找到AJAX调用,根据原型机制创建请求方法,替换掉原内置请求方法;将修改后的内容发送给客户端,客户端浏览器执行修改后的AJAX请求被发送到代理系统;代理从客户端发送的AJAX请求的请求地址中提取真实的请求地址并向服务器请求数据。本发明针对AJAX这种通过动态代码动态生成的请求不能有效代理的问题,以原型机制为基础设计了一种对已封装的内置方法进行重写的方法达到了修改请求地址的目的,进而实现了对于AJAX动态请求的代理功能。
【IPC分类】H04L29-08
【公开号】CN104767808
【申请号】CN201510152354
【发明人】玄世昌, 杨武, 王巍, 苘大鹏, 陈泳杉, 朱于增
【申请人】哈尔滨工程大学
【公开日】2015年7月8日
【申请日】2015年4月2日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1