移动智能终端下转发应用内流量的方法

xiaoxiao2021-2-23  122

移动智能终端下转发应用内流量的方法
【技术领域】
[0001]本发明涉及移动互联网领域,尤其是涉及移动智能终端下转发应用内流量的方法。
【背景技术】
[0002]移动智能终端是指像个人电脑一样,具有独立的操作系统,可以由用户自行安装软件、游戏等第三方服务商提供的程序,通过此类程序来不断对终端的功能进行扩充,并可以通过移动通讯网络来实现无线网络接入的便携式设备。常见的移动智能终端包括智能手机和平板电脑。得益于其高度的便携性,移动智能终端正在成为人们使用频率最高的电子设备。
[0003]移动智能终端被使用的最多的功能之一是访问互联网,这正在取代通过台式电脑或者笔记本电脑访问互联网的传统方式。在这种背景下,希望移动智能终端也具有以往仅在台式电脑或者笔记本电脑上实现的各种网络服务,例如网络代理服务。
[0004]网络代理服务允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。代理服务有利于保障网络终端的隐私或安全,防止攻击,同时可以缓存源服务器的内容,降低源服务器的负载压力。
[0005]目前移动智能终端中的应用程序上使用代理服务,主要有以下几种方法:
[0006]1、CNAME方法:CNAME指别名记录(也被称为规范名字),这种记录允许将多个名字映射到同一台计算机。可以通过DNS (Domain Name System,域名系统)将域名映射到代理服务器的地址。这一方法的缺点是仅限HTTP/HTTPS协议,且该方法在配置后会有一定的延迟时间,无法立即生效。
[0007]2、APN方法,通过配置APN(Access Point Name,接入点)来引导流量。这一方法的缺点是配置了 APN的移动智能终端上所有的应用程序都会被迫使用所配置的代理服务器,安全性低。
[0008]3、代码控制:应用程序开发者直接在代码中对应用程序的各个网络请求进行代理设置,将流量发送到代理服务器。这一方法的缺点是代码改动量大,复用程度低,且在有些操作系统(例如苹果公司的1S)中会出现无法设置代理服务器的问题。

【发明内容】

[0009]本发明所要解决的技术问题是提供一种移动智能终端下转发应用内流量的方法,该方法允许个别应用程序设置代理,且能够在1S这样的系统中使用。
[0010]本发明为解决上述技术问题而采用的技术方案是提出一种移动智能终端下转发应用程序内流量的方法,适用于1S操作系统,该方法包括以下步骤:1)在该1S操作系统的一种应用程序启动时,根据应用程序的配置决定是否需要启动代理,当需要启动代理时,在该应用程序上执行以下网络代理管理操作:使用一更新http代理函数替换该1S操作系统的动态库中的原生http代理函数,该更新http代理函数包含代理服务器信息;使用一更新Socket连接创建函数更换该1S操作系统的动态库中的原生Socket连接创建函数,该更新Socket连接创建函数的连接目标为该代理服务器;2)当该应用程序发出http或https请求时,使用该更新http代理函数指向该代理服务器,当该应用程序发出TCP/IP请求时,使用该更新Socket连接创建函数指向该代理服务器。
[0011]在本发明的一实施例中,该网络代理管理操作还包括:使用多个更新视频播放相关函数替换该1S操作系统的多媒体系统库中的原生视频播放相关函数,并且该应用程序访问远程视频时,使用该多个更新视频播放相关函数访问该代理服务器。
[0012]在本发明的一实施例中,在该步骤1)中,使用一更新http代理函数替换该1S操作系统的动态库中的原生http代理函数的步骤包括:创建该更新http代理函数,该更新http代理函数具有第一指针地址;计算该原生http代理函数在该动态库中的偏移量,以获取该原生http代理函数在该动态库中的第二指针地址;以及将该第二指针地址指向该更新http代理函数,且将该第一指针地址指向该原生http代理函数。
[0013]在本发明的一实施例中,在该步骤1)中,使用一更新Socket连接创建函数更换该1S操作系统的动态库中的原生Socket连接创建函数的步骤包括:计算Socket中的原生Socket连接创建函数在该动态库中的偏移量,从而获取该原生Socket连接创建函数在该动态库中的第一指针地址;将该第一指针地址指向该更新Socket连接创建函数,且将原本指向该更新Socket连接创建函数的第二指针地址指向该原生Socket连接创建函数。
[0014]在本发明的一实施例中,在该步骤1)中,使用多个更新视频播放相关函数替换该1S操作系统下多媒体系统库中的原生视频播放相关函数的步骤包括:在该多媒体系统库中创建分类;在所创建的各分类中创建更新视频播放相关函数;获取该多媒体系统库中各原生视频播放相关函数的指针;以及将各更新视频播放相关函数的指针与该多媒体系统库中相应的各原生视频播放相关函数的指针替换。
[0015]在本发明的一实施例中,使用运行时(runtime)技术进行该指针替换。
[0016]在本发明的一实施例中,该应用程序包含一软件开发工具包,且该应用程序调用该软件开发工具包开始进行网络代理管理操作。
[0017]在本发明的一实施例中,该应用程序包含调用该软件开发工具包的代码。
[0018]本发明由于采用以上技术方案,使之与现有技术相比,具有如下显著优点:
[0019]1、支持协议种类多。支持HTTP/HTTPS和其他所有基于TCP的应用层协议。
[0020]2、响应快速。对于是否使用代理的开关,所使用代理服务器的地址等修改能立即生效。
[0021]3、不影响其他应用。确保只有需要使用服务的应用的流量被转发到代理服务器,智能移动终端上的其他应用不受影响。
【附图说明】
[0022]为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的【具体实施方式】作详细说明,其中:
[0023]图1是本发明一实施例中启用代理服务流程图。
[0024]图2是本发明一实施例中网络代理管理操作流程图。
[0025]图3示出替换Http代理函数的流程。
[0026]图4示出替换Socket连接创建函数的流程。
[0027]图5示出替换视频播放相关函数的流程。
[0028]图6是本发明一实施例中使用HTTP/HTTPS协议访问网络流程图。
[0029]图7是实施例一实施例中使用TCP协议访问网络流程图。
[0030]图8是实施例一实施例中使用1S所提供的API播放网络视频的流程图。
【具体实施方式】
[0031]本发明的实施例描述一种在移动智能终端平台下将网络请求转发到指定服务器(后文称为代理服务器)的方法。本发明的实施例所涉及的移动终端平台例如为苹果公司的1S操作系统。
[0032]已知的CNAME方法仅限HTTP/HTTPS协议,且该方法在配置后会有一定的延迟时间,无法立即生效。已知的APN方法迫使移动智能终端上所有的应用程序都使用所配置的代理服务器。已知的代码控制方法需要直接在代码中对应用程序的各个网络请求进行代理设置,代码改动量大、复用程度低,且在有些操作系统(例如苹果公司的1S)中经常会出现无法设置代理服务器的问题。
[0033]本发明的各实施例适用于各种协议的网络请求,包括但不限于HTTP/HTTPS协议、TCP/IP协议以及视频播放。另外,本发明的一些实施例的方法可允许应用程序单独设定代理。再者,本发明的一些实施例的方法不必大量更改应用程序的常规代码。
[0034]本发明的实施例通过在应用程序刚刚启动时或者启动后的合适时机内,执行一系列的网络代理管理操作来完成所需的代理服务器设置。这些网络代理管理操作涉及与操作系统的交互,且可在该应用程序运行期间,暂时性地修改操作系统的相关函数。通过这些交互和修改,使得操作系统选择性地为该应用程序设置代理服务器,且允许该应用程序的各种协议的网络请求均指向该代理服务器。对应用程序而言,经过初始的网络代理管理操作后,不必特别指定后续的各个网络请求所指向的代理服务器,而由修改后的操作系统的相关函数来实现代理服务器的设置。
[0035]图1是本发明一实施例中启用代理服务流程图。参考图1所示,如步骤101,在1S操作系统中启动一应用程序。例如,响应用户的操作,启动一个应用程序。此应用程序需要包含能够实施所需网络代理管理操作的代码。网络代理管理操作的具体细节将在后文描述。如步骤102,根据应用程序的配置决定是否需要启动代理。当需要启动代理时,转入步骤 103,在应用程序上执行网络代理管理操作,然后进入步骤104 ;当不需要启动代理时,直接进入步骤104,运行应用程序。
[0036]应用程序可默认地设置代理开关,例如开启代理或者关闭代理。在一实施例中,允许使用者修改代理开关的设置。进一步,应用程序可默认地设置代理服务器地址、端口以及其他信息。在一实施例中,允许使用者修改这些设置。
[0037]图2是本发明一实施例中网络代理管理操作流程图。参考图2所示,应用程序所执行的网络代理管理操作可包括:
[0038]步骤201,使用一更新http代理函数替换1S操作系统的动态库中的原生http代理函数,该更新http代理函数包含代理服务器信息;
[0039]步骤202,使用一更新Socket连接创建函数更换1S操作系统的动态库中的原生Socket连接创建函数,该更新Socket连接创建函数的连接目标为该代理服务器;
[0040]步骤203,使用多个更新视频播放相关函数替换1S操作系统的多媒体系统库中的原生视频播放相关函数。
[0041]网络代理管理操作可包含步骤201-203中的部分或者全部。此外,步骤201-203的执行顺序可以是任意的,并不限于图中所示的顺序。
[0042]具体而言,http代理函数是1S操作系统的动态库中用于http或https请求的代理函数。当1S操作系统收到http或https请求时,会使用该http代理函数的代理设置,连接到其所设定的代理服务器。通过替换该http代理函数,可将前述的应用程序所需的代理设置修改到操作系统中,从而当应用程序向操作系统发出http或https请求时,操作系统会使用更新http代理函数指向该代理服务器。
[0043]类似地,Socket连接创建函数是1S操作系统的动态库中用于通过Socket连接的TCP/IP请求的函数。当1S操作系统收到TCP请求时,会使用该Socket连接创建函数连接到其所设定的目标地址。通过替换该Socket连接创建函数,可将前述的应用程序所需的代理服务器修改到操作系统中,从而当应用程序向操作系统发出TCP/IP请求时,操作系统会使用更新Socket连接创建函数连接该代理服务器。
[0044]同样,1S操作系统的多媒体系统库使用多个视频播放相关函数来连接到远程资源。通过替换这些视频播放相关函数,可将前述的应用程序所需的代理服务器修改到操作系统中,从而当应用程序向操作系统发出视频播放请求时,操作系统会使用更新视频播放相关函数连接该代理服务器。
[0045]下面介绍更换所需的各种函数的方法。
[0046]图3示出替换Http代理函数的流程。参考图3所示,使用更新http代理函数替换1S操作系统的动态库中的原生http代理函数的流程如下:
[0047]步骤301,创建更新http代理函数,该更新http代理函数具有第一指针地址。
[0048]在这一步骤中,需要设置的HTTP代理将被添加更新http代理函数中。
[0049]步骤302,计算该原生http代理函数在该动态库中的偏移量,以获取该原生http代理函数在该动态库中的第二指针地址。
[0050]步骤303,将该第二指针地址指向该更新http代理函数,且将该第一指针地址指向该原生http代理函数。
[0051]另外,可以保存原生http代理函数的指针地址。。
[0052]图4示出替换Socket连接创建函数的流程。参考图4所示,使用一更新Socket连接创建函数更换1S操作系统的动态库中的原生Socket连接创建函数的流程如下:
[0053]步骤401,计算Socket中的原生Socket连接创建函数在该动态库中的偏移量,从而获取该原生Socket连接创建函数在该动态库中的第一指针地址;
[0054]在1S操作系统中,Socket连接创建函数为connect。在本实施例中将更新Socket连接创建函数命名为connect_wrapper。此更新Socket连接创建函数connect_wrapper已经实现设置代理服务器为目标地址并建立Socket连接的操作。
[0055]具体来说,计算Socket中的connect在动态库中的偏移量从而获取动态库connect的指针地址。
[0056]步骤402,将该第一指针地址指向该更新Socket连接创建函数,且将原本指向该更新Socket连接创建函数的第二指针地址指向该原生Socket连接创建函数。
[0057]具体地说,用更新Socket连接创建函数的connect_wrapper的函数指针与动态库中connect的函数指针相替换。
[0058]另外,也可以将原来的connect保存为connect_original。
[0059]值得一提的是,Socket还可包含连接关闭函数close。尽管close并没有包含代理设置的内容,但在替换连接创建函数connect的同时,也可替换连接关闭函数close。具体地说,计算Socket中的close在动态库中的偏移量从而获取动态库中close的指针地址,用close_wrapper的函数指针与动态库中close的函数指针替换。将原来的close保存为 close_original ο
[0060]在本发明的一实施例中,可以用1S操作系统中动态库的函数指针替换技术来实现Http代理函数和Socket连接创建函数、Socket连接关闭函数的替换。
[0061]图5示出替换视频播放相关函数的流程。参考图5所示,使用多个更新视频播放相关函数替换1S操作系统下多媒体系统库中的原生视频播放相关函数的步骤包括:
[0062]在步骤501,在多媒体系统库中创建分类;
[0063]1S操作系统的多媒体系统库包括由AVPlayer、AVPlayerItem组成的一个多媒体系统库和由MPMoviePlayerControlle组成的另一个系统库。
[0064]因此,创建AVPlayer、AVPlayerltem 以及 MPMoviePlayerControlle 白勺分类(Category)。
[0065]在步骤502,在所创建的各分类中创建更新视频播放相关函数。
[0066]具体地说,在AVPlayer 的分类中实现 initWithURLProxy、p 1 ayerffithURLProxy,在 AVPlayerltem 的分类中实现 initffithURLProxy> p 1 ayer11emffithURLProxy ;在MPMoviePlayerController 的分类中实现 initWithContentURLProxy。
[0067]这些函数initWithURLProxy、playerWithURLProxy、playerltemWithURLProxy 以及initWithContentURLProxy均为视频播放相关函数。这些函数主要是用于创建各自的实例,这些实例函数中都会实现对URL的判断,从而判断是否是远程的URL,如果是,则将目标地址设置代理服务器。
[0068]在步骤503,获取该多媒体系统库中各原生视频播放相关函数的指针。
[0069]具体地说,获取AVPlayer、AVPlayerltem 以及 MPMoviePlayerController 的实例函数的实现指针。
[0070]在步骤504,将各更新视频播放相关函数的指针与该多媒体系统库中相应的各原生视频播放相关函数的指针替换。
[0071 ] 在一实施例中,可以使用1S操作系统下运行时(runtime)技术的methodswizzle来进行selector实现指针的替换。
[0072]通过上述的各示例的网络服务管理操作,可以实现各种协议所需的函数替换。在一实施例中,网络服务管理操作可以由包含在应用程序内的代码执行。在另一实施例中,网络服务管理操作可以由可被应用程序调用的软件开发工具包(Software DevelopmentKit, SDK)。使用SDK的优势在于,应用程序的开发者可以不必完成网络服务管理操作的代码开发,而是在应用程序中加入对第三方的SDK的调用来实现代理设置。
[0073]图6是本发明一实施例中使用HTTP/HTTPS协议访问网络流程图。参考图6所示,应用程序使用HTTP/HTTPS协议访问网络的流程包括:
[0074]步骤601,应用程序向1S系统发出HTTP/HTTPS请求;
[0075]步骤602,1S系统访问系统Http代理函数, 获取全局代理地址;
[0076]步骤603,根据Http代理函数是否已经被替换,会进入不同的步骤,未被替换启动则进入步骤604-607 (系统原生流程),已被替换则进入608-610 (代理流程);
[0077]步骤604,进入系统原生的Http代理函数调用;
[0078]步骤605,判断移动智能终端是否配置全局代理地址;
[0079]步骤606,若移动智能终端配置了全局代理地址,则该请求发至全局代理地址。此代理地址对移动智能终端的所有应用程序生效;
[0080]在步骤607,若移动智能终端没有配置全局代理地址,则该请求直接发回源站;
[0081]步骤608,调用应用程序自实现的更新Http代理函数;
[0082]步骤609,更新Http代理函数把应用程序指定的代理地址返回给1S系统;
[0083]步骤610,1S系统将请求发送到应用程序指定的代理地址。
[0084]图7是实施例一实施例中使用TCP协议访问网络流程图。参考图7所示,应用程序使用基于TCP的应用层协议访问网络的流程如下:
[0085]步骤701,应用程序调用1S系统的Socket连接创建函数来创建连接;
[0086]步骤702,根据前述Socket连接创建函数是否已被替换,会进入不同的步骤,未被替换则进入703-704 (系统原生流程),已被替换则进入705-708 (代理流程);
[0087]步骤703,调用1S系统原生的Socket连接创建函数;
[0088]步骤704,应用程序与源站建立TCP连接,并进行传输;
[0089]步骤705,调用更新Socket连接创建函数;
[0090]步骤706,更新Socket连接创建函数与代理服务器建立连接,并将源站地址告知代理服务器,代理服务器将和源站建立连接;
[0091]步骤707,更新Socket连接创建函数把其与代理服务器建立的连接返回给应用程序。
[0092]步骤708,应用程序使用更新Socket连接创建函数与代理服务器建立的连接传输数据。
[0093]在一实施例中,步骤706可以通过HTTP协议规定的CONNECT方法来实现,也可以通过私有协议来实现。
[0094]图8是实施例一实施例中使用1S所提供的API播放网络视频的流程图。参考图8,应用程序使用多媒体系统库发起网络流量的流程由以下步骤组成:
[0095]步骤801,应用程序使用多媒体系统库访问远程视频;
[0096]步骤802,根据前述多媒体系统库的视频播放相关函数是否已被替换,会进入不同的步骤,未被替换则进入803 (系统原生流程),已被替换则进入804 (代理流程);
[0097]步骤803,直接使用1S系统的远程API ;
[0098]在步骤804,应用程序会调用多媒体系统库的分类中的各个对应视频播放相关函数实现;
[0099]在步骤805,各分类把原来的视频URL指向代理服务器,并将原有的视频URL以参数的形式传递到代理服务器。
[0100]在代理服务器方面,会对URL进行处理,根据传递过来的原有视频的URL去连接远程服务器,从而实现视频播放的代理设置。
[0101]在步骤805,实现访问远程视频。
[0102]本发明上述实施例的方法,相比现有方法具有以下特点:
[0103]1、支持协议种类多。支持HTTP/HTTPS和其他所有基于TCP的应用层协议。
[0104]2、响应快速。对于是否使用代理的开关,所使用代理服务器的地址等修改能立即生效。
[0105]3、不影响其他应用。确保只有需要使用服务的应用的流量被转发到代理服务器,智能移动终端上的其他应用不受影响。
[0106]4、兼容性强。使用方法简单透明,与应用自身实现关联度极低,能兼容绝大多数应用。
[0107]5、部署简单。当使用SDK来实现时,应用开发者只需要在开发工程中加入该SDK,并添加一行代码,能以最低的成本将代理功能部署到应用上。
[0108]虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
【主权项】
1.一种移动智能终端下转发应用程序内流量的方法,适用于1S操作系统,该方法包括以下步骤: 1)在该1S操作系统的一种应用程序启动时,根据该应用程序的配置决定是否需要启动代理,当需要启动代理时,在该应用程序上执行以下网络代理管理操作: 使用一更新http代理函数替换该1S操作系统的动态库中的原生http代理函数,该更新http代理函数包含代理服务器信息; 使用一更新Socket连接创建函数更换该1S操作系统的动态库中的原生Socket连接创建函数,该更新Socket连接创建函数的连接目标为该代理服务器; 2)当该应用程序发出http或https请求时,使用该更新http代理函数指向该代理服务器, 当该应用程序发出TCP/IP请求时,使用该更新Socket连接创建函数指向该代理服务器。2.如权利要求1所述的方法,其特征在于,该网络代理管理操作还包括: 使用多个更新视频播放相关函数替换该1S操作系统的多媒体系统库中的原生视频播放相关函数, 并且该应用程序访问远程视频时,使用该多个更新视频播放相关函数访问该代理服务器。3.如权利要求1所述的方法,其特征在于,在该步骤1)中,使用一更新http代理函数替换该1S操作系统的动态库中的原生http代理函数的步骤包括: 创建该更新http代理函数,该更新http代理函数具有第一指针地址; 计算该原生http代理函数在该动态库中的偏移量,以获取该原生http代理函数在该动态库中的第二指针地址;以及 将该第二指针地址指向该更新http代理函数,且将该第一指针地址指向该原生http代理函数。4.如权利要求1所述的方法,其特征在于,在该步骤1)中,使用一更新Socket连接创建函数更换该1S操作系统的动态库中的原生Socket连接创建函数的步骤包括: 计算Socket中的原生Socket连接创建函数在该动态库中的偏移量,从而获取该原生Socket连接创建函数在该动态库中的第一指针地址; 将该第一指针地址指向该更新Socket连接创建函数,且将原本指向该更新Socket连接创建函数的第二指针地址指向该原生Socket连接创建函数。5.如权利要求2所述的方法,其特征在于,在该步骤1)中,使用多个更新视频播放相关函数替换该1S操作系统下多媒体系统库中的原生视频播放相关函数的步骤包括: 在该多媒体系统库中创建分类; 在所创建的各分类中创建更新视频播放相关函数; 获取该多媒体系统库中各原生视频播放相关函数的指针;以及将各更新视频播放相关函数的指针与该多媒体系统库中相应的各原生视频播放相关函数的指针替换。6.如权利要求5所述的方法,其特征在于,使用运行时(runtime)技术进行该指针替换。7.如权利要求1或2所述的方法,其特征在于,该应用程序包含一软件开发工具包,且该应用程序调用该软件开发工具包开始进行网络代理管理操作。8.如权利要求7所述的方法,其特征在于,该应用程序包含调用该软件开发工具包的代码。
【专利摘要】本发明提出一种移动智能终端下转发应用程序内流量的方法,适用于iOS操作系统,该方法包括以下步骤:1)在该iOS操作系统的一种应用程序启动时,根据应用程序的配置决定是否需要启动代理,当需要启动代理时,在该应用程序上执行以下网络代理管理操作:使用一更新http代理函数替换该iOS操作系统的动态库中的原生http代理函数,该更新http代理函数包含代理服务器信息;使用一更新Socket连接创建函数更换该iOS操作系统的动态库中的原生Socket连接创建函数,该更新Socket连接创建函数的连接目标为该代理服务器;2)当该应用程序发出http或https请求时,使用该更新http代理函数指向该代理服务器,当该应用程序发出TCP/IP请求时,使用该更新Socket连接创建函数指向该代理服务器。
【IPC分类】H04L29/08
【公开号】CN105491081
【申请号】CN201410471822
【发明人】洪珂, 邹爽, 张明勋, 陈鸿, 杨淑有, 连涵生
【申请人】网宿科技股份有限公司
【公开日】2016年4月13日
【申请日】2014年9月16日
【公告号】WO2016041322A1

最新回复(0)