美文网首页
安卓iOS代理检测

安卓iOS代理检测

作者: super_2e20 | 来源:发表于2022-05-07 11:17 被阅读0次

Android/iOS判断是否使用代理或VPN

针对APP的黑产,我们提到部分用户会通过改变IP来绕过风控策略。更改IP比较方便的方法是使用代理IP或VPN。

在检测APP安全性是需要对是否使用代码和VPN做判断。以下为整理的一些代码供参考。

Android判断是否使用代理IP

 private boolean isWifiProxy(Context context)  {

final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT  >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;

String proxyAddress;

int proxyPort;

if  (IS_ICS_OR_LATER)  {

proxyAddress = System.getProperty("http.proxyHost");

String portStr = System.getProperty("http.proxyPort");

proxyPort = Integer.parseInt((portStr != null ? portStr :  "-1"));

}  else  {

proxyAddress = android.net.Proxy.getHost(context);

proxyPort = android.net.Proxy.getPort(context);

}

return  (!TextUtils.isEmpty(proxyAddress))  &&  (proxyPort != -1);

}

## Android判断是否使用VPN

boolean checkVPN(ConnectivityManager connMgr)  {

//don't know why always returns null:

NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_VPN);

boolean isVpnConn = networkInfo == null ? false  : networkInfo.isConnected();

return isVpnConn;

}

## iOS判断是否使用代理IP

#import "CETCProxyStatus.h"

@implementation CETCProxyStatus

+ (BOOL)getProxyStatus {

NSDictionary *proxySettings = NSMakeCollectable([(NSDictionary *)CFNetworkCopySystemProxySettings() autorelease]);

NSArray *proxies = NSMakeCollectable([(NSArray *)CFNetworkCopyProxiesForURL((CFURLRef)[NSURL URLWithString:@"http://www.baidu.com"], (CFDictionaryRef)proxySettings) autorelease]);

NSDictionary *settings = [proxies objectAtIndex:0];

NSLog(@"host=%@", [settings objectForKey:(NSString *)kCFProxyHostNameKey]);

NSLog(@"port=%@", [settings objectForKey:(NSString *)kCFProxyPortNumberKey]);

NSLog(@"type=%@", [settings objectForKey:(NSString *)kCFProxyTypeKey]);

if  ([[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:@"kCFProxyTypeNone"])  {

//没有设置代理

return NO;

}  else  {

//设置代理了

return YES;

}

}
}

iOS判断是否使用VPN

- (BOOL)isVPNOn

{

BOOL flag = NO;

NSString *version = [UIDevice currentDevice].systemVersion;

// need two ways to judge this.

if  (version.doubleValue  >= 9.0)

{

NSDictionary *dict = CFBridgingRelease(CFNetworkCopySystemProxySettings());

NSArray *keys = [dict[@"__SCOPED__"] allKeys];

for  (NSString *key in keys)  {

if  ([key rangeOfString:@"tap"].location != NSNotFound ||

[key rangeOfString:@"tun"].location != NSNotFound ||

[key rangeOfString:@"ipsec"].location != NSNotFound ||

[key rangeOfString:@"ppp"].location != NSNotFound){

flag = YES;

break;

}

}

}

else

{

struct ifaddrs *interfaces = NULL;

struct ifaddrs *temp_addr = NULL;

int success = 0;

// retrieve the current interfaces - returns 0 on success

success = getifaddrs(&interfaces);

if  (success == 0)

{

// Loop through linked list of interfaces

temp_addr = interfaces;

while  (temp_addr != NULL)

{

NSString *string = [NSString stringWithFormat:@"%s" , temp_addr->ifa_name];

if  ([string rangeOfString:@"tap"].location != NSNotFound ||

[string rangeOfString:@"tun"].location != NSNotFound ||

[string rangeOfString:@"ipsec"].location != NSNotFound ||

[string rangeOfString:@"ppp"].location != NSNotFound)

{

flag = YES;

break;

}

temp_addr = temp_addr->ifa_next;

}

}

// Free memory

freeifaddrs(interfaces);


return flag;

}

相关文章

网友评论

      本文标题:安卓iOS代理检测

      本文链接:https://www.haomeiwen.com/subject/henturtx.html