*

【コインチェック】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コメント毎に投げるようにしています。

https://fxantenna.com/chatvoice_coincheck.html

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

Message

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

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

関連記事

仮想通貨取引所のチャット音声自動読み上げシステムを作る5 音声読み上げに特化する

これまでの内容で ・取引所のチャット取得 ・音声読み上げAPIで音声ファイルを取得 ・AJAX

記事を読む

仮想通貨取引所のチャット音声自動読み上げシステムを作る1 概要

取引所でデイトレードしているとチャットが目につくことがあります。 注視するほど内容は濃くはない

記事を読む

仮想通貨取引所のチャット音声自動読み上げシステムを作る2 APIでチャット内容を取得

bitFlyerのチャットメソッドは https://lightning.bitflyer.jp/

記事を読む

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

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

記事を読む

仮想通貨取引所のチャット音声自動読み上げシステムを作る4 音声読み上げAPIに投げる

最近は便利なものでWEB上でAPIを使って音声読み上げができるんですよね。 一昔前はソフトークとい

記事を読む

 

  • (↑広告です。このサイトの管理者の運営ではありません)



  • 横瀬兼元(ペンネーム)です。

    ご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    偽者(オリジナルある模倣者)がいるらしいのでご注意ください。
no image
(MT4EA)MACDと特殊ベッティング【EA検証班求ム】 

. . 超シンプルなMACDのEAです

MT4の1分足テストで起こる致命的な現象

1分足っていうのは他の時間枠といろいろ違う点があります。 まず、本題か

no image
【EA検証班募集】コツコツドカンとドローダウン(MT4) ~原理は単純を、構造は複雑を、人は最も人らしく~

EURGBP 2018.11.1~2019.4.30 D1 Sp

MT5のテスターではスプレッドは変更できないという事実

を知らない人が多くて、「このバックテストのスプレッドはいくつですか」と

FX業界の人種マップとその特徴 LP、ホワイトラベル、商材屋さん、開発代行…

FX業界にはさまざまな人種というか役割の人たちがいます。職人気質の開発

→もっと見る

PAGE TOP ↑