プログラマ気分

メモや自分が思ったことを書く

<< 【FuelPHP】バリデーションルール match_field について | main | FuelPHP勉強会東京Vol.1で発表してきました >>

スポンサーサイト

2014.08.06 Wednesday

一定期間更新がないため広告を表示しています

-|-|-|by スポンサードリンク

LINE と仲良くなってみる(失敗)

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

認証の流れ

1. セッションキーと RSA キーの取得

まずは下にアクセスして、セッションキーと RSA キーを取得します。
https://t.line.naver.jp/authct/v1/keys/line

▼取得した内容

session_key は、アカウントのメールアドレスとパスワードを組み合わせて使用します。rsa_key は、その組み合わせた物を暗号化する際に使用します。

2. 送信内容の作成

サーバ側に送信する内容は、先程取得したセッションキー(session_key)と、認証の為のメールアドレス、パスワードを組み合わせた文字列です。下の様に組み合わせます。

文字列の長さをアスキーコードにしてるのは、各文字列の長さを示す為かと思われます。

3. 送信内容の暗号化

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 と言う変数に代入した後、下の処理を行なってください。

これで暗号化処理は終わりです。

4. 暗号化した内容を送信する

送信先は https://t.line.naver.jp/rest/v1/login とし、POST で送信してください。

送信内容は以下のとおり

【注意点】
送信の際は、ユーザーエージェントに注意してください。
一部のユーザーエージェントは、サポート対象外とみなされて別ページへ飛ばされてしまいます。
リクエストヘッダに User-Agent: Chrome などを指定して送信してください。

うまくいけば、これでログインが成功します。

ログインまでの例(node.js)

一つのアカウントしか認証出来ないと思うので、変な実装ですけど

自動返信

node.js と cron が使えるので、dotCloud を活用しました。
なお、dotCloud での cron の設定等は省きます。

自動返信用スクリプト

結果

よし、うまくいった!と思ったのですが、繰り返しリクエストを投げていた所為か、LINE からブロックをされたみたいです。仕方ないですね。南無

リクエストの投げ過ぎには注意しましょう。

2012年4月7日追記
アカウント停止されたっぽいです。

JavaScript13:00comments(4)trackbacks(0)by ニノミヤ カズノリ

スポンサーサイト

2014.08.06 Wednesday

-|13:00-|-|by スポンサードリンク

コメント
こんにちは。
上記を試してみたのですが、うまくいきません。 node.js初心者ということもあるだと思いますが・・・ 今現時点で上記の方法は可能なのでしょうか?
返答するのが遅くなってすみません。
PC 版の LINE は終了し、それに伴って非公開 API も使えなくなりました。
現時点で上記の方法は使用できません。
LINE向けの(非公式な)ツールを作ってみたいなぁと思い、このページにたどり着きましたが、現時点では手段なしでしょうか?
> そにーあっぷるさん

う〜ん。恐らく現時点では無いかと。
API は公開されていないと思いますし。

アプリの通信を覗いてゴニョゴニョするとか…。
と言っても、やっちゃダメでしょうが
コメントする









トラックバック
calendar
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< April 2017 >>
sponsored links
selected entries
categories
archives
recent comment
recent trackback
links
profile
search this site.

others
mobile
qrcode