【bitFlyer】非公式APIを使って注文を出してみる

初めに

こんにちは、ぷらする(@plusl_BTC)です。

最近は仮想通貨界隈でBot作成が流行っていますね。AKAGAMIさんを始めとして、様々な方がnoteでノウハウを公開し始めています。

自分はここまでの大ボリュームの内容をかけないので、今回はTips的な感じでbitFlyerの非公式APIを用いた発注(所謂web発注)の方法を紹介してみようと思います。


注意事項

・今回紹介する方法は将来bitFlyerの仕様変更によって使用できなくなる場合があります。

・今回紹介する方法は簡単のため2段階認証をしてない場合のみ動作する方法になります。2段階認証を外して生じた損失等は一切の責任を負いません。


非公式APIの解析

まず、非公式APIを使うためには、その仕様の解析をしなければなりません。

今回はChromeのデベロッパーコンソールを用いて解析を行います。

デベロッパーコンソールのNetworkタブを開いた状態で、指値注文を出してみましょう。sendorderというのが流れてくるはずです。

この情報から、以下のURLにPOSTを行えば良いことが分かります。

https://lightning.bitflyer.jp/api/trade/sendorder


次に、Request Headerを見てみましょう。

これを見てみると、header情報はほとんど固定であることが分かります。しかしながら、黒塗りにされているcookie部分はユーザー毎、セッション毎に異なります。したがって、Botに組み込む際も、これらの情報はBotが起動する度に取得できるようにしなければなりません。


最後に、Request Payloadを見てみましょう。

ここがPOSTの本体になりますね。注文の枚数など、公式APIを使う際に用いるBodyと同じようなものが多いです。


これで必要な情報は揃いました。後はこれらの情報を自動で取得し、POSTするように設計すれば、非公式APIを使えるようになります。


Selenium + ChromeDriver+ requestsを用いた実装例(追記:PhantomJSからChromeDriverに変更)

それでは実際にPythonを用いて、Selenium、ChromeDriver、requestsを使いながら実装を行っていきましょう。

流れとしては、

Selenium + ChromeDriverを用いてログイン、Cookie情報を取得

requestsでそのcookie情報を用いてPOST

というふうになります。


Selenium+ChromeDriverの導入

そもそも、Selenium、ChromeDriverとはなにか?という方がいると思います。

Seleniumとは、ブラウザを自動で動かすことができるようになるツールです。

ChromeDriverとは、GUIがなくても動くことができるブラウザです。

今回はSeleniumを使ってChromeDriverを動かし、Cookieを取得します。


それではSeleniumを導入しましょう。

pip install selenium

続いて、ChromeDriverをダウンロードします。以下のURLからご自身の環境に会ったものをダウンロードしてください。ダウンロードしたファイルは.pyと同じ階層に置いてください。

http://chromedriver.chromium.org/downloads


requestsの導入

requestsはpythonでRESTを扱いやすくしたラッパーになります。

以下のコマンドで導入出来ます。

pip install requests


自動ログイン、cookie取得のコーディング

ここから先のソースコードは有料のみになります。

実際に注文ができるまでのソースコードの解説を行っていますので、興味がある方は是非御覧ください。


この続きをみるには

この続き:6,284文字/画像5枚

【bitFlyer】非公式APIを使って注文を出してみる

ぷらする

500円

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

78

ぷらする

仮想通貨

2つのマガジンに含まれています

コメント4件

ノートを購入させて頂きました。
Postでリクエストを送るところでステータスコード501が返り、再度ログインを求められるレスポンスが返ってきます。
ログインまでは問題なくできており、Postするところでエラーが返るのですが何か変更があったか分かりますでしょうか。
もしかりたらログインがしっかりと出来ていないかもしれません。
他の方から連絡をもらったのですが、普段bFにログインする環境とは違う環境で動かすと、メールによる2段階認証が必要な場合があるみたいです。
もし、メールアドレスに2段階認証のメールが届いていた場合は、先程追記したコードをログインボタンを押す処理の後に入れてみてください。
ご回答ありがとうございました。
おっしゃる通り、別環境からのログインだったため2段階認証がでており、vps環境から一回ブラウザログインしたあとに動かしたら正常に動作しました。
お騒がせしました、ありがとうございました!
ノートを購入させていただきました。cookieの取得の際にapi_session_v2の一行でエラー「‘NoneType' object is not subscriptable」となってしまいます。cookieの取得以外はうまくいっており、終値の取得などはできますが、注文ができません。ご教示いただけないでしょうか?
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。