推奨馬券の数が多いので馬券購入の際にいちいち手入力するのは非現実的、何らかの購入支援ツールがあると便利なので、まずはJRAのIPATから調べます。
以前、馬券購入シミュレータを作った際に起こした資料を見つつHTMLとJavascriptを再度確認します。
まずはログインと各種パラメータの解析ですな。
想定ではJavascriptで実装しアカウント入力→Ajax通信→結果をスクレイピングして必要なパラメータを取り出す予定です。
以下、パラメータやレース情報データの分析。
①ajaxでログイン画面へアクセス ※スマホとしてアクセス
中央競馬ネット投票URL
https://www.ipat.jra.go.jp/sp/
地方競馬ネット投票URL
https://n.ipat.jra.go.jp/sp/
※ログインフォームがあるかをチェックし購入できる日時か判断する。
中央競馬ネット投票URL
https://www.ipat.jra.go.jp/sp/
地方競馬ネット投票URL
https://n.ipat.jra.go.jp/sp/
※ログインフォームがあるかをチェックし購入できる日時か判断する。
②FORM0のhidden属性から値を取得
uh:セッションIDかワンタイムパスワード
g:呼び出す機能ID(中央ログイン:730)
uh:セッションIDかワンタイムパスワード
g:呼び出す機能ID(中央ログイン:730)
③アカウント入力ダイアログ表示
加入者番号8桁
暗証番号4桁
P-ARS番号4桁
を入力する
加入者番号8桁
暗証番号4桁
P-ARS番号4桁
を入力する
④ajaxで/sp/pw_732_i.cgiを呼び出す。
POSTクエリ
uh=①で取得した文字列
g=730 ※地方でも同じかは確認
u=加入者番号+暗証番号+P-ARS番号を連結したもの
i=加入者番号
p=暗証番号
r=P-ARS番号
lf=0記憶しない/1:次回から暗証番号のみを入力
POSTクエリ
uh=①で取得した文字列
g=730 ※地方でも同じかは確認
u=加入者番号+暗証番号+P-ARS番号を連結したもの
i=加入者番号
p=暗証番号
r=P-ARS番号
lf=0記憶しない/1:次回から暗証番号のみを入力
⑤受信結果(TOP画面に相当)から通常馬券投票画面への遷移に必要な各種パラメータをスクレイピング
inetid:INET-ID
uh:多分①のuhと同じ
u:現時点では不明だが必要
nm:現時点では不明だが必要
zj:現時点では不明だが必要
inetid:INET-ID
uh:多分①のuhと同じ
u:現時点では不明だが必要
nm:現時点では不明だが必要
zj:現時点では不明だが必要
⑥受信結果(TOP画面に相当)から開催競馬場情報をスクレイピング
JavascriptのMg変数に配列で格納
※中央例10桁)A470205322
A-4-7-02-05-322
[場ID1桁]-[競馬場ID1桁16進]-[曜日ID1桁]-[開催回2桁]-[開催日2桁]-[不明3桁]
上記例だと新潟競馬ー土曜日-第2回開催-2日目の意味
■場IDはアルファベットでABCDEの順で付与される。
■中央競馬の競馬場ID ※16進数なので小倉はA
1:札幌
2:函館
3:福島
4:新潟
5:東京
6:中山
7:中京
8:京都
9:阪神
A:小倉
■曜日ID
1:日
2:月
3:火
4:水
5:木
6:金
7:土
JavascriptのMg変数に配列で格納
※中央例10桁)A470205322
A-4-7-02-05-322
[場ID1桁]-[競馬場ID1桁16進]-[曜日ID1桁]-[開催回2桁]-[開催日2桁]-[不明3桁]
上記例だと新潟競馬ー土曜日-第2回開催-2日目の意味
■場IDはアルファベットでABCDEの順で付与される。
■中央競馬の競馬場ID ※16進数なので小倉はA
1:札幌
2:函館
3:福島
4:新潟
5:東京
6:中山
7:中京
8:京都
9:阪神
A:小倉
■曜日ID
1:日
2:月
3:火
4:水
5:木
6:金
7:土
※地方例12桁)A03110210156
A-0-3-11-02-101-56
[場ID1桁]-[未使用1桁]-[曜日ID1桁]-[開催回2桁]-[開催日2桁位]-[不明3桁]-[競馬場ID2桁]
上記例だと浦和競馬-火曜日-第11回開催-2日目の意味
■地方競馬の競馬場ID
まだ不明なので要調査だが馬券データの右端に付加する必要がある。地方競馬場ID×2-28に近いような気もするが、競馬場毎に固定と思われるので都度収集すれば良い。
A-0-3-11-02-101-56
[場ID1桁]-[未使用1桁]-[曜日ID1桁]-[開催回2桁]-[開催日2桁位]-[不明3桁]-[競馬場ID2桁]
上記例だと浦和競馬-火曜日-第11回開催-2日目の意味
■地方競馬の競馬場ID
まだ不明なので要調査だが馬券データの右端に付加する必要がある。地方競馬場ID×2-28に近いような気もするが、競馬場毎に固定と思われるので都度収集すれば良い。
⑦受信結果(TOP画面に相当)からレース情報をスクレイピング
JavascriptのJg変数に二次元配列で格納。Jg[競馬場Index][レース番号Index]=レース情報文字列
※中央例26桁)1434110FFFFFF003FFFFFFC000
1434-11-0-FF-FFFF-003F-FFFFFC000
[締切時刻4桁]-[登録頭数2桁]-[終了フラグ1桁]-[式別発売フラグ2桁16進]-[枠番発売フラグ4桁16進]-[同枠フラグ4桁16進]-[馬番発売フラグ9桁16進]
上記例だと14時45分発走-11頭立て-未終了-全券種発売-全枠発売キャンセル無し-6枠~8枠同枠馬あり-1番~11番まで全馬発売キャンセル無しの意味
■式別発売フラグ
1=発売されている券種/0=発売されていない券種 1Bit1券種に対応。左から順に単勝/複勝/枠連/馬連/ワイド/馬単/三連複/三連単 ※Ipatでは枠単は非対応
■枠番発売フラグ
1=発売されている枠番/0=取消・除外等で発売されなくなった枠番。2Bitで1枠を表現。左から1枠に対応。
■同枠フラグ
1=同枠馬が存在する枠番/0=同枠馬が存在しない枠番。2Bitで1枠を表現。左から1枠に対応。
■馬番発売フラグ
1=発売されている馬番/0=取消・除外等で発売されなくなった馬番。2Bitで1馬番を表現。9×2で最大18頭まで対応。左から1馬番に対応。
JavascriptのJg変数に二次元配列で格納。Jg[競馬場Index][レース番号Index]=レース情報文字列
※中央例26桁)1434110FFFFFF003FFFFFFC000
1434-11-0-FF-FFFF-003F-FFFFFC000
[締切時刻4桁]-[登録頭数2桁]-[終了フラグ1桁]-[式別発売フラグ2桁16進]-[枠番発売フラグ4桁16進]-[同枠フラグ4桁16進]-[馬番発売フラグ9桁16進]
上記例だと14時45分発走-11頭立て-未終了-全券種発売-全枠発売キャンセル無し-6枠~8枠同枠馬あり-1番~11番まで全馬発売キャンセル無しの意味
■式別発売フラグ
1=発売されている券種/0=発売されていない券種 1Bit1券種に対応。左から順に単勝/複勝/枠連/馬連/ワイド/馬単/三連複/三連単 ※Ipatでは枠単は非対応
■枠番発売フラグ
1=発売されている枠番/0=取消・除外等で発売されなくなった枠番。2Bitで1枠を表現。左から1枠に対応。
■同枠フラグ
1=同枠馬が存在する枠番/0=同枠馬が存在しない枠番。2Bitで1枠を表現。左から1枠に対応。
■馬番発売フラグ
1=発売されている馬番/0=取消・除外等で発売されなくなった馬番。2Bitで1馬番を表現。9×2で最大18頭まで対応。左から1馬番に対応。
※地方例26桁)1556110FFF7FF003FF7FFFC000
多分中央と同じ。
1556-11-0-FF-F7FF-003F-F7FFFC000
15時56分発走-11頭立て-未終了-全券種発売-3枠発売キャンセル-6枠~8枠同枠馬あり-馬番3番発売キャンセルの意味
多分中央と同じ。
1556-11-0-FF-F7FF-003F-F7FFFC000
15時56分発走-11頭立て-未終了-全券種発売-3枠発売キャンセル-6枠~8枠同枠馬あり-馬番3番発売キャンセルの意味
概ね、こんな感じで既に解析済みです。
次回は投票画面・金額入力画面の解析に入ります。
【関連する記事】