写真集

Camera:Panasonic LUMIX DMC-LX3
Vine Linux と Ubuntu の設定方法など

Objective-C Safari の Cookies.binarycookies からCookie を取得する

2012-07-24 19:40:15 | MacOS

Mac OS X Safari Cookie を取得する。

クッキーがバイナリファイルになってしまったので、コマンドラインで取得できるようにしました。
Cookies.binarycookies から name,value,domain,pathを標準出力します。
awkなどを使って値が取得できます。
download safari-cookies

SafariCookies

SafariCookies.m

----------------------------------------------------------
// 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 コンパイル版

SafariCookiesArc.m

----------------------------------------------------------
//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



最新の画像もっと見る

コメントを投稿