Apple script を使って、ngrok で出てきたランダムなアドレスを文字列として取得してみる

MACローカルマシンの中のサービスを外向けに公開できるという便利なツール「ngrok」。

http://localhost://5000 のアドレスを http://XXXXXX.ngrok.io のように。

しかし、有料会員にならない限りは、http://XXXXXX.ngrok.io みたいなランダムなホスト名になってしまいます。

このため、このアドレスが変わる度に、コードを毎回書き換えるのは面倒になってきます。

さらに、このアドレス、ターミナル上では目には見えるけど、手動でコピペするのも面倒だなと思い、

どうにかプログラム上で取得できないかと考えました。

調べていたところ、

↓こちらのアドレスを開くと、

http://localhost:4040/status

↓このような画面を見ることができました。

ここに表示されているアドレスを

apple script と javascript を使って、取得することができました。

#!/usr/bin/env osascript

tell application "Terminal" tell application "System Events" to keystroke "t" using command down #新しいタブを開く(ctrl + tab) set currentTab to do script "ngrok http 5000" #ngrok http://localhost:5000 を開ける end tell

delay 1

tell application "Google Chrome" tell window 1 set newTab to make new tab with properties {URL:"http://localhost:4040/status"} repeat while loading of active tab delay 2 #URL は、window.onload 時には出力されていないので少し待つ end repeat tell active tab execute javascript "var ele = document.getElementById('content');var html = ele.innerText;var result = html.match(/http:\/\/\S*/g);var url = result[0];" //この アドレス をどこかに保管してあげるとよい。 end tell end tell end tell

ここで取得した アドレスを 外から見えるところに保管して置くといいかもしれない。

もっと効率のいい取り方があるのかもしれませんが、とりあえずできたということで。