症状: JRAの当日一覧ページだけHTTP 403になる
VPSからJRA公式サイトの/keiba/today/を取得するとHTTP 403になりました。一方、JRAトップページと、トップから到達できる公式出馬表の詳細ページは同じ環境でHTTP 200でした。
このため、VPS全体やユーザーエージェントが一律に遮断されたのではなく、当日一覧ページに対する経路別のアクセス制御と判断しました。403の回避やアクセス制限の迂回は行っていません。
実装: 公式出馬表を起点に当日の全レースを展開
収集器はJRAトップの掲載レースから公式出馬表をたどり、出馬表内のレースタブと発走時刻を解析します。開催表は日次キャッシュするため、毎分のジョブ起動でも開催探索を繰り返しません。
2026年9月19日開催分では、中山・阪神の各12レース、合計24レースの出馬表と発走時刻を取得してキャッシュできました。取得対象は発走30分前、10分前、5分前の各1回です。flockで重複実行を防ぎ、対象時刻以外に出馬表・オッズを取得しません。
オッズ未発表、取得失敗、HTML形式変更時は失敗理由を記録して処理を継続し、推論用データは保存しません。ログイン、IPAT、購入処理は使いません。
構成変更と確認範囲
旧JRA/NAR混在の収集処理に代えて、JRA公式専用のoneshot serviceと毎分起動のsystemd timerを用意しました。timerは対象時刻以外に出馬表・オッズを取得せず、flockで重複実行を防ぎます。2026年9月18日14:05 JSTの確認では、非開催日のため0レース・失敗0件を記録し、翌日分24レースの開催キャッシュを作成しました。
Pythonユニットテスト14件、handoffスクリプトの構文検査、systemd unit定義の検査を実行し、すべて成功しました。今回確認したのは構成と手動実行の結果であり、本番VPS上のtimer有効化・継続稼働までは確認していません。オッズの実スナップショットは開催日の発走30分前以降に初めて生成されるため、運用ログで別途確認します。