*

【コインチェック】APIが存在しないはずのチャットの自動読み上げシステムを作る

以前、bitFlyerのチャットの自動読み上げシステムを作りましたが、個人的にはコインチェックのチャットの方がアルトコインの情報があるので、どうせ流し聞きするならコインチェックが良いと思っていました。

しかし、bitFlyerにはチャットのAPIがありますが、コインチェックにはありません。

bandicam 2017-12-17 12-46-27-036

というわけで、コインチェックがどういう仕組みでチャットを表示させているのか解析し、あわよくば自動読み上げをしようと思います。(結論から言うとできました。)

まずは、チャット画面に行って、ソースコードを確認します。
bandicam 2017-12-17 12-48-32-435

bandicam 2017-12-17 12-49-35-059

どうやらチャットそのものはJavascriptで表示させている訳ではなく、PHP等のサーバーサイド系の言語で処理し、それをAJAXか何かで非同期処理して表示させているようです。

この時点でPHPのスクレイピングを使えばテキストの抽出は可能です。(php dom perser を使えば特定の要素だけ抽出できます)

が、一つ問題があります。それは、ログイン状態でなければこのように表示させられないということです。つまり、セッションorクッキーが切れれば、チャット音声が途切れるため、再び手動でログインしてやる必要があります。

以前の記事でUWSCによる自動ログインを扱ったので、それをそのまま流用しても良いのですが、今回はちょっとこだわってみます。

話は飛びますが、
スマートフォンアプリではWEBアプリと通信する際にAPIを使う仕様になっています。コインチェックでも例外ではなく、アプリでチャットを表示できるということはAPIを通して通信を行っています。

そのAPIがPrivateメソッドであるとは考えにくく(経験的に)、「実はアクセスするだけで取得できるんじゃね?」というのが私の推測でした。

しかし、APIドキュメントにはその記述がないので、てきとうに探ってみます。もし、チャットAPIがあるのだとすれば、そのURLはおそらく
https://coincheck.com/api/chat
https://coincheck.com/api/chats
https://coincheck.com/api/exchange/chat
https://coincheck.com/api/exchange/chats
https://coincheck.com/api/chat_list
https://coincheck.com/chats

のような形式になっていると予想されます。そこでいろいろ試してみると、https://coincheck.com/chatsがヒットしました。

bandicam 2017-12-17 12-57-16-980

jsonを返すAPIではないので、正確にはヒットではありませんが、見慣れぬページです。このページは非ログイン状態でもリアルタイムでチャットが更新されています。

ついでにこいつのソースコードを見ると、
bandicam 2017-12-17 12-58-59-578

どうやらここがチャット部分の本体で<p class=”content”…の部分がコメントの中身だということがわかります。ただこちらは、ログイン後に表示されるチャットとは異なり、javascriptでリアルタイム表示させている記述です。

おそらく、javascriptでリアルタイム表記をして本ページに埋め込むつもりが、本ページにある他のリアルタイム表示とのバッティングしたか何かでボツになったんでしょうね。(エンジニアさんせっかく作ったのにかわいそう…)

そのため、このp要素のclass=”content”をスクレイピングしてもテキストを抽出することができません。なので、javascriptファイルが格納されている.jsファイルの中を見ます。(ドメインがcoincheck.comで.jsを呼び出しているlinkを検索して探します。)

bandicam 2017-12-17 13-01-55-647

すると、難読化処理がされたjavasciptファイルがでてきます。量からしてコインチェックのjavascript処理のほぼ全部がここに集約されているものだと思います。これをすべて読み解くのは困難ですが「chat」で検索すると、

bandicam 2017-12-17 13-03-41-666

ここら辺だけヒットするので、ここだけ読めばOKだとわかります。

ちなみにここまでは誰でもどこからでも閲覧できる情報です。しかし、コインチェックも何かしらの理由があってチャットAPIを公開していないのかもしれないので、ちょっとここの詳しい内容は控えます。

まぁ、なんやかんやあって、
チャットのjson形式の取り出しに成功しました。(もちろん、クラッキング等は一切していないですよ)
bandicam 2017-12-17 13-06-25-540

どうやらbitFlyerと違い、返すチャットの数は固定のようです。読み込みに時間がかからないので、良いですね。合理的です。逆に言うと古いチャットは取り出せないということですね。(そんな必要ありませんが)

あとはbitFlyerのときと同じようにコーディングするだけです。

どうやらチャットの数は50で固定のようなので、0からスタートする配列に合わせるために49までfor分を回します。あとは音声APIに投げればOKです。(音声APIについてはbitFlyerのときの記事を参照)

コインチェックのチャットはbitFlyerのチャットよりも一文が長い傾向にあるので、10コメントを1つの文字列にして音声APIに投げるとエラーになりやすいです。

そのため、5コメント毎に投げるようにしています。

http://fxantenna.com/chatvoice_coincheck.html

(ZAIFのチャット? 何それおいしいの?)

Message

メールアドレスが公開されることはありません。

このコメントはWEBに公開されるので、問い合わせ等はメールでお願いします。

関連記事

取引所を介さずにアルトコインを交換する方法

取引所内でアルトコインのやり取りをすれば別に問題ないと思うのですが、中には大人の事情で取引所を使いた

記事を読む

Zaifに自動ログインする【UWSC】

Zaifのログインも基本的には一般的なログインと同じです。 ただし、IPアドレスか何か不明です

記事を読む

BinanceとPoloniexの自動アービトラージシステムを作る3

Binanceのオーダーができるようになったので、一応PoloniexのAPIによるオーダーもおさら

記事を読む

コインチェックAPIで信用取引 仮想通貨の自動売買⑩

公開:2017/9/4 これまではAPIで現物取引を扱ってきましたが、今回は信用取引、レバレッ

記事を読む

POLONIEXのAPIでビットコインのヒストリデータを取得 仮想通貨の自動売買⑨

公開:2017/9/4 国内の取引所でもAPIを発行している取引所はいくつかありますが、 ビ

記事を読む

 
  • ブログ管理人の横瀬兼元(ペンネーム)です。

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽者がいるらしいのでご注意ください。
【MT4】H4, D1用EA(プレゼント企画)

EURUSD 2018/1/1~2018/12/31 D1

質問回答コラム

Q. 管理人さん自身はEAで運用しているのですか A.  して

【MT5】MACD, ストキャスティクス, モメンタムEA(配布)

GBPUSD 2018/1/1~2018/12/31 H2

【MT5】 3通貨相関アービトラージEA(無料プレゼント)

EUR, GBP, USD の3通貨の相関を利用したさや取りトレード

no image
仮想通貨対応マーチンゲールEA(無料配布)

USDJPY 2018/1/1~2018/12/31 Spread:

→もっと見る

PAGE TOP ↑