一定期間更新がないため広告を表示しています
<< 【FuelPHP】バリデーションルール match_field について | main | FuelPHP勉強会東京Vol.1で発表してきました >>
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 ニノミヤ カズノリ
2014.08.06 Wednesday
-|13:00|-|-|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 | ||||||