Mac OS X Safari Cookie を取得する。
クッキーがバイナリファイルになってしまったので、コマンドラインで取得できるようにしました。
Cookies.binarycookies から name,value,domain,pathを標準出力します。
awkなどを使って値が取得できます。
download safari-cookies
SafariCookies
----------------------------------------------------------
// cc -framework Foundation -o safari-cookies SafariCookies.m
#import <Foundation/Foundation.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *c in [cookieStorage cookies])
{
NSString *cookie = [NSString stringWithFormat:@"%s %s %s %s", c.name.UTF8String, c.value.UTF8String, c.domain.UTF8String, c.path.UTF8String];
puts(cookie.UTF8String);
}
[pool release];
return 0;
}
----------------------------------------------------------
$ cc -framework Foundation -o safari-cookies SafariCookies.m
SafariCookies llvm ARC コンパイル版
----------------------------------------------------------
//clang -fobjc-arc -framework Foundation -o safari-cookies SafariCookiesArc.m
#import <Foundation/Foundation.h>
int main(int argc, char *argv[])
{
@autoreleasepool {
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *c in [cookieStorage cookies])
{
NSString *cookie = [NSString stringWithFormat:@"%s %s %s %s", c.name.UTF8String, c.value.UTF8String, c.domain.UTF8String, c.path.UTF8String];
puts(cookie.UTF8String);
}
}
return 0;
}
----------------------------------------------------------
$ clang -fobjc-arc -framework Foundation -o safari-cookies SafariCookiesArc.m
awk での取得サンプル
safari-cookies.sh
----------------------------------------------------------
#!/bin/sh
CookieName="SSID"
CookieValue=".+"
Domain=".google.co.jp"
Path="\/"
safari-cookies | awk "/$CookieName $CookieValue $Domain $Path/" | awk '{ print $2 }'
----------------------------------------------------------
$ sh safari-cookies.sh
Ubuntu で Objective-C のコンパイル
$ sudo apt-get install gnustep-devel gnustep-make
Makefile
----------------------------------------------------------
CC = gcc
CFLAGS = $(shell gnustep-config --objc-flags)
INCLUDES =
LIBS = -lgnustep-base
OBJS = SafariCookies.o
TARGET = safari-cookies
$(TARGET): $(OBJS)
$(CC) -o $@ $(OBJS) $(LIBS)
%.o: %.m
$(CC) $(CFLAGS) -c $*.m -o $*.o
clean:
rm -f $(TARGET) $(OBJS)
----------------------------------------------------------
$ make