Android開發過程中需要網絡訪問獲取數據,一般都是通過HTTP/HTTPS請求服務器獲取數據;
但是HTTP/HTTPS請求很容易被別人使用一些像Fiddler等抓包工具抓取信息,對數據進行分析
很容易得到請求方式、請求接口地址、請求參數、消息頭部信息、請求類型等信息,以及請求響應
返回的數據信息;
獲取到這些信息後,一方面可以分析數據得到想要的數據,如獲取視頻網站中的視頻路徑等,
另一方面可以模擬各種請求不斷髮送到服務器,這樣可以不停的從服務器獲取數據,還可能造成服
務器負載過大;
有童鞋可能說我可以對數據進行加密,這樣即使抓取到數據也無法識別;
但是有兩個問題:
1. 加密的數據就真的不能解密了嗎?
2. 服務器接口暴露也是很嚴重的;
實現防止不合規的代理抓包的思路:
1. 獲取代理地址和端口
2. 判斷代理地址和端口是否爲空
3. 判斷代理地址和端口是否是App需要的代理地址和端口;
代碼如下:
//App中使用到的代理
String userProxyAddress = "112.152.23.6";
int userPort = 8597;
/**
*
* @return true:有代理而且不是客戶自己設置的代理 ,false:無代理或客戶自己設置的代理
*/
private boolean isNotWifiProxy() {
final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
String proxyAddress;
int proxyPort;
if (IS_ICS_