移動智能終端下轉發應用內流量的方法
【技術領域】
[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,根據應用程序的配置決定是否需要啟動代理。當需要啟動代理時,轉入步驟