とあるSNSのSMS認証をTwilioで解決してみた

技術ネタ

こんばんわ、hisayukiです。

今回、某SNSにて別アカウントの凍結をくらいまして・・・
ちょっと止めるわけに行かないので、なんとか別アカ作って復旧しました。

尚、今回はサービス名をハッキリ書かずに某SNSで突き通します。
そのためちゃんとアイキャッチ画像も目隠ししましたよ、まぁ半分以上見えてますが。

スポンサーリンク

凍結は突然に

2回目の凍結にあったわけですが、本当に突然やってきます。
今回なんて、夜まで使えてたのに朝起きたら凍結されてますとか、そういうレベル。

しかも凍結食らうとフォローもフォロワーもリストも全部0にされるんですよ、フォロワーはいいとしてもフォローしてる人のIDはバックアップ必須ですね。

割とマジでサブアカウント作ってレプリケーション運用したいなぁと考えてました。
TwitterAPI使って片方でフォローしたらもう片方のアカウントに同じIDを自動フォロー、既存のクライアントだと登録Eventは定期取得しか取れないからリアルタイムに取るならクライアント作るところからだなぁ等など

まぁ、今回は考えてる間に凍結されたんですけどね

同じ電話番号使えない

正直凍結されたとしてもIDリストさえちゃんと取ってればそれほど問題ないです。
新しくアカウント作ればいいだけですし、メアドはGmailでなんとでもなるし。

問題は電話番号

同じ電話番号使えないんですよねぇ・・・

しかも凍結されたアカウントってすべてのアクションを拒否されるので、、番号消すこともアカウントごと抹消することも拒否されるという嫌がらせをされます。

APIからは出来るのかどうかまで試してないです。

電話番号は必須ではない

ちなみに電話番号登録は必須ではないです。
ただ、登録していないと一部機能制限がかかります。

その中の一つがDM

フォローされていない人には1日に1人にしか送れなくなります。
1人には今の所何回も送れますが、他の人へ送ることが出来ません。

これが困るケースがあるので、今回解決に乗り出した感じです!!w

僕らにはTwilioがあるじゃないか!

やっとここからtechな話。
SNSの認証突破するためにTwilioを使う人そうそう居ないと思いますが・・・

ちなみに単純に電話番号を発行するだけのサービスなら他にもあります。
ただ、国内番号の発行をこんな格安で発行できるところはTwilio以外無いと思いますよ。

なんと、固定番号への電話転送くらいならプログラム書く必要ないです。
すべてコンソール画面で完結するので、画面の写真も含めてやっていきます。

ここから先の内容はTwilioのアカウント登録と支払い登録(クレジットカード登録)が終わってる状態からの話になります。

電話番号購入

法改定で作業増えた

番号買うだけなら写真ペタペタ作業で終わるのですが、ちょっと番号購入前にやらなきゃいけないこと増えました。
逆に国内番号発行するには必ず手順は踏まないといけないはずなので、この手順がないサイトでの国内番号の発行は気をつけたほうがいいです。

Twilioといえば赤い服のあの方がしっかりまとめてくださってるので、こちらを読んでください。

Twilio上で電話番号に住所を登録する方法 - Qiita
# はじめに みなさん、こんにちは。 Twilioエバンジェリストの高橋です。 今回は、Twilio上で購入した電話番号に、住所情報を登録する方法を解説します。 なお、本記事は執筆現在(2019/9/10)での状況となります。 (...

番号購入

まずは購入画面にいって、日本で検索します。

一覧がでるので、適当に選んで購入を押します。
今回一番上を選んでますが、この番号は買ってないのであしからず。

購入ボタンを押すとこんな画面が出るようになりました。
規則情報の住所が選択できるようになったので、先程の準備で登録した住所を選択します。

ここまでで番号の購入は終わりです。

TwiML Bin

前からTwilioを使ったことある方は、curlやSDKを使ってAPIを叩く方法が主流だったかもしれないです。
ですが、今はTwiMLそのものをコンソール画面で作って保存しておけます!
それが、TwiML Binというサービスです!

まずは購入した番号を選択します。

次に、電話がつながった際のアクションを設定します。
今まではWebhookとかでAPIを叩いてた人が多いのかなと。
今はTwiML Binを選択して直接TwiMLの動作をさせることが出来ます!

+ボタンを押すとTwiMLの入力画面が開きます。

ここで保存するTwiMLと名前を入力します。

ちなみに今回登録したTwiMLは以下の通り。
超単純で該当のTwilioの電話番号から電話が来たら、Dialタグでスマホの番号に電話をかける動作です。

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Dial callerId="+81から始まるTwilioの番号">
        <Number>+81から始まる自分の携帯番号</Number>
    </Dial>
</Response>

先程付けた名前のTwiML Binが選択されていればSaveして完了です。

この状態でTwilioの番号に掛けたら自分に転送されてきます❗

ちなみにTwiMLの保管場所

一応、どこに保管されているかを書いておきます。

おそらく最初から表示されてはいないと思うので、一番下のメニューボタンっぽいのを押すとすべてのサービスが表示されます。

その中のRuntimeカテゴリの中に入っています!

先程作った名前で表示されてます。
クリックすると詳細も出てきます。

この画面からも修正できます。
ちなみにURLも発行されているので、こちらをエンドポイントとして利用することもできます。

確かWebhookでやる場合はこっちのURLで呼び出しても同じ動作したはずです。

承認

あとは某SNSで電話登録させるだけ❗
今回はPC側から行いましたが、ちょっとコツがいるかもです。

まず、アカウント設定画面の電話番号登録からはうまくいきませんでした・・・w

なので、あえて制限がかかってるDMを複数人に送信しようとして電話番号登録画面を出しました。
こちらの画面だと国も指定できるので、日本(+81)を指定します。

050番号は固定番号として扱われるっぽいので、電話番号入力後のコード入力画面下に「コードが届きません」とリンクが出てきます。

これをクリックすると、SMSか電話での音声通知を選べます❗

音声通知を選ぶと某SNSから電話かかってきます。

ここまで何のSNSかわからないと何言ってるのかわからないかもですが、多分大丈夫でしょう。

認証突破したら用済み

というわけで、電話を受け取り認証コードを聞きます。
もし聞き取れなくても、もう一回かけさせられるのでご安心をw

認証コード受け取って、SMS認証終わったらTwilioの電話番号は捨てます。
持ちっぱにしてると月額かかっちゃうので。

また凍結されたら都度購入でいいです、108円ですし。
そもそもSMS認証と人からの電話番号検索でしか使いませんw

かかった費用

電話番号代・・・だけですね
まぁ、厳密にはテストしたんで1回分の通信費かかってますが。

実際は某SNSから電話がかかってくるので、電話代は某SNS持ちです。

まとめ

最近の某SNSはかなり厳しい気がしますねぇ、すぐ凍結される気がします。
しかもなぜ凍結?なのかは教えてくれません、一応異議申し立てはするんですが返ってきたこと無いですね。

とりあえず、障害が起きたときの構成を考えましょう

コメント