1

我正在查看 yozio 代码,它们似乎使用设备名称和 IP 地址作为指纹进行跟踪。这是否可靠,因为 ip 地址可以更改,并且设备名称在多个设备上可能相同,例如“Bob 的 iPhone”。我的假设错了吗?

这是 Yozio 的实现

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  NSString *appKey = @"e78ffa70-0975-0130-2e03-12314000ac7c";
  NSString *deviceName = [[[UIDevice currentDevice] name] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  NSString *url = [NSString stringWithFormat:@"http://yoz.io/e?app_key=%@&device_name=%@", appKey, deviceName];
  [NSURLConnection connectionWithRequest:[NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:nil];

  // Your app code here...
}
4

2 回答 2

1

他们在隐私文章中描述了这个过程

指标和分析:Yozio 收集有关通过 Yozio 服务创建的每个缩短 URL 的访问(例如点击)的信息。此信息包括但不限于:(i) 访问缩短 URL 的设备的 HTTP 标头中的 IP 地址和任何其他信息;(ii) 来自访问缩短 URL 的网络浏览器的信息,例如 cookie;(iii) 推荐网站或服务;(iv) 每次访问的时间和日期;(v) 有关在 AdMob 和 Facebook 等第三方服务上共享缩短 URL 的信息。Yozio 使用这些指标和分析来改进其网站和服务。

我认为应用到WURFL的用户代理数据的设备名称可能会产生非常接近唯一的标识符。

于 2012-11-05T13:19:44.657 回答
0

我会这样做:

+(NSString*) uniqueIdentifier {

    // Check if one exists
    if ([[NSUserDefaults standardUserDefaults] stringForKey:@"uniqueIdentifier"].length > 0)
        return [[NSUserDefaults standardUserDefaults] stringForKey:@"uniqueIdentifier"];

    // One doesn't exist, create one
    CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
    NSString* uuidStr = (__bridge NSString*) CFUUIDCreateString(kCFAllocatorDefault, uuid);
    CFRelease(uuid);
    [[NSUserDefaults standardUserDefaults] setValue:uuidStr forKey:@"uniqueIdentifier"];
    return uuidStr;

}
于 2012-11-05T13:20:24.460 回答