一定期間更新がないため広告を表示しています
2014.08.06 Wednesday
一定期間更新がないため広告を表示しています
-||-|-|by スポンサードリンク
2012.03.21 Wednesday
2014年8月6日追記
コードに関しては著作権侵害とみなされて削除された様です。
---- 追記ここまで ----
意味不明なタイトルです。
先日、アップデートされて PC でも利用可能になった LINE ですが、タブレット版は Web アプリケーションと言う事もあって、非公式ながら API が存在しています。
タブレット版:https://t.line.naver.jp/
Skype や、MSN メッセンジャーと違って退席中や取り込み中の様なステータスがないので、メッセージが来て、ある一定時間未読状態だったら自動で「退席中です。」と返信する様にハックしてみます。
タブレット版の認証の仕組みから、自分は node.js を選択しました。
※選択理由は後ほど記述します。
node.js v0.4.10
使用モジュール:require v2.9.153
まずは下にアクセスして、セッションキーと RSA キーを取得します。
https://t.line.naver.jp/authct/v1/keys/line
▼取得した内容
session_key は、アカウントのメールアドレスとパスワードを組み合わせて使用します。rsa_key は、その組み合わせた物を暗号化する際に使用します。
サーバ側に送信する内容は、先程取得したセッションキー(session_key)と、認証の為のメールアドレス、パスワードを組み合わせた文字列です。下の様に組み合わせます。
文字列の長さをアスキーコードにしてるのは、各文字列の長さを示す為かと思われます。
LINE は、暗号化を JS のみで行なっていますが、独自の物ではなく、ライブラリとしてネット上で公開されている物を使用しています。
※自分が node.js を選択した理由は、このライブラリを利用する為です。
暗号化ライブラリ:RSA and ECC in JavaScript
node.js の場合、jsbn.js、rsa.js、rng.js、prng4.js を組み合わせて、モジュールとして使用します。
https://gist.github.com/2144164#file_rsakey.js
※コードが長いので、リンクのみ載せます。
var RSAKey = require('./rsakey.js'); などとして読み込んでください。
ライブラリを読み込んだ後は、RSAKey を使って暗号化します。先程取得した rsa_key をカンマ区切りで分割し、左から keyname, evalue, nvalue と言う変数に代入した後、下の処理を行なってください。
これで暗号化処理は終わりです。
送信先は https://t.line.naver.jp/rest/v1/login とし、POST で送信してください。
送信内容は以下のとおり
【注意点】
送信の際は、ユーザーエージェントに注意してください。
一部のユーザーエージェントは、サポート対象外とみなされて別ページへ飛ばされてしまいます。
リクエストヘッダに User-Agent: Chrome などを指定して送信してください。
うまくいけば、これでログインが成功します。
一つのアカウントしか認証出来ないと思うので、変な実装ですけど
node.js と cron が使えるので、dotCloud を活用しました。
なお、dotCloud での cron の設定等は省きます。
よし、うまくいった!と思ったのですが、繰り返しリクエストを投げていた所為か、LINE からブロックをされたみたいです。仕方ないですね。南無
リクエストの投げ過ぎには注意しましょう。
2012年4月7日追記
アカウント停止されたっぽいです。
JavaScript|13:00|comments(4)|trackbacks(0)|by ニノミヤ カズノリ
2011.07.28 Thursday
海外で CSSFrag という拡張機能が少し話題となっていたので、(使う人が居るかとか別にして)jQuery 用のプラグインとして作ってみました。
CSSFrag Safari Extension // ShaunInman.com
ページ内リンクを行う際に URL にハッシュを付けて要素の ID(又は name 属性の値)を指定すると、その位置まで移動します。この指定を CSS セレクタでも可能にするのが CSSFrag です。
http://example.com/index.html#hoge
http://example.com/index.html#css(div:nth-child(2))
同様の機能を jQuery で実現しようとしたのが jQuery.cssFrag.js です。使用できるセレクタは CSSFrag とは異なり、jQuery のセレクタが使用できます。
※使用するには、クロスブラウザでの hashchange イベントを可能にする jquery.ba-hashchange.js の読み込みが必要となります。
ダウンロード:こちらから最新バージョンをダウンロードしてください。
検証ブラウザ:IE6/7/8/9, Safari 5.1, Google Chrome 12.0.742.122, Firefox 3.6.19, Opera 11.50
JavaScript|11:32|comments(0)|trackbacks(0)|by ニノミヤ カズノリ
2011.06.30 Thursday
Chrome でソートを行っていた時に気付いたが、Chrome で使われている V8 エンジンは内部でクイックソートを使っているらしく安定していないです。
【参考】
javascript - Sorting an array of objects in Chrome - Stack Overflow
クイックソートは安定ソートではない為、例えば下記のコードを実行すると他とは異なった結果が返ってきます。安定させる為には return 0 を返さないように工夫が必要です。
V8 エンジンが使われている事もあり、node.js も安定していません。AS2 と AS3 の違いは面白いですね。
JavaScript|17:16|comments(0)|trackbacks(0)|by ニノミヤ カズノリ
2011.06.05 Sunday
ここではあまり書いていなかったのですが、だいぶ前に jsdo.it の方で 0.0.5 候補版を公開しています。
jquery.belatedPNG 0.0.4a test - jsdo.it - Share JavaScript, HTML5 and CSS
(jQuery 1.6+ のバグを対処するために公開した 0.0.4 よりも前に載せていたので、バージョンがおかしくなっていますが、位置づけ的には 0.0.5a となります。)
まだ見ていない・試していない方はお試しください。
0.0.5a の正式公開は未定です。また、実は既に 0.0.5b もあるのですが、公開自体が未定になっています。
これは対象の要素や、その要素の offsetParent などに対して zoom = 1 が指定される為です。例えば IE6 でページ全体を印刷したい場合などで body に zoom が指定されている場合に問題が出る可能性があります。zoom が指定されていれば、そのままにする処理が必要となりますが、残念ながら現行のバージョンではその処理が入っていません。
IE8 で CSS expressions がサポート外になった為です。詳しく説明すると、DD_belatedPNG.fix は、動的に style 要素を追加し、指定されたセレクタの behaivor プロパティに対して expression を使って fixPng が実行されるようにしています。要素を読み込む前に指定出来る点や、一括で指定出来る点を考えると、速度的にもこちらを実装したいところですが、IE6/7/8 を対象としている jQuery.belatedPNG では仕方なく外しています。
DD_belatedPNG / jQuery.belatedPNG で pngFix された要素は親要素の透過度に影響されません。そもそも VML が影響を受けないのかよく分かりませんが、pngFix されている要素に対しては、親要素と同時に透過させるのが吉かもしれません。
【追記:11/07/06】どうやら親要素と同時に透過させてもうまくいかないようです。やはり pngFix されている要素に透過処理を施す必要がありそうです。
実は一番頭を悩ませている問題です。もし解決策があれば教えて頂きたいです。fixPng による pngFix は、VML の fill ノードを動的に作成して PNG を貼り付けます。fill ノードは type が tile となっており、これがリピートを実現させている(※くわしくはこちら)理由ですが、XP と IE6/7/8 では表示に対して問題があるらしく、zoom であったり、ブラウザの機能で拡大縮小されるとリピートしている画像に 1px 程度の空きが出来ます。なお、Win7 で確認したところではこの問題は発生しませんでした。
通常、印刷時には意図的に非表示となるのですが、調整することで IE6/7 に関してはある程度それらしく表示出来ます。問題は IE8 で、VML 自体が無くなったように表示されてしまいます。現状対処方法は見つかっていません。
悲しい限りです
JavaScript|17:56|comments(1)|trackbacks(0)|by ニノミヤ カズノリ
2011.05.14 Saturday
以下、jQuery 1.6.1(11/05/14現在)時点でのお話です。
IE8 + jQuery 1.6(+) において、jQuery.support.style の評価が変わっているので注意してください。
jQuery.support.style とは、getAttribute("style") で要素に記述された style 属性値を取得できるか評価する為に使用します。
IE8 は getAttribute("style") で style 属性値が取得できるので true にならなければなりませんが、何故か 1.6 からは false と評価される様になっています。
1.5.2 と 1.6 とで評価している部分を見比べてみます。
これらは div 要素内に HTML を直接書き込み、そこから getAttribute("style") で取得出来ているか判断している訳ですが、見て分かるとおり、若干処理が変更されています。
1.5.2 は color プロパティの値(red)を評価するのに対し、1.6 以上は top プロパティ名を評価しています。
ここで問題なのは、IE8 以下だと CSS のプロパティ名を大文字に変換してしまう点です。
IE8 で a.getAttribute("style") を使って取得できる値は "FLOAT: left; TOP: 1px; opacity: .55" であり、小文字のみを見ている 1.6 の評価方法では false となってしまいます。
もしもこの問題を修正するなら、i フラグを付けて大文字小文字どちらでも評価する必要があります。
今回の問題で、もしも IE のバージョン分岐などを jQuery.support.style を使って実装している方は要注意してください。
下記のコードは 1.6 では正常に動作しません。
JavaScript|14:40|comments(0)|trackbacks(0)|by ニノミヤ カズノリ
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | ||||||