*

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

関連記事

bitFlyerx信用取引x成行注文での取引所のバグ

前々から気になっていたのですが、 bitFlyerは信用取引時に変な挙動をすることが多々ありました

記事を読む

安全にライトコインのペーパーウォレットを作る

1年位前にビットコインのペーパーウォレットの作り方を紹介しましたが、最近ライトコインが上がってきたの

記事を読む

MT4でビットコイントレード()

暗号通貨取引が盛んですが、慣れ親しんだMT4でビットコイントレードをする方法はないのでしょうか。

記事を読む

ビットコインスキャルピングを自動売買でやってみた感想

FXがまだ下火でブームが訪れる前、急な値動きに対して順張りでスキャルピングすることで10万円を億にで

記事を読む

独自のビットコイン決済システムを作って手数料を0%にするやり方

オンラインショッピングなんかをやっているとビットコインで決済できた方が便利なことがあります。 pa

記事を読む

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

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽物がいるらしいので偽物にご注意ください。
no image
【初心者向け】VPSでWebサーバー構築 (さくらVPSxUbuntu16.04)

今回はサーバーの構築について扱ってみようと思います。VPSを使った一般

no image
2018年中盤~の仮想通貨(ビットコイン)アービトラージの相場について

ちょくちょく「最近、ビットコインのアービトラージどうですか」という質問

no image
最近の海外のEA開発の流行り:ロングとショートのパラメータ群を分ける

表題の通りですが、最近海外製のEAではロングとショートのパラメータを分

no image
シンプルなニューラルネットワークに基づいたEA(の記事)

MQLの記事って、ロシア語->英語->日本語の順に訳されるんで日本語の

no image
自動売買における仮想ストップロス、仮想テイクプロフィットの概念と意味

最近の自動売買系の論文やコードを読んでいると「仮想ストップロス」、「仮

→もっと見る

PAGE TOP ↑