チケットダイブ 自動購入bot①

1年くらい前に地下アイドル界隈の知り合いからこんなことを頼まれました。
「チケットダイブの中身見れる??」
聞くところによると販売サイト自体が特殊なようで、botが手動に負けることがしばしばあるようだったので興味が湧きました。

サイトの作り自体はいたってシンプル、規約への同意や購入確認のチェックなどの面倒くさい入力は不要で、基本的にはチケット枚数、お目当てアンケート、支払方法を選択するだけの仕様です。

bot開発においては操作手数が少ない方が開発が楽な上、調整を加える上でも影響する要素が少ない方が検証しやすいため好都合です。
試しに別のbotを土台にプログラムを組んで動かしてみたのですが、サイトがシンプルなだけにスムーズに動作してくれます。

しかし、ひとたび販売開始と同時にチケットを叩いてみると知人から聞いていた通り、一筋縄ではいかないことがわかりました。

"reCaptcha"です。
販売サイトにbot判定をされて購入確定まで進むことができませんでした。

reCaptchaとはGoogleが提供する認証機能の一つで、botからのサーバー攻撃に対処するためにbotと人間を自動で判定し、botの疑いのあるものに画像選択認証や文字入力認証を吐き出すシステムのことです。最近ではreCaptcha v3が導入されることが多く、膨大なデータベースを基に独自の基準でスコア化し、操作主体がbotか人間かを識別します。

このreCaptchaに対してはanti-reCaptchaである程度対策できるため、botを改良して何度か試し打ちを実行したところ、reCaptchaを突破することはできたものの、目的である早番を取得することについては課題が残る結果となりました。サイトの作りがシンプルであることで手動取得でもある程度戦えてしまう上、reCaptchaを突破するのにも一定時間のロスは避けられず、購入完了まで進めたとしても早番を安定して取得するのは難しいものでした。たしかに、botが手動に負けるということにも頷けます。

調査を続けていると、このreCaptchaの条件としてチケットが販売開始されてからある一定の時間はbot判定される可能性が高いのではないか、という説が浮上しました。早番を取得できたケースでは受付時刻が10秒以上であることが多く、取得タイムを調整することでreCaptchaの回避率を上げることができる手応えもありました。
そこで、reCaptchaを突破して購入すると早番を抜く精度が安定しないため、reCaptchaを回避しつつある程度のスピードを維持することを目指しました。

reCaptchaがbot判定を出す条件に見当をつけるため、仮説と検証を反復し、調整に調整を重ねることでそこそこの精度まで取得を安定させることができました。ここで全てを語ることはできませんが、調整のポイントとなった条件を3つほど挙げます。

・販売開始から"7秒"以降の購入確定ボタン押下は判定の対象になりにくい。
・Googleアカウントからのアクセスは判定の対象になりにくい。
・海外のプロキシを経由すると判定の対象になりにくい。

こうして開発したチケットダイブのbotですが、体感としては早番(整理番号1ケタ前半)を取得できる制度は70%程度であったと思います。
複数台同時に起動してチケ発を実施することで取得制度をさらに向上させることも可能であると思います。

こうして、チケットダイブのbot開発は一通りやり終えたと思いましたが、ここでまた更に状況に大きな変化が現れました。早番を取得できる際の購入受付時刻は目安として8~12秒のレンジであることが多かったのですが、3秒や5秒で取得できる例が現れ始めたのです。普段通りの設定でチケ発を行っていたところ一桁前半の取得率が落ちてきたため、取得秒数の調整を早めてみると、もっと早い秒数で取得できるようになっていることがわかりました。目安の取得秒数が早まると、botの遅延調整を入れる余裕が無く、最速起動で動かす必要があるためbot判定を受ける確率が跳ね上がります。また、更に新たな問題も起こるようになりました。reCaptchaとは別にエラーメッセージが表示されるようになったのです。これは「不適切な操作が検知されました」というメッセージと共に購入画面を遮断するエラーメッセージであり、reCaptchaのような画像選択の認証ではなく、購入処理が中断されるものです。

調べていると、チケットダイブのサイト自体がある周期でアップデートされており、その度にbot識別の条件も変更が加えられているようでした。これは厄介です。bot開発においてサイトの仕様変更は大敵であり、ステルスで変更が加えられていると気が付くのに時間がかかるため、常に異変を察知することが必要となります。

こういった今後の新たな仕様変更を念頭に置くと、開発目標となるbotは以下の性能を備えたものになります。
・遅延調整等を入れない最速取得botであること
・現状のbot判定条件に当てはまらないもの

最速botで動かすことと、bot判定を回避することの両立は大変難しく、様々設定や条件を変えて試行錯誤するしかありません。botの形式や使用するブラウザ、プロキシ、IPアドレス、操作手順などを複数組み合わせて仮説⇆検証を反復するしか方法はありませんでした。

調査を継続しつつ、1日に2~3件のチケ発で方法を模索すること2週間、サイトを全て攻略することはできませんでしたが、仕様が大きく変わらない限り安定して早番を取得することができるbotに辿り着くことができました。
3ヶ月弱使用しておりますが、一桁前半の取得成功率は8割程度あり、面倒な設定を繰り返す手間もほとんどありません。

このbotは方法論さえ覚えれば誰でも使用することができるように簡素化することができたので、次の記事で有料公開しようと思います。初期費用としては高額ですが、ランニングコストがほとんどかからない点を考えればそれなりの効果を実感できると思います。

今までbot開発は様々やってきましたが、このチケットダイブというサイトはシンプルでよくできていると思います。ライブポケットやイープラスが長年botを撲滅できていないことを考えると、近年新しくできたプレイガイドとしてはbot対策がかなり強力です。ただし、一点だけ惜しいと思うのはチケット偽装などの不正に弱いだろうなという点です。チケットの見た目がシンプルな上、もぎりも画面タッチでできる点、ログイン情報さえあればどの端末からでもログインできる点。ライブポケットのようにQRコードでのもぎり、イープラスのような端末認証を導入すると良いのになと思います。プレイガイドとして優秀なだけにその点だけが勿体なく思います。






いいなと思ったら応援しよう!