*

【コインチェック】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に公開されるので、問い合わせ等はメールでお願いします。

関連記事

仮想通貨取引所のチャット音声自動読み上げシステムを作る3 AJAXでリアルタイム表示させる

前回はbitFlyerのAPIから最新のチャットを取得するところまでやったので、 今回はそれをリア

記事を読む

【ビットコイン】板情報で自動売買

面倒臭がって今まで見て見ぬふりをしてきたのですが、 APIで板情報が取れるんですよね。 最近

記事を読む

ビットコインアービトラージ 信用取引ver 取引履歴

信用取引アービトラージは現物取引よりいろいろカオスです。 まず、基本的にbitFlyerの信用取引

記事を読む

取引所を通さずにビットコインを現金化する方法

仮想通貨は現金化が厄介だったりします。税制もコロコロ発表内容が変わっているので、 以前は出金したタ

記事を読む

【仮想通貨API】アクセス回数の上限を超えて…

各取引所APIでは一定時間の間にたたくことができる回数に上限があります。 ーーーーーーーーーー

記事を読む

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

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽物がいるらしいので偽物にご注意ください。
no image
ストップレベル=0はストップレベルがないことではない

MT4/MT5では予約注文を行う際にストップレベルというものがあります

no image
私の偽物、偽ブログにご注意ください

読者の方からご連絡いただいたのですが、私のブログの内容をそのままコピー

no image
サービス展開向けの仮想通貨自動売買システムを作るには

前置き ビットコイン、仮想通貨の自動売買を作る目的として、通常は個人

一回の演算で複数のリクエストを送る 仮想通貨の自動売買⑪

公開:2017/9/4 基本的にjson形式でAPIをたたく場合

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

公開:2017/9/4 これまではAPIで現物取引を扱ってきまし

→もっと見る

PAGE TOP ↑