リセールの座席指定を今まではカンマ区切りはAND判定にしていました。つまり、カンマで区切ったものは全て一致していないとOKにはならない仕様でした。
今仕様からカンマ区切りはOR判定にしました。以下のチェッカーは、BOTのシートチェック判定と同じアルゴリズムで判定しているので、事前にチェックが可能です。
https://zatturight.com/ticketpia/seatmatcher.html
リセールの座席指定を今まではカンマ区切りはAND判定にしていました。つまり、カンマで区切ったものは全て一致していないとOKにはならない仕様でした。
今仕様からカンマ区切りはOR判定にしました。以下のチェッカーは、BOTのシートチェック判定と同じアルゴリズムで判定しているので、事前にチェックが可能です。
https://zatturight.com/ticketpia/seatmatcher.html
楽天の自動購入ツールを作ったのは、BOT制作し始めの時期だった2017年にまで遡ります。
楽天市場のHTMLを見ると、サーバサイドがJavaで書かれていてサーバサイド主導のコードで、SPAフレームワーク(React、Angular、Vue.js)が使われていない、単純なDOM構造をしているサイトでした。これまでは細かな変更はあるものの、一度も大きな修正はありませんでした。
1~2年前ぐらいからログイン画面が変わって、いよいよ変わり始めるのかな?と思っていたのですが、それでもログインは従来と変わらずPostリクエストで通信できていたので、BOT開発側としては修正する必要が無くホッとしていたものでした。
楽天スーパーセールで破竹の勢いだった時代もあったのですが、とある仕様を楽天も気が付いたのか蓋を塞がれてしまい、それ以降はスピード重視をしたところで確実に取れるというものでは無くなってしまいました。
Emperor AIOの利用数も減ってきていたので、また楽天自動購入BOTとして単品販売を考えていた矢先のこと、Emperor購入希望者からの問い合わせで「楽天は動きますか?」と言われて、ただ単に利用者が減ったから使われていないだけだと思い「動きますよ!」と答えたのですが、いざ動かしてみるとカート画面から先に遷移できなくなっていました。
勿論、動くことを目的として購入して頂いているので対応する必要があるので、すぐさま調査したのですが、SPAフレームワーク(React、Angular、Vue.js)の構造に変わっており、HTTP通信だけで何とかなるものでは無くなっていました。
ログインも見た目は1~2年前と変わらないですが、中身は全然別物です。というよりもブラウザで動かす部分は既に変わっていたのかもしれませんが、もう今はPostリクエスト(ログインIDとパスワードをHTTP通信で送信)でログインできる代物では無くなっていました。
今の流行りはSPAフレームワークであるし、構造も複雑になっているので、BOT対策としても有効なので、これからも増えていくと思います。今後は、BOT開発もSPAフレームワークに寄り添ったものが主流になっていくのだと思います。
来週には楽天スーパーセールも始まるので、それまでには楽天市場の処理だけでも完成させますが、BOTを使ったスーパーセールでどこまで結果を出せるのか気になるところではあります。
2025/09/02追記
おととい新仕様に対応したBOTを動かしたユーザからの問い合わせで、動かないと言われて調べたところ、前の仕様に戻っていました。なのでBOTも前のバージョンに戻したら動きました(笑)
楽天、何してんだろ??
ローチケは、以下の画面の券種に完全対応ではないですが、対応しました。このページはスマホのみの販売である点と、
スマホの場合は、イベント参加券というのが購入途中しか見えないので、おおよその対応となっています。
必要のない券種については、0を指定してください。
ぴあのアップデートは、本体ではなくチケット大相撲の方です。
自動ログイン処理を改修しました。
ちゃんと動きますので、是非購入ください!
以前もEmperor AIOと連携するツールを作っていましたが、新型を作成しています。
自動動作におけるOne Time Passwordの連携をこのAndroidアプリが担ってくれます。
iOS版も開発予定ですが、iOSの制約で全自動はできないようで、ワンタップは必要なようです。Androidアプリをリリース後に投入します。
近々、Relief Ticket自動購入を投入予定です。お楽しみに!!
2025/8/10追記
Google Play公開のための審査動画に使用した動画を公開します。
アプリは前面で起動している状態で、画面OFFになっている状態からSMSを受信したときにOTPを抽出したことを現しています。
2025/8/11更新
Googleの承認が下りました。今後は12人以上にクローズドテストを14日間以上行って頂くことで公開アプリの要件をを満たすことができます。
そこでテスターになって頂ける方を募集します。メールアドレスをこちらでテスター登録すると、下記リンクからアプリをインストールできます。起動したらhideさせておけば起動していることになりますのでそのまま14日以上経過させてください。hide状態のときは、アプリはsuspended状態で停止しています。Androidのみの対応となっています。
https://play.google.com/store/apps/details?id=org.qtproject.UsefulTools
※テスター登録を行わないとアクセスできません
2025/8/14追記
Chromiumのバージョンアップと共に、私が愛用していたQtとの共存が不可能になりました。やり方はあるのかもしれないが、私なりに色々試した結果の結論です。
Chromium v138からそれまでの設計思想から破壊的仕様変更が行われたことが原因ですが、詳細が良く分からず、そこに時間を掛けてまでしてQtを使い続けるか自問自答していましたが、遂に諦める決意をしました。
他の仕事ではC#を使っているのですが、進化が凄く過ぎて、一昔前に今のコードを見たとき、この書き方はどうやって処理されるコードなの?と疑問になるぐらい書き方が変わってしまっています。でもコードの書き方も便利になっていることは確かなので、今後はC# with Chromium Engineを使ってアプリ開発を行っていきます。
但し、当面は認証がきついサイトのみの使用となります。RELIEF TICKETは認証がきついために最新のブラウザを使う必要があるため最新のChromium Versionを使用するためにC#アプリを使います。
2025/8/17追記
C#版のベースとなるアプリが完成しました。
処理速度はC++版に比べれば多少は劣ると思いますが、人間の目では分からない程のものです。これを使うのはreCAPTCHA v2 or v3、その他CAPTCHAを使うサイトに対して有効なものであり、全てのBOTがC#に移行する訳ではありません。
https://github.com/zattu1/CefSharp
2025/8/27追記
Googleより審査結果に違反があるとの通知を受けました。
Android15でSMS受信時にアプリを起動できる権限なのですが、無効と判断されてしまいました。
これに連動しているようで、Googleが本アプリの権限をリモート操作で不可にされてしまったようで、SMS受信時にアプリが起動できなくなってしました。(開発時は起動していたのを確認できていたのですが。。。)
そのため、本アプリを利用するときは、開発者オプションでスリープモードにしないを設定して、電源をつけっぱなしの状態にするほかありません。
2025/9/11追記
上記の設定は不要になりました。スリープ中でもSMSは受信するので、そのときにUIは表示せずにJava層だけでTCP送信する仕組みに変えることで、スマホの画面が復帰しなくてもOTPを受け取ることができるようになりました。
このRELIEF-TICKETサイトは、購入の手続きは異様に多く、
1.日時選択画面
2.携帯電話番号認証画面
3.携帯電話番号入力画面
4.購入に関する注意事項画面
5.同行者情報の登録画面(2人チケットの場合のみ)
6.クレジットカードの指定画面
7.Confirm画面(まだ見たことが無い)
8.恐らくComplete画面
とやることがめちゃくちゃ多い。
SMSのOTP連携を経て、やっとここまで来ました。
試す機会が極端に少ないから開発の進捗が遅くなってしまう。。。
2025/09/16
テスト購入しました。
リセールのリセールはできないので、経費で落とすのみです。
以前から問題だった、サーバからの応答が無いままタイムアウトを起こしている現象ですが、今回のアップデートで解決しました。
spのURLがあるチケットについても修正はしましたが、動作確認ができるチケットが分からないので、在庫があるチケットについて連絡頂ければ確認いたします。
サーバからの応答が無くなる問題の部分ですが、ちょっとしたことではあったんですが、それが原因でタイムアウトを起こすため、購入動作に一向に進まない状態になっていました。
今までは無償アップデート対応してきた改修工数かもしれませんが、今回はアップデート料金を頂きたいと思います。
2025/1/31以前に購入して頂いた方が対象になります。
アップデートチケットを当サイトから購入ください。
https://zatturight.com/fastbot/products/detail/88
ご購入頂けない場合、ライセンスの一時停止処置をさせて頂きます。
ご協力のほど、よろしくお願いいたします。
また今回のアップデートで、今まで試験的な導入だったPurchase Actionリトライのチェックボックスを削除しました。これを追加した理由は、そもそもサーバから応答が無くなることを考慮しての機能だったので、今回のアップデートによりサーバからの応答が来なくなることは無くなったため不要となりました。
2025/7/23追記
ユーザからspサイトの在庫があるチケットのURLをご提示頂きましたので確認しました。
個人情報の登録部分を含めて問題ないことを確認しました。
勤怠管理システムを作ってからというものの、興味がスマホアプリの開発の方に変化していきました。
ただし、スマホアプリでBOTを開発というのは自分が扱う言語(Qt QML)では不向きですが、MoCやシステムを構築したい場合にAndroidとiOS双方を同時に開発できる点が一番の特徴だと思います。
以下の方については、お役に立てると思いますので是非お声がけください!
・Webシステムを持っているがスマホと連携したい
・Map情報を使ったシステム連携がしたい
・Bluetooth端末との連携をスマホで行いたい
・NFCを使ったスマホ連携を行いたい
・etc…
先日のごたごたからようやく落ち着きを取り戻しつつある状態になり、気持ちにも少しずつ余裕が出てきたので今回の募集に踏み切りました。
新ブラウザ&BOTの開発も行いたいのですが、Chromiumのソースコードからの開発が膨大でパンクしそうなので手が付けられていません。こちらも時間が出来てきたので再開して行こうと思っています。
最近microDXのWebページからの問い合わせが多くなってきた理由は、多摩地区代表に選出されたのが大きいのですが、顧客からの問い合わせは全然来なくて、企業からの営業代行や効率化システムの宣伝ばかりでうんざりしています。
俺は顧客が欲しいのだ!!!
チケットぴあ自動購入は、v3.8.0.0にてProxyローテーションに対応しました。
今後、Proxyサーバ構築についての問い合わせが増えることを予想して、構築手順について纏めていきます。当方がProxyサーバ構築の代行を行うことはありませんので、このブログの内容からご自身で学んで頂きたいと思います。
今のご時世、AIを使わない手は無いです。AIは専門的な事についても答えてくれるので、AIと一問一答して行きながら、Proxyサーバ構築までの流れを書いていきます。
サーバ環境は、VPS(Virtual Private Server)を使います。VPSと検索するだけでも国内・海外含めて相当な数があります。自分に見合ったサーバを見つけてきてください。OSはLinux系で十分です。CPU・メモリ・ドライブについても以下のスペックで十分です。
3については、2番目を以下で行いますが、それ以外は無視で構いません。4についても以下で述べていますので省きます。
必要なパッケージは、Ubuntuの場合はsquid→Proxyサーバ、apache2-utils→ProxyのBasic認証用モジュール、その他nano(エディタ)のみです。コマンドとしては、
sudo apt install squid apache2-utils nano
以上のみです。簡単ですよね。sudoというコマンドは、Windowsで言うところのUACと同じもので、管理者権限を持ったユーザにてコマンドを実行するために必要なものです。上記コマンドを入力するとパスワード入力を求められますので、VPSを契約した際に自動で割り振られた、あるいは自分で設定したパスワードをここに打ちます。
ユーザ認証ファイルの作成とは、Proxyの「ユーザ名」と「パスワード」の部分を作成するための手続きです。これもAIに従ってコマンドを打ちます。
Squidの基本設定についても、nanoというエディタを使ってAIの指示通りにコマンドを一字一句間違えないように打ちます。ここで間違えると正しく動作しません。http_portについては、Proxyのxxx.xxx.xxx.xxx:yyyyy:user_id:passwordのyyyyyの部分になります。3128はProxyのよく使われるデフォルト値なので、敢えて変えた方がセキュリティが高くなります。
squidをインストールすると、/etc/squid/squid.confが既にあります。
以下の設定を追加(既存の設定は一旦コメントアウトすることをお勧めします):
↑重要です
# 基本認証の設定
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm proxy
# アクセス制御の設定
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
# 待ち受けポート
http_port 3128
Squidの設定を打ち終えたら、Ctrl+xでnanoのエディタを閉じてSquidの再起動を行います。
sudo systemctl restart squild
このコマンドの後にエラーが無ければ無事Proxyサーバが起動したことになります。
Proxyが導通しているかの確認は、「Proxy Checker」で検索して出てきたサイトにて、作成した、xxx.xxx.xxx.xxx:yyyyy:user_id:passwordの書式をコピペして確認してみてください。
ファイヤーウォールの設定は不要ですが、その代わりProxyを使い終えたらVPSサーバを停止することをお勧めします。間違えてもサーバの削除をしないようにしてください。使用するときだけサーバを起動させて、使用しなくなったら停止するだけでも立派なセキュリティ対策になります。
黒基調のウィンドウは格好良いです。
1週間以上掛けて、ようやく配布用アプリケーションが作成できました。
MacOS版チケットぴあ自動購入の処理は、1年前のソースコードをそのまま持ってきました。(プラスnewspプラグインの処理を入れています)
MacOS版の方がWindows版よりも購入できるという報告をちらほら聞くため、敢えてそのようにしています。Success PostでMac版を使った時にはそれが分かるようにしているので、そこで判断できます。
今のバージョンである、macOS Sequoiaは、AppleシリコンのM1以降でのみ対応されており、そのCPUでビルドしたアプリケーションを作成する必要がありました。
別件でMac Miniを購入したことと、ユーザからの要望があったので作成してみようと思った訳ですが、情報が殆どないためAIサービスに頼るしかありませんでした。
最初は、ChatGPTに聞いていたのですが、開発者IDを取得するところで躓いてしまい、先に進めなくなってしまったため、ChatGPTよりも賢いと評判のClaudeに相談することにしました。
Apple M1以降のCPUを搭載しているMacOS用に配布するためのQtアプリケーションを作成するには、アプリケーションに開発者IDを署名する必要があります。
公式には以下に作成方法が書かれているのですが、中途半端な開発者ID証明書を作成するところまでは簡単にできます。
https://developer.apple.com/jp/help/account/create-certificates/create-developer-id-certificates/
xcodeから作成するのが手っ取り早い。
結論から言うと、開発者ID証明書には、中間証明書とCA証明書を付加する必要があります。
Apple Root CAは以下からダウンロードして、キーチェーンアクセス.appにダブルクリックして取り込みます。
https://www.apple.com/certificateauthority/
中間証明書のありかは、Claudeに聞いて取得してきました。
1.G2の中間証明書を直接ダウンロード:
curl http://certs.apple.com/devidg2.der -o devidg2.der
2.ダウンロードした証明書をインストール:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain devidg2.der
xcode→Settings→Accounts→Manage Certificatesで以下の画面を開き、+ボタンからDeveloper Application IDを指定すると、CAルート証明書までリンクしている自己証明書が作成されます。
コマンドで「security find-identity -v -p codesigning」を実行して、Developer ID Applicationがvalid状態であり且つ、ルートCA証明書まで正しく登録できていれば証明書の作成は完成です。
次に、アプリケーションに署名を付与していきます。
プロジェクト内に「entitlements.plist」を作成し、内容を以下にします。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>
proファイルに以下の項目を追加します。
macx {
ICON = res/ticketpia.icns
QMAKE_INFO_PLIST = Info.plist
ENTITLEMENTS.files = entitlements.plist
ENTITLEMENTS.path = Contents
QMAKE_BUNDLE_DATA += ENTITLEMENTS
}
ビルドを行い、macdeployqtにて必要なライブラリをapp内に取り込みます。QtWebEngine.appも同様に行います。
% macdeployqt ticketpia.app% macdeployqt ticketpia.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app
# パスを変更
install_name_tool -change /opt/homebrew/opt/brotli/lib/libbrotlidec.1.dylib @executable_path/../Frameworks/libbrotlidec.1.dylib ticketpia.app/Contents/MacOS/ticketpia
install_name_tool -change /opt/homebrew/opt/brotli/lib/libbrotlienc.1.dylib @executable_path/../Frameworks/libbrotlienc.1.dylib ticketpia.app/Contents/MacOS/ticketpia
install_name_tool -change /opt/homebrew/opt/brotli/lib/libbrotlicommon.1.dylib @executable_path/../Frameworks/libbrotlicommon.1.dylib ticketpia.app/Contents/MacOS/ticketpia
以下にてアプリケーションに署名していきます。
# 拡張属性をクリア
xattr -cr ticketpia.app
# メインアプリの署名
codesign --deep --force --verify --verbose \
--sign "Developer ID Application: KAZUHIRO OZAWA (VSAYCF9RQD)" \
--options runtime ticketpia.app
# WebEngineProcessの署名(entitlementsを指定)
codesign --deep --force --verify --verbose \
--sign "Developer ID Application: KAZUHIRO OZAWA (VSAYCF9RQD)" \
--options runtime \
--entitlements ticketpia.app/Contents/entitlements.plist \ ticketpia.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app
この2つの署名を行わないと、例えばWebEngineProcessの署名を行わない場合、ticketpia.appのアプリは起動するがWebEngineが表示されずに落ちてしまう現象が発生します。
この情報がどこかに刺さったら嬉しいです。
EmperorのDiscordサーバでは、ちゃんとした動画が見れます。
世間一般的なお盆休みが終わり、通常の生活に戻っていく今日この頃。
最近はChatGPT 4oを使うことが多くなった。仕事をするとき今までは頭を悩ませながら作っていたプログラムコードだが、今ではChatGPTを使うことでこれまでの4割ぐらいは作ってもらっている。今まではどのように作れば良いか分からないものがあったときに、必死になってググってそれでも大した情報が得られない場合は、試行錯誤しながら作っていたが、その時間がほぼほぼ無くなった。
Google検索ではどうやっても見つけられないものであっても、ChatGPTであればおおよそ正しそうなものを答えてくれる。GoogleもChatGPTも情報源は同じだと思うのだが、なぜここまで違うのかが謎である。Geminiを使うと一番おしりに情報源のリンクが載せてくれるので分かるが、ChatGPTはそういうところは隠蔽されている。
サンプルコードを書いてくれとお願いするとき、言語によっても正確さに差が出ている気がする。PythonやJavascriptのようなスクリプト言語の場合、ライブラリもソースコードで提供されている点が大きい気がしており、かなり洗練されたサンプルコードを提供してくれる。それに比べてC++のようなコンパイラ言語は、ライブラリは基本的にはモジュールとして提供されているものなので、その違いがあるかないかは分からないが、洗練されたものというよりは、回りくどいと感じるソースコードが提供される。
自分自身がC++を熟知しているからということもあるだろうし、C++では現せられないような文法をPythonが持っているので、Pythonが詳しくない自分にとってはそう感じるだけなのかもしれない。
ここ1~2ヶ月は、ひたすらアニメを見ていた。流行り物が好きではないため、今までは見て見ぬふりをしていたが、正面から向き合おうと心に誓って観たアニメが以下である。
①チェンソーマン
②HUNTER x HUNTER
③Naruto(途中で挫折)
④ジョジョの奇妙な冒険(途中で挫折)
⑤進撃の巨人
⑥呪術廻戦
⑦僕のヒーローアカデミア(今ここ)
挫折した理由は、その他のものに比べてワクワク感が少なく単調な感じで途中で飽きてしまった。
それ以外のアニメについては、どんだけ伏線張っているんだと展開が読めなさ過ぎて期待が膨らみ、それらを回収したときの答え合わせが自分の想像を超えてきたときに、めちゃくちゃ考えて作られていると思い知らされる点が凄く面白い。日本のアニメが世界に広がっている理由が良く分かる。
今作っているChatBOTは、BOT側がWebSocketのサーバ側になり、各々のクライアントアプリと通信することで、まるでブラウザ版ChatGPTをChatGPTのAPIを使っている感覚で利用できることを目的としたものである。Word Pressのプラグインとしての利用も想定しており、手軽にChatGPTを使えるツールを目指している。
その次は、エルメス自動購入を予定している。Discordの通知は行わず、独自の方法で通知を高速にBOTに送り、購入手続きを進める。
通知システム自体もEmperor会員数が増えれば増強していきたい。