【Puppeteer実用講座】Wine/Conoha VPS(Linux)にKabuステーションが入らなくなったのでPuppeteerで操作を代替する


※ 当ページには【広告/PR】を含む場合があります。
2025/05/06
【VPS・Linuxサーバー入門】Conoha VPSのLinuxインスタンスに最新版のWine(Wine-HQ)を設定する
蛸壺の技術ブログ|Wine/Conoha VPS(Linux)にKabuステーションが入らなくなったのでPuppeteerで操作を代替する

個人的な株式資産の管理で、VPS上の自作CUIアプリケーションによってセミオートマチックな処理を常駐させていましたが、ちょっと前にKabuステーションがWineで動かなくなって割と放置しておりました。

そこからKabuステーションの開発状況の推移をしばらく様子の状態が継続していました。

現状、Wineでの動作に成功されたような報告もなく、この状況がなかなか変わらないので、ともかく別の方法で株式資産管理を行うことを模索する必要がありそうです(泣)。

とはいえ、KabuステーションAPIは個人向けの国内株式取引においては”唯一”の公開APIサービスですので、Linuxユーザーには移行先の候補が無いのが頭の痛い点です。

この手の話で、元はKabuステーションAPIの登場以前、Javascriptからは、Puppeteerに代表されるヘッドレスブラウザ操作のスクリプトで、ウェブサイトをスクレイピングする手法が広くやられてきました。

今更先祖返りと揶揄されそうな今更なテクニックで、ベンダーから提供される本物のAPIとはならないものの、背に腹は変えられないため、
「Puppeteer」を使った証券口座サイトのスクレイピングによる口座管理を個人的に大復活させてみたときの開発日記です。


ConoHa VPS

新しいKabuステーションをWineで動かすときの問題点

本題に入る前に、現在のKabuステーションがWine上で動かせない状況を少し整理しておきます。

もしかしたら、そのうち問題が解決する可能性もないとも言えませんので...(もちろんVPSでもWindows OSベースのインスタンスを使えばこんな悩みは一切無用です)

以下の記事でも触れていましたが、

合同会社タコスキングダム|蛸壺の技術ブログ
auカブコム証券のkabuステーション®をAutoItでWindows上で自動起動してみる

Windows用ソフトウェアのkabuステーション®をAutoItで自動ログインするためのスクリプトを作成します。

Kabuステーションは長らく、
「ClickOne形式(.appref-ms)」で公開されていました。

アプリケーションの仕様が大きく変更になったのは2024年の後半あたりで、
Microsoft Edge WebView2 Runtimeベースに改良されたことで、Windows10/11への対応が強化されたことにあります。

参考|お知らせ】kabuステーション®のバージョンアップ

もちろんこれはWindowsユーザーには好ましい変更点となった反面、Wineで無理クソ動かしていたLinuxユーザーには非常に高いハードルのようになってしまいました。

試しに、wine-10のstagingで現行のKabuステーションのインストーラーである
setup.exeを馬鹿正直に動かしてみます。

アカウントにログインして、
[kabuステーション起動]の項目から、ダウンロード用のダイアログを開きます。

合同会社タコスキングダム|蛸壺の技術ブログ

ダウンロードをクリックし、
setup.exeというインストーラーを保存します。

合同会社タコスキングダム|蛸壺の技術ブログ

.ssh/config内で設定した[SSHの送り先]を利用し、scpコマンドでダウンロードしたファイルを送ります。

            $ scp ファイル <SSHの送り先>:~/
        
例えばmy-conohaというユーザーで登録していたとすると、

            $ cd ダウンロード

$ ls
setup.exe

$ scp setup.exe my-conoha:~/
setup.exe                                     100%  860KB   1.8MB/s   00:00
        
ここからはConoha VPS側のGUIでリモートデスクトップから操作します。

合同会社タコスキングダム|蛸壺の技術ブログ

おもむろにこのインストーラーをwineで立ち上げてみましょう。

            $ wine setup.exe 
00c0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00c0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00c0:fixme:wineusb:query_id Unhandled ID query type 0x5.
0024:err:winediag:ntlm_check_version ntlm_auth was not found. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
0024:err:ntlm:ntlm_LsaApInitializePackage no NTLM support, expect problems
0024:fixme:heap:RtlSetHeapInformation HEAP_INFORMATION_CLASS 1 not implemented!
0024:err:richedit:ReadStyleSheet skipping optional destination
        
いくつか、エラーが出ているようなので、1つ1つ足りない設定を潰していきます。

まず、致命的ではないものの、
winediag:SECUR32_initNTLMSPというエラーが発生しています。

これはwinbindをインストールし直せばよいようです。

            $ sudo apt remove winbind && sudo apt install winbind -y
        
もう一つrichedit:ReadStyleSheetは、winetricksでDLLからricheditを追加できます。

再度setup.exeをwineしてみますと、

            $ wine setup.exe
        
結果...、画面が真っ黒になってブラックスクリーン状態になってしまい、正常には動作してくれません。

一応、
webview2のライブラリが足りてない...のが原因であれば、公式からインストーラーをダウンロードし、個別にwineへインストールしてみましたが、この方法だと問題の状況は変わらず。

ネットで似たような記事を探すと、wine9あたりでwebview2(x86)がどうにか動くけれど、x64ではクラッシュするなどの報告が少々ありましたが、wine10では十分な見地も無いようです。

この辺はもう少し待ったら状況も変わってくるかもしれませんが、これ以上WineでKabuステーションを操作する試みで深入りするはやめておきます。


ConoHa VPS

PuppeteerでSBI証券サイト(バックアップサイト)のオペレーションを自作

kabuステーションAPIがLinuxから使えなくなったような状況ですので、当初はウェブサイトの中でも軽量に操作可能な「SBI証券のバックアップサイト」を候補に考えておりました。

ところが、昨今、個人の証券口座への不正侵入や大規模なフィッシング詐欺が大きな社会問題となっていることもあり、なんともタイムリーにSBI証券口座のバックアップサイトが閉鎖されてしまうようです!

合同会社タコスキングダム|蛸壺の技術ブログ

2025年5月で、サービス終了してしまうとのことで、スクレイピングのソースコードの準備を進めていただけにとてもショックです...

もはや意味をなさないですが、記念にConoha VPSからSBIバックアップサイトへログイン後のトップページをキャプチャした画像をおいておきます。

合同会社タコスキングダム|蛸壺の技術ブログ

さて、大本命であったSBI証券口座のバックアップサイトが候補から消えたので、今後はPupperteerでログインしやすそうなサイトを探さないといけなくなりました。

証券口座の選定はまた後日別の記事でご報告するとして、今回はVPSのNodejs動作環境の準備手順を説明するに話をとどめます。

Debianインスタンスで最新のNodejsをインストール

VPS上のLinuxOSでPupperteerを使うためには、当然Nodejs環境が必要になります。

Debianのパッケージ安定版のNodejsをインストールするのはとても簡単です。
            $ sudo apt install -y nodejs npm
        
ただしそのままだと、Debianのパッケージ安定版は最新のNodejsとのバージョンの隔たりが結構あります。

            $ node --version
v18.19.2
        
見てのように、v18は現時点から考えると、ESModuleで動かしにくいため、Pupperteerをツール化して動かすにしてはちょっと古くて使いにくいです。

そこで、Nodeのバージョン管理ツールである
「n」を利用してアップグレードを行います。

ひとまずnをグローバルインストールします。

            $ sudo npm install n -g
        
次にnからNodejsを最新の安定版にアップグレードします。

            $ sudo n stable
        
あとは、最初にパッケージインストールした削除&クリーンにします。

            $ sudo apt purge -y nodejs npm
        
これで一度Debianインスタンスを再起動し、バージョンを再度確認してみると、
            $ node --version
v22.15.0
        
と、現状でリリース安定版で最新のv22系になっています。

Chrome for Testをインストール

Puppeteerは、v19以前ではChromium、そしてv20から
『Chrome for Test』の利用が基本となります。

参考|Supported browsers

サポートされるブラウザに大きく依存していますので、Puppeteer v19以前であれば、対応のChromiumを実行環境へインストールする必要がありました。

            $ sudo apt install chromium

$ which chromium
/usr/bin/chromium
        
インストール先の実行パス(/usr/bin/chromium)はPupperteerの指定パラメータで利用します。

v20以降では、Puppeteerユーザーがブラウザを個別にインストールする必要がなくなり、Node側の操作で完結できるようになっています。

            #puppeteerに対応したchromeをキャッシュする
$ sudo npx puppeteer browsers install chrome
        
キャッシュしたブラウザのバイナリは/<ユーザー名>/.cache/puppeteer/以下に保存されます。

ログイン機能とCLI機能の導入

ソースコードの実装も具体的に説明していきたかったのですが、ブログ記事のとっかかりとして当初考えていたSBI証券口座バックアップサイトを使った実装は意味がなくなってしまいました。

ここでは実装方針だけ軽く紹介して、具体的な話は次回以降に回します。

まずはログイン機能がないと話になりません。

以下の記事では、Dockerからの操作にはなりますが、某M証券のページを操作したときのものです。

合同会社タコスキングダム|蛸壺の技術ブログ
【puppeteer実用講座】Alpine Dockerコンテナからpuppeteerで動的サイトのスクレイピングを試してみる

puppeteerを利用したスクレイピング操作するための開発環境を整える

なお、M証券さんのサイトはGUIの作りに癖が強い印象ですので、今回の話からは候補にしづらくはあります。

また、Pupperteerはnodeコマンドからの起動になるため、リッチなGUI画面を自作できれば別ですが、基本はコンソールからのヘッドレス操作になります。

そこでCLIツール仕立てにするのが一番お手軽な実装になるのですが、ここでは、「Shelljs」と「argparse」を利用します。

これらのライブラリのインストールと簡単な使い方に関しては、以下の記事内で行いましたので、そちらを参考にしてください。

合同会社タコスキングダム|蛸壺の技術ブログ
【Pupperteer実用講座】PuppeteerでAmazonアソシエイトのURL生成

puppeteerでAmazonアソシエイトの簡潔なURL・関連画像・説明文を同時にローカルに保存してくれるだけのスクリプトを作成


ConoHa VPS

まとめ

タイムリーにSBI証券口座のバックアップサイトのサービス終了がアナウンスされてしまい、割と話の出鼻をくじかれてしましました。

残念ではありますが、近年のサイバー犯罪はかなり巧妙化しているので、各証券会社もセキュリティの強化が急務になっているため致し方ありません。

むしろPupperteerでもログインしにくくなる可能性が多分にあり、そちらのほうも気になる点です。

次回以降、証券サイトの選定も含めて、自動操作を実装していこうかと思います。