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

标签: 数据 术→技巧 研发 Android APP | 发表时间:2022-01-07 18:57 | 作者:钱魏Way
出处:https://www.biaodianfu.com

针对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;
}

相关 [android ios 代理] 推荐:

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

- - 标点符
针对APP的黑产,我们提到部分用户会通过改变IP来绕过风控策略. 更改IP比较方便的方法是使用代理IP或VPN. 在检测APP安全性是需要对是否使用代码和VPN做判断. Android判断是否使用代理IP. Android判断是否使用VPN. iOS判断是否使用代理IP. Django实战:投票系统搭建.

MIUI评测:iOS身,Android心

- gaochao - 互联网的那点事
百度要推出自己的移动操作系统,江湖传闻叫“秋实”. 我们这里老调重弹,回过头温习一下同样基于Android的人气很高的MIUI. MIUI是一款很养眼的Android ROM,借鉴了大量的iOS审美元素. 如果你怀念或向往iOS的外观和感觉,MIUI绝对是不二之选. 以下是笔者在HTC Desire上运行MIUI的体验报告.

客觀評 Android、iOS、WP7

- chitsaou - Trawler Computer, FM207.NET
半年多前,我曾經評價過 Android 和 iOS 的市場發展,雖然發展至今,文章內容可見反映過去,但未來卻變得不可預料. 一年多前,Android 並未像現在這樣熱起來,所以我覺得,盲目支持 iPhone 的一群「果粉」,他們很愚蠢,但時至今日,支持 Android 陣營的用家似乎更盲目. 故此,希望能以客觀的角度分析一下各移動操作系統的利與弊,同時希望各位不要盲目喜歡自己的手機,要多加以分析,以下逐點評論.

iOS 7已占iOS系统60%,Android相形见绌

- - 互联网的一些事-关注互联网产品管理,交流产品设计、用户体验心得
  现在已经有几亿的iPhone、iPad和iPod touch设备被用户使用,而用户们最近的一个一致举动,莫过于安装iOS 7了. 在上个星期三,苹果发布了其最新的移动操作系统iOS 7,而截至9月23日,iOS 7的安装率已经达到了60%. 根据网络公司的数据显示,在9月19日这个数字已接近了40%,而到这周一中午,iOS 7的装机率已经达到了60%.

如何在iOS与Android间移植APP

- plidezus - 雪鸮的啁啾
除了像”I am rich”这种定点打击苹果烧包族的APP外,大多数应用都会尽量覆盖包含尽可能多的用户. 这就需要考虑在iOS和Android两种主流操作系统间移植的问题. 如果为各个平台量身定做界面,就能让用户利用以往的使用习惯快速学习. 但为多个平台设计各异的界面毕竟是需要工作量的. 如何才能在跨平台移植的时候只做那些最有必要的工作呢.

LibreOffice将发展Web、iOS和Android版本

- Heng Yang - cnBeta.COM
OpenOffice.org的分支项目LibreOffice的开发方The Document Foundation今天宣布将尝试在Web浏览器和iOS、Android移动设备上运行这一办公软件,预计这些产品将在2012年年底到2013年初正式发布.

Android 4.0和iOS 5功能对比

- 介潤 - cnBeta.COM
Google今早在香港举办Android 4.0发布会,在发布会中Google介绍了新一代操作系统的不少功能,并发布了首款搭载Adnroid 4.0的手机三星Galaxy Nexus. Android 4.0与其竞争对手iOS 5相比会如何呢,下面让我们来看看这两个系统的功能对比图表.

HTML5能否取代Android和iOS应用?

- - CSS库
大量新生移动设备的兴起,改变了互联网的未来. 在技术的发展上, HTML5会取代App应用吗. 在HTML5规范中,已经加入了相机、磁力罗盘、GPS信息的支持. 很多新兴浏览器也已经开始支持这些新特性. 能否用一个统一的HTML5来替代 android和 ios并行开发的双重成本呢. 以下译自Michael Mahemoff的一篇文章,详细分析了HTML5能否取代Android和iOS应用程序.

iOS 和 Android 之争可以终结了

- - 爱范儿 · Beats of Bits
Flurry 一个不起眼的调查,及一点儿出不出格的结论,可以终结 Android 与 iOS 两个平台之间的争论. 以这个不温不火的调查为分水岭,再争论 iOS 和 Android 孰优孰劣就显得无意义. Flurry 综合了四年的跟踪数据,制成以下三幅图表. 图 1 为两大平台的激活设备数比较,在乔布斯去世的 2011 年上半年,Android 设备激活数曾短暂地超过 iOS,内因是 iPhone 4S 让人等待过久,外因是 Galaxy S2 手机走俏.