Proxyサーバ構築方法について

チケットぴあ自動購入は、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というコマンドは、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が既にあります。

以下の設定を追加(既存の設定は一旦コメントアウトすることをお勧めします):

↑重要です

Squidの設定を打ち終えたら、Ctrl+xでnanoのエディタを閉じてSquidの再起動を行います。

このコマンドの後にエラーが無ければ無事Proxyサーバが起動したことになります。

Proxyが導通しているかの確認は、「Proxy Checker」で検索して出てきたサイトにて、作成した、xxx.xxx.xxx.xxx:yyyyy:user_id:passwordの書式をコピペして確認してみてください。

ファイヤーウォールの設定は不要ですが、その代わりProxyを使い終えたらVPSサーバを停止することをお勧めします。間違えてもサーバの削除をしないようにしてください。使用するときだけサーバを起動させて、使用しなくなったら停止するだけでも立派なセキュリティ対策になります。

MacOSの配布用Qtアプリケーション作りが難解過ぎた

黒基調のウィンドウは格好良いです。

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が表示されずに落ちてしまう現象が発生します。

この情報がどこかに刺さったら嬉しいです。

エクストリーム!アニメーション!

世間一般的なお盆休みが終わり、通常の生活に戻っていく今日この頃。

最近は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会員数が増えれば増強していきたい。

コカ・コーラを日本一売った男の学びの営業日誌

今読んでいる書籍である。私は営業行為に対して苦手意識を持っており、成功した試しがない。

私が苦手意識を持っている営業とは、飛び込み営業のことだ。営業職に就いたら必ず経験することになる新規顧客の開拓だ。このテクニックさえ身に着ければ一生食べていけると思う。

営業職は、ものを売ってくることが使命になっている。しかしこれは営業する側の立場で考えたものであって、ものを買う側の目線では無い。ここに落とし穴があることをこの本で思い知らされた。

ものを買う側の目線で営業するとはどういうことか。そのことがこの本に様々なケースとして書かれている。この本の著者自身が自ら経験した知識を惜しみなく伝えてくれている。

私が会社員として働いていたときに、上司や取引先の顧客を好きになったことがあるのは20年以上働いていた中で二人しかいない。(恋愛という意味ではない)

最初に出会った好きな取引先の顧客は、寡黙な方だったが決してこちらに押し付けることはせず、一緒になって考えてくれていた。まだ若かりし頃の私は今ではブラック企業に認定される程の信じられない働き方をしていて、とても続けたいと思うような開発環境ではなかったため、自分の会社を辞めたあともその方からお声がけを頂いたがお断りした。お声がけ頂いたことは嬉しいが、あの環境には二度と戻りたくはない。

誤解が無いように付け加えておくと、自社の働き方が異常なだけであって、取引先がブラックということではない。私も含め開発メンバー全員技術力がある訳でもなく、作ってはバグを出しての繰り返しで、永久ループを作っていただけの話である。

もう一人の好きになった方は会社の上司だった。歳は私より若かったが、見た目からは想像できないが話をすると知識の豊富さで頭が良さそうだというのが直ぐに分かる感じの方だった。

大手企業との打ち合わせのときに、私などは緊張しまくって話しても噛みまくっていた状態だったが、その上司は冷静沈着で分かりやすい口調で顧客と対等に話をしていたのがとても印象に残っている。

子供っぽい心も持っていたのが意外ではあったが、ガキだと上から見下ろそうと思うこともなかった。こちらの話には常に親身に聞いてくれるからこそこちらも頑張って仕事をこなして行こうと感じさせてくれていた。

私がこの事業を通して皆様に伝えたいことは、インターネットという技術を使った様々なサービスについて、様々な憶測がある点を取り払い、全て真実をお伝えするということです。

インターネットで使用されている技術は全世界共通言語であり、公平な環境が与えられています。回線速度の良し悪しはあれど、一般的に使う分にはそう大差ありません。その限られた技術の中で、如何に有利な立場を作ることができるかを常に念頭に置いて開発しています。

2年前にエルメスオンラインのリストック監視で限界を感じたのは、当時は持続可能な状態では無かったという点があります。今の仕組みについては、現状を維持できるのであれば、持続可能なものを構築できたと自負しています。

エルメスオンラインだけに限らず、リストック監視が困難な様々なサービスにおいてもこの技術は有効だと考えているので、気軽に相談してもらえたらと思います。

ちょっと気が早いがするが妄想は止まらない

リストック監視には難しいサイトには持ってこいのシステムが誕生しつつあるなかで、アイディアがまた沸いてきた。

zozotownのリストック監視もきついサイトであるが、リストック監視を代行することが可能なことに気づいた。

discordへの通知は遅延が激しいので、独自の通知サーバを建てることで、よりリアルタイムに近い通知を提供する。

しかも、通知先は当社のBOTなので、あとはカートインコマンドを発行するだけ。メンバー通しの争いになるのは仕方ないが、そういう状況になるのが理想である。

煽てられると乗り乗りになるので、今からEmperor AIOに加入しよう!!

ピコタンロック監視機能が完成した。

動作させている画面を見せたいところだが、企業秘密を晒すことになるのでアップすることはできないが、自分の思い描いていたもの以上のモノが出来上がった。

ブロックされにくいというのが一番の売りだ。

開発中に画像認証の仕様を変えられてしまうというアクシデントがあったが、こういうことをやってくる企業だと言うことは分かっていたので、違う方法で対処した。

お試し期間として1カ月動かしながら様子を見る予定だが、今回の改修は凝ったことは特にしておらず、ありのままの自動操作を行っているだけなので、エルメスオンライン側の対策で開発を断念せざるを得ないケースになるのは考えにくい。

また、お試し期間はどのぐらいの費用が掛かるのかチェックしたいため、監視速度は遅めに設定している。Emperor AIOの加入者が増えるにつれて機材を増強していき、監視速度をアップさせていくので、是非とも加入して欲しい。

今後の予定としては、独占契約予定のBOTを1本作ったあと、1か月のお試し期間を経てエルメスオンライン自動購入のアップデートを行っていく。

中国経済の落ち込みからか、転売するもの自体が減ったのか、転売する旨味が減ったのか、Emperor AIOの利用者は激減してしまったので、エルメスオンライン自動購入で再び加入者が増えることを期待したい。

過去に作ったエルメスオンライン自動購入は、ピコタンロック監視機能を稼働させていたのが2~3か月だけだった。購入に積極的だったユーザ1人を除き、居たのか居ないのか分からない状況で、私と積極的なユーザ1人がゲットしているので、速度的には十分他と戦えるものである。

ピコタンロックに詳しい方から18と22の情報を入手したが、お試し期間中は速度が遅いこともあるため数を絞るために18のみの監視にします。商品が出現したときは、販売サイトに表示しているDiscordにPostします。

新バージョンのブラウザについて(途中経過)

最近思ったように時間を取れないのが悩みの種ですが、少しずつ前進してはいます。これまで作ってきたBOTの機能を踏襲しようとした場合、タブウィンドウにする必要があるので、それを制作できたら完成にしたいと思っています。

先日同業者とお酒を飲む機会があり、OpenAIのトークンによる有料アクセスが高すぎると嘆いていたので、攻略を練っていました。

DevToolsのネットワークタブで受信したデータが見れたので、それをプログラムから取得しようと試みたのですが、そういう使い方をされるための防御が既に入っていてDevToolsの通信プロトコルからの取得は出来ないようになっていました。しかし、これで諦めるのは悔しいので、Domドキュメントから取得してBOT用API化する予定です。

C++やPythonからChatGPTに問いかける文字列をBOT用APIから呼び出したらChatGPTの画面に送信し、AIが応答してきたものをBOT用APIから応答する仕組みを考えています。月額2,000円にする予定です。

このBOTの恩恵を受ける人は、ChatGPTの有料版を使用していて常日頃から大量のトークンを使ってやり取りする方で、自動化したいがChatGPTのAPIは高いから使いたくないという方向けです。


最近、妙に政治家の動きに敏感になっています。良いことなのかはどうかはさておき、政治資金規正法の行方が非常に気になっています。

政治資金パーティーは何で必要なんですか?無くても政治活動できますよね??お金掛けないと政策が滞るのですか??お金掛けないと人気が無くなっちゃうんですか??そんな政治家は大した実績も残せないでしょうから、すぐに辞めて若い人に席を譲ってください。貴方は自覚が無いだけで実は立派な老害です!

GW突入!!

大型連休は何処も混むので、この時期に家族で旅行することはなく、大抵はバイクで旅に出たり、遠方の友人と飲んだりする。

高速道路は何処も渋滞な上に必ず事故渋滞でとんでもない待ち時間を喰らうことになる。事故の原因は単純に車が多すぎるのと、普段乗り慣れていない人が高速を走るからだと思っている。

GW廃止という意見は前から有ったらしく、こんな記事がある。

https://www.itmedia.co.jp/business/articles/2405/01/news030.html

大型連休を作ったことで観光業を盛り上げようとした安倍政権だが、実は今の自民党よりももっと興味がなかった。安倍政権になってから政治に無関心になったと言っても過言ではない。

安倍政権が何をやったのかを挙げること自体が難しい。興味がないから知らないのだ。なぜ興味がなかったのか自分で分析してみたが、発言の仕方がパフォーマンス的な感覚に見えていて、期待感が沸かない。3本の矢で日本は何が良くなったのか全く分からない。

カケイ学園問題は誰が見たって黒だし、宗教問題にそこまで染めていたのはビックリした。この世から居なくなっても尚、裏金問題で世間を騒がせている。何一つ一般庶民の生活が良くなったという実感がなかった。潤ったのは上級国民だけだろう。上級国民のための政治!がしっくり来る。

もっと日本を良くするために真剣に考える政権は無いの?本来そうあるべきじゃないの?目先の利益しか考えてない人しか上に立っていない。これじゃあ海外から舐められて当然だよ。にやにやしながらしゃべるな!!

当社の期の変わり目が4、5月のため、決算のための整理に追われ、またフリーランスという立ち位置でやっている仕事にも追われ、やりたいことができるのは5月下旬以降までずれ込みそう。

忙しくなる前にChromiumの中でもうちが必要としている部分の解析は既に終えており、今後はより最新ブラウザに近いもので動作させられることによる恩恵を全BOTに反映することを計画している。あとは実行に移すのみなのだが、もう少しお待ちください。。。

ゴルフ場予約BOT完成、その他もろもろ

BabyMetalの中で一番好きな曲がArkadiaです。その動画の中でもっとも良い表情をしているのを挙げてみました。YUI Metalが居たらここに載せていたと思いますが、2019年を最後に離脱しています。

いつの間にかBabyMetalも新メンバーと共に去年から活動をしているのを知りました。和製メタルとして世界で認知されている中ではトップだと思います。

このバンドのことはWikipediaぐらいの知識しか知らないのですが、バックメンバー含めてメンバーがかなり入れ替わっている中で、上記掲載しているSU MetalとMOA Metalは初期メンバーから継続して活躍しています。才能を含め努力、タイミング、運などが積み重なって今も尚継続できているのではないかと推察しますが、自分一人だけの力ではどうにもならないことも世の中多いのだと日々感じています。

今季からのNHKの朝ドラは、私が好きな人間臭い生き様を描いていて、朝食の時間に合致しているので見始めました。戦前の日本では、女性は結婚して家庭を守ることが法律になっていることを知りました。男性と女性では生き方自体に役割があることを法律で定めているとは現代ではちょっと考えられない世の中ですが、そのような時代の生き方に抗った法律家の女性が主人公になっていて、その役を演じる伊藤沙莉さんがまた飾らない感じの役を上手く演じていて、とても面白いです。

本題に入ります。ゴルフ場の予約を自動で行うBOTの制作が完了しましたので報告します。

続いては、最近購入した以下の物です。Raspberry Pi5という去年9月ごろ発売した評価ボードですが、OSはLinuxが入っています。ネットの記事によるとWindows10や11も搭載可能のようですが、Linuxの動作の軽さとCPUの速度が向上していること、そして上に載っているm.2 SSDにより、かなり快適な動作をしています。そこで思い付いたのが、PCを持っていない方を対象にした、BOTを提供するためのハードウェアとしてソフトウェアとハードウェアの同時提供です。以下の装備の総額は、

・Raspberry Pi5 (8GBメモリ) 13,000~14,000円(税込)
・純正冷却ファン 900円(税込)+送料700円
・M.2 SSD搭載アダプタ 1,100円(税込)
・M.2 SSD 512GB 3,600円(税込)
・Micro SD 64GB(バックアップ用) 1,000円(税込)
・5V5Aアダプター 2,800円(税込)

総額24,100円でBOTが動作する端末が揃います。

これ単体で動作させようとした場合、

・液晶モニタ(HDMI端子が付いていればテレビでもOK)
・マウス
・キーボード
・有線および無線LAN接続環境(スマホのデザリングでもOK)

が必要になりますが、これらが無くてもOSのセットアップさえ完了してれば、スマホのアプリ(VNC Viewerなど)で操作可能です。

速度的には、中級機のWindowsノートPCと同等ですが、何と言っても小ささが圧倒的で、何処にでも持ち運びできるのが良さげです。(Raspberry Pi5の大きさ⇛10cm x 5cm程度)

パソコンが無い方用に、バックアッププランとして月1,000円頂いて、問題が起きたときはリモートで対応できる形にしたいと思っており、BOTの価格+セットアップ済みRaspberry Pi5の総額(24,000円)+OSセットアップ(サービス)+バックアッププラン(月額1,000円)で提供できます。欲しい方は連絡ください。

最後に、実験的になりますが、エルメスオンラインのピコタンロック監視を近々行うことを計画しています。ピコタンロックの情報が古い点があれですが、実験なので検知したらDiscord(EmperorとSuccess-Post)に通知していきます。

上手くいくか確かめることを目的としているため、通知速度は期待出来ないと思いますが、1ヶ月間試していた結果行けそうだと判断したら、通知速度向上のための装備をして望む計画です。

なぜ今ごろやる気になったかというと、監視の技を覚えたので試したくなったというのが理由です。