CN104767808B - 一种基于支持ajax的web代理方法 - Google Patents
一种基于支持ajax的web代理方法 Download PDFInfo
- Publication number
- CN104767808B CN104767808B CN201510152354.2A CN201510152354A CN104767808B CN 104767808 B CN104767808 B CN 104767808B CN 201510152354 A CN201510152354 A CN 201510152354A CN 104767808 B CN104767808 B CN 104767808B
- Authority
- CN
- China
- Prior art keywords
- request
- ajax
- address
- requesting
- prototype
- 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.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明属于计算机网络和数据通信领域,主要涉及一种基于支持AJAX的WEB代理方法。本发明包括:系统接受服务器发送的网页源代码信息;找到AJAX调用,根据原型机制创建请求方法,替换掉原内置请求方法;将修改后的内容发送给客户端,客户端浏览器执行修改后的AJAX请求被发送到代理系统;代理从客户端发送的AJAX请求的请求地址中提取真实的请求地址并向服务器请求数据。本发明针对AJAX这种通过动态代码动态生成的请求不能有效代理的问题,以原型机制为基础设计了一种对已封装的内置方法进行重写的方法达到了修改请求地址的目的,进而实现了对于AJAX动态请求的代理功能。
Description
技术领域
本发明属于计算机网络和数据通信领域,主要涉及一种基于支持AJAX的WEB代理方法。
背景技术
随着互联网2.0概念的提出,AJAX技术已经成为网页信息请求的重要方式,由于AJAX是基于异步加载,请求数据时不必重新加载整个网页,浏览器也不会像同步请求那样一直阻塞直到请求结束,等到请求的数据返回时再根据执行结果对网页做动态调整,这样显著的提高了网页的加载速度。
AJAX的请求大都通过在浏览器中执行动态代码动态生成,传统的代理都是通过对静态可识别的完整请求地址替换达到代理目的,对于这些动态生成的地址无法识别,在网页的源代码中无法找到请求的地址,这就给代理的功能增加了困难。
发明内容
本发明的目的在于提供一种能够对AJAX的请求进行代理的基于支持AJAX的WEB代理方法。
本发明的目的是这样实现的:
(1)系统接受服务器发送的网页源代码信息;
(2)找到AJAX调用,根据原型机制创建请求方法,替换掉原内置请求方法:方法内部首先判断请求地址是否为相对路径,如果是则需转换成绝对地址;修改请求地址中的域名为代理域名,真实的请求地址可做为参数存放在修改后的请求地址中;使用代表当前调用对象的关键字在函数执行过程中,代表调用函数的对象,最后通过关键字代表当前调用方法的实例,实现原代码的功能;
(3)将修改后的内容发送给客户端,客户端浏览器执行修改后的AJAX请求被发送到代理系统;
(4)代理从客户端发送的AJAX请求的请求地址中提取真实的请求地址并向服务器请求数据。
本发明的有益效果在于:
本发明针对AJAX这种通过动态代码动态生成的请求不能有效代理的问题,以原型机制为基础设计了一种对已封装的内置方法进行重写的方法达到了修改请求地址的目的,进而实现了对于AJAX动态请求的代理功能。采用这种方法后浏览器只需通过执行修改后的网页源代码即可,简单实用,完善了WEB代理的功能。
附图说明
图1是AJAX请求代理的流程图。
图2是进行请求方法替换的原理图。
图3是采用比发明的方法前后代理对比效果图。
具体实施方式
下面结合具体实施例对本发明作更详细的描述:
本发明针对AJAX请求的代理,提出了以原型为基础重写AJAX请求的方案。AJAX的核心是调用XMLHttpRequest对象,而最终生成请求的地址存放在该对象的内置方法中,通过在XMLHttpRequest对象的原型中对其发送请求的方法的内部实现重写,达到了修改请求地址的目的。不同于以往代理服务的原理,对于AJAX请求地址的替换不是在代理程序中进行的,而是在浏览器执行时触发。通过实验表明该方案达到了预期的效果,能够对AJAX请求地址进行有效替换,进而完整代理。
AJAX请求的核心是调用XMLHttpRequest对象,该对象是被所有浏览器所支持的内置对象,发送请求的关键就是调用其内部的请求方法填充请求地址等参数,再调用发送方法发送请求。
由于XMLHttpRequest是一个已经封装好的内置对象,无法再对其内部的属性和方法就行修改,这时就必须要使用原型对象。对象所具有的属性和方法其原型对象也能够访问,如果通过原型指针将原本的请求方法赋值给一个新的方法,这样调用新方法即相当于调用了原请求方法;然后再使用原型指针对对象添加一个新的请求方法,内部实现过程中先修改其中的请求地址等参数,再调用新定义的方法,即对象内置的请求方法,这样就实现了修改内置方法的功能,可以在其内部进行任意操作,只要最后调用原方法即可。
将这段新增代码插入到请求文件或者网页源代码文件中包含AJAX请求代码的前面,这段代码的作用域就会影响到整个文件的AJAX请求方法,浏览器在执行到AJAX请求的方法时,实际上调用的是通过原型新增的请求方法。
本发明的实施方法为:
(1)系统接受服务器发送的网页源代码信息。
(2)找到其中的AJAX调用,根据原型机制创建新的请求方法,进而替换掉原内置请求方法,其具体过程为:方法内部首先判断请求地址是否为相对路径,如果是则需转换成绝对地址;修改请求地址中的域名为代理域名,真实的请求地址可做为参数存放在修改后的请求地址中;原始的请求方法一般包含3个参数,但是有时也会通过用户名和密码参数进行用户验证,所以要加以判断;使用代表当前调用对象的关键字在函数执行过程中,代表调用函数的那个对象,所以最后通过关键字代表当前调用方法的实例,可以实现原代码的功能。
(3)将修改后的内容发送给客户端,客户端浏览器执行修改后的AJAX请求被发送到代理系统。
(4)代理从客户端发送的AJAX请求的请求地址中提取真实的请求地址并向服务器请求数据。
支持AJAX的WEB代理技术:
针对AJAX请求原理以XMLHttpRequest对象为核心,通过原型机制重写XMLHttpRequest对象的请求方法,对方法内部的请求地址等参数进行修改后再调用原请求方法,以达到代理目的;
所述内置请求方法的重写是:
通过原型指针将原本的请求方法赋值给一个新的方法,调用新的方法即相当于调用了原请求方法;再使用对象的原型属性对AJAX对象的原型对象添加一个新请求方法。
所述调用原请求方法:
通过表示当前调用方法的关键字属性,代表当前调用方法的对象,无需对网页中源代码进行任何修改即可实现方法重写后的调用。
实施例:
(1)实验环境
当前环境采用回流模式,在一台服务器上部署代理程序,只有当代理程序运行时才能正常上网,否则不能访问外部网络。在另一台服务器上部署分流程序,客户端部署在服务器上,安装操作系统的虚拟机通过浏览器进行正常上网。
(2)实验及结果分析
支付宝首页的登陆框在输入用户名后,可以根据网页事件动态触发AJAX请求,进而验证输入的账号是否存在或者是否有效,这种功能目前在大多数网站输入登陆信息时都被采取。用户在输入账号信息后在网页没有重新加载也没有其他变化的情况下就触发了AJAX请求,执行代码通过XMLHttpRequest对象执行请求,根据之前理论分析,可以通过嵌入代码的方式实现对请求方法的劫持,修改其中请求地址等参数再执行请求。
在未增加AJAX修改代码之前的传统代理在输入用户名之后的情况中,在任意输入用户名之后,在浏览器的开发者工具中查看到了一个网络请求,但是由于未能对其中的请求地址进行有效替换,发出的请求没有得到服务器的响应,导致请求失败,页面也没有显示用户名输入无效的提示信息。
在输入用户名称后,触发AJAX调用发出了一个请求,正常情况下请求的地址经过代理系统后,由于其请求为相对地址,而在变为绝对地址后其协议名已经由原始的加密请求链接被 静态替换模块替换为明文请求链接协议,但是请求地址本身由于无法识别导致不能被替换,所以整个请求的地址替换不完全,无法被代理系统识别解析成正确的地址进行请求,原本的加密连接变成了明文的连接,服务器当然不会做出正确响应。
在代理系统中加入对AJAX的动态请求进行处理的模块之后,对于同样的请求的代理,经过处理之后,用户名验证请求的地址的末尾加入了新的标记,由此可以识别出此次请求需要代理系统将地址的协议头变换为原始请求类型,经过密文连接向远端服务器进行加密请求,即变为正确情况下的请求地址。在登陆框中也显示了服务器的返回信息,表示此用户名是无效的。浏览器的开发者工具中显示的字段证明了登陆名验证的请求正是输入用户名之后触发的,服务器返回的响应码200表明此次请求成功的收到了服务器的响应。
针对支付宝,人人,百度,新浪微博分别进行了系统测试,为了进行效果对比,测试内容包括经过传统代理后请求成功的请求地址个数,经过支持AJAX的代理后请求成功的请求地址个数,成功百分比如图3。
Claims (1)
1.一种基于支持AJAX的WEB代理方法,其特征在于,包括如下步骤:
(1)系统接受服务器发送的网页源代码信息,即在代理系统中加入对AJAX的动态请求进行处理的模块;
(2)找到AJAX请求,根据原型机制创建AJAX请求方法,替换掉原内置请求方法,具体过程为:方法内部首先判断请求地址是否为相对路径,如果是则需转换成绝对地址;修改请求地址中的域名为代理域名,真实的请求地址做为参数存放在修改后的请求地址中;使用代表当前调用对象的关键字在函数执行过程中,代表调用函数的对象,最后通过关键字代表当前调用方法的实例,实现原代码的功能;
(3)将修改后的AJAX请求发送给客户端,客户端浏览器执行修改后的AJAX请求并发送到代理系统;
(4)代理系统从客户端发送的AJAX请求的请求地址中提取真实的请求地址并向服务器请求数据;针对AJAX请求原理以XMLHttpRequest对象为核心,通过原型机制重写XMLHttpRequest对象的请求方法,对方法内部的请求地址参数进行修改后再调用原请求方法,以达到代理目的;
所述重写XMLHttpRequest对象的请求方法是:
通过原型指针将原本的请求方法赋值给一个新的方法,调用新的方法即相当于调用了原请求方法;再使用对象的原型属性对AJAX对象的原型对象添加一个新请求方法;
所述调用原请求方法:
通过表示当前调用方法的关键字属性,代表当前调用方法的对象,无需对网页中源代码进行任何修改即可实现方法重写后的调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510152354.2A CN104767808B (zh) | 2015-04-02 | 2015-04-02 | 一种基于支持ajax的web代理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510152354.2A CN104767808B (zh) | 2015-04-02 | 2015-04-02 | 一种基于支持ajax的web代理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104767808A CN104767808A (zh) | 2015-07-08 |
CN104767808B true CN104767808B (zh) | 2019-03-05 |
Family
ID=53649407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510152354.2A Active CN104767808B (zh) | 2015-04-02 | 2015-04-02 | 一种基于支持ajax的web代理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104767808B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI610183B (zh) * | 2016-06-14 | 2018-01-01 | 健行學校財團法人健行科技大學 | 植基於ajax技術於控管網頁共通部分之運作系統 |
CN109040339B (zh) * | 2018-07-27 | 2021-09-17 | 深圳市腾讯网络信息技术有限公司 | 基于ajax的跨域请求处理方法、装置及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179128A (zh) * | 2013-03-28 | 2013-06-26 | 国家电网公司 | 安卓平台浏览器与网站服务器间的通信安全增强代理系统 |
CN103209175A (zh) * | 2013-03-13 | 2013-07-17 | 深圳市同洲电子股份有限公司 | 一种建立数据传输连接的方法及装置 |
-
2015
- 2015-04-02 CN CN201510152354.2A patent/CN104767808B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209175A (zh) * | 2013-03-13 | 2013-07-17 | 深圳市同洲电子股份有限公司 | 一种建立数据传输连接的方法及装置 |
CN103179128A (zh) * | 2013-03-28 | 2013-06-26 | 国家电网公司 | 安卓平台浏览器与网站服务器间的通信安全增强代理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104767808A (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102220127B1 (ko) | 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치 | |
KR102243793B1 (ko) | 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치 | |
US7992127B2 (en) | Method and system of encapsulating web site transactions for computer-aided generation of web services | |
CN102281311B (zh) | 一种基于开放应用编程接口实现网络业务的方法、系统及装置 | |
US20150128103A1 (en) | System and method for automating application programming interface integration | |
CN109871499A (zh) | 页面加载方法及客户端 | |
US20090083632A1 (en) | Representing user interactions as a synchronous action in a business process flow | |
US9971636B2 (en) | Methods for implementing web services and devices thereof | |
US20020038349A1 (en) | Method and system for reusing internet-based applications | |
CN102323880A (zh) | 基于浏览器解析方式的手机应用界面的开发方法和终端 | |
CN103825783A (zh) | 一种测试方法及装置 | |
CN106919511B (zh) | 应用的模拟方法、模拟应用及其运作方法以及模拟系统 | |
EP1696339A2 (en) | System and method for testing data format using targeted variant input | |
CN104767808B (zh) | 一种基于支持ajax的web代理方法 | |
CN101222505A (zh) | 实现客户端本地部署的方法 | |
CN109885792B (zh) | 一种基于webdriver技术的APP桥接方法 | |
CA2297597A1 (en) | Method and system for testing internet-based applications | |
CN107566203A (zh) | 一种线上服务测试方法及系统 | |
CN105808727A (zh) | 基于html5的网站跨屏适配技术架构和适配方法 | |
CN116051218A (zh) | 一种基于内嵌浏览器的客户端开票方法及系统 | |
CN115982257A (zh) | 接口创建方法以及相关设备 | |
CN115484045A (zh) | 一种基于api网关的统一身份认证方法及系统 | |
CN115454878A (zh) | 一种应用于微服务的接口调用测试方法及相关装置 | |
Aivaliotis | Mastering Nginx | |
CN113901377B (zh) | 遗留系统的服务调用方法、装置、存储介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |