কোনও ইউআইবিউবভিউয়ের কুকিজ কোথায় সংরক্ষিত আছে?


96

আমি কুকিজ সহ একটি আইফোন অ্যাপ তৈরি করছি। সাফারি সেটিংসে কুকিজ মোছা তাদের মুছবে না। এগুলি কোথায় রাখা হয়? এগুলি কি অন্য ইউআইবিউব ভিউ থেকে পড়া সম্ভব?

ধন্যবাদ!

উত্তর:


171

পাত্রে আপনার অ্যাপ্লিকেশনটির নিজস্ব "কুকি জার" [NSHTTPCookieStorage sharedHTTPCookieStorage]রয়েছে।

আপনার অ্যাপ্লিকেশনটির কুকি জারে কুকিগুলি কীভাবে আপনি একবারে পেতে পারেন তা এখানে:

NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
   NSLog(@"%@", cookie);
}

ফিল্টারিং এবং ম্যানিপুলেশন জন্য বেশ কয়েকটি পদ্ধতি উপলব্ধ। কটাক্ষপাত NSHTTPCookieStorage কুকিজ ব্যবহার করার জন্য ডকুমেন্টেশন, এবং NSHTTPCookie পৃথক কুকি বৈশিষ্ট্য ব্যবহার করার জন্য ডকুমেন্টেশন।


4
ইহা আকর্ষণীয়. আমি জানতাম না যে এ জাতীয় কোন অস্তিত্ব আছে। এটা ইশারা জন্য ধন্যবাদ।
ব্র্যাড লারসন

ধন্যবাদ, অ্যালেক্স! ঠিক আমি খুঁজছেন ছিল কি.
বিন্দু

দারুণ! আমি কীভাবে একটি নির্দিষ্ট সার্ভারের জন্য একটি নির্দিষ্ট কুকি লগ করব?
লিওর ফ্রেঙ্কেল

একটি নির্দিষ্ট সার্ভারের জন্য কুকিজ পেতে, cookiesForURLপদ্ধতিটি ব্যবহার করুনcookies
gyimi

4
এই পদ্ধতিটি সত্যিই কাজ করে না কারণ আপনি অ্যাপটি ত্যাগ না করা পর্যন্ত এটি কেবল কুকিজ মুছে ফেলবে। আপনি যখন এটি পুনরায় খুলবেন তখন কুকিগুলি এখনও সেখানে থাকবে।
ফিলিপ ব্রহ্ম

21

পয়েন্টার অ্যালেক্সের জন্য ধন্যবাদ! এটি যুক্ত করতে আমি আমার "কুকি ডাম্পার" এ নেমে যা আমি অ্যালেক্সের উদাহরণ ব্যবহার করে তৈরি করেছি। সম্ভবত এটি অন্য কাউকে সহায়তা করবে।

- (void) dumpCookies:(NSString *)msgOrNil {
NSMutableString *cookieDescs    = [[[NSMutableString alloc] init] autorelease];
NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
    [cookieDescs appendString:[self cookieDescription:cookie]];
}
NSLog(@"------ [Cookie Dump: %@] ---------\n%@", msgOrNil, cookieDescs);
NSLog(@"----------------------------------");
}

- (NSString *) cookieDescription:(NSHTTPCookie *)cookie {

NSMutableString *cDesc      = [[[NSMutableString alloc] init] autorelease];
[cDesc appendString:@"[NSHTTPCookie]\n"];
[cDesc appendFormat:@"  name            = %@\n",            [[cookie name] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[cDesc appendFormat:@"  value           = %@\n",            [[cookie value] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[cDesc appendFormat:@"  domain          = %@\n",            [cookie domain]];
[cDesc appendFormat:@"  path            = %@\n",            [cookie path]];
[cDesc appendFormat:@"  expiresDate     = %@\n",            [cookie expiresDate]];
[cDesc appendFormat:@"  sessionOnly     = %d\n",            [cookie isSessionOnly]];
[cDesc appendFormat:@"  secure          = %d\n",            [cookie isSecure]];
[cDesc appendFormat:@"  comment         = %@\n",            [cookie comment]];
[cDesc appendFormat:@"  commentURL      = %@\n",            [cookie commentURL]];
[cDesc appendFormat:@"  version         = %d\n",            [cookie version]];

//  [cDesc appendFormat:@"  portList        = %@\n",            [cookie portList]];
//  [cDesc appendFormat:@"  properties      = %@\n",            [cookie properties]];

return cDesc;
}

আপনি এটিকে প্রসারিত করার জন্য একটি বিভাগ হিসাবেও যুক্ত করতে পারেন NSHTTPCookieStorage: macdevelopertips.com/objective-c/objective-c-categories.html
অ্যালেক্স রেনল্ডস

কীভাবে আলাদা পদ্ধতিতে কোনও কুকি প্রদর্শন করবেন তার যুক্তি বের করার জন্য +1! এমনকি এই ধরনের একটি ছোট স্নিপেট জন্য, এটি সাহায্য করে !!
গুভেন

ধন্যবাদ! একটি টাইপো রয়েছে: [কুকি সংস্করণ] হ'ল এনএসইউইন্টেজার, সুতরাং% d ব্যবহার করা উচিত।
পাভেল আলেক্সিভ

3

এটিকে একটি বিভাগে রাখার বিষয়ে অ্যালেক্সের দুর্দান্ত ধারণা ছিল। এখানে আমি যা ব্যবহার করে শেষ করেছি:

এনএসএইচটিটিপি কুকি স্টোরেজ + তথ্য

#import <Foundation/Foundation.h>

@interface NSHTTPCookieStorage (Info)

+ (NSDictionary*) describeCookies;
+ (NSDictionary *) describeCookie:(NSHTTPCookie *)cookie;

@end

NSHTTPCookieStorage.m

@implementation NSHTTPCookieStorage (Info)

+ (NSDictionary*) describeCookies {
    NSMutableDictionary *descriptions = [NSMutableDictionary new];

    [[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] enumerateObjectsUsingBlock:^(NSHTTPCookie* obj, NSUInteger idx, BOOL *stop) {
        [descriptions setObject:[[self class] describeCookie:obj] forKey:[[obj name] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    }];

    NSLog(@"Cookies:\n\n%@", descriptions);
    return descriptions;
}

+ (NSDictionary *) describeCookie:(NSHTTPCookie *)cookie {
    return @{@"value" : [[cookie value] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
         @"domain" : [cookie domain] ? [cookie domain]  : @"n/a",
         @"path" : [cookie path] ? [cookie path] : @"n/a",
         @"expiresDate" : [cookie expiresDate] ? [cookie expiresDate] : @"n/a",
         @"sessionOnly" : [cookie isSessionOnly] ? @1 : @0,
         @"secure" : [cookie isSecure] ? @1 : @0,
         @"comment" : [cookie comment] ? [cookie comment] : @"n/a",
         @"commentURL" : [cookie commentURL] ? [cookie commentURL] : @"n/a",
         @"version" : @([cookie version]) };

}

@end

আউটপুটটিকে আরও কিছুটা "JSON-y" করে তোলে ...


1

মধ্যে sandbox:Library->Cookies->Cookies.binarycookies কিন্তু আপনি খুলতে পারবে না .binarycookieসরাসরি গুলি, আপনি একটি স্ক্রিপ্ট চালাতে পারেন:

  1. পাইথন ডাউনলোড এবং ইনস্টল করুন

  2. বাইনারিকুকিরিডার.পি ডাউনলোড করুন

  3. টার্মিনালে "পাইথন বাইনারিকুকিরিডার.পি" চালান

এখানে চিত্র বর্ণনা লিখুন

যেমন আপনি দেখতে পাচ্ছেন, আউটপুট লগে বিশদ কুকিগুলির বিবরণ রয়েছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.