この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 11838|答える: 1

12306チケット取得ソフトウェア関連インターフェースおよびデータフォーマット

[リンクをコピー]
掲載地 2017/09/27 10:15:39 | | |

本題に入りましょう。ここでは主に現在の12306関数のインターフェースとデータフォーマットについて話したいと思います。 主に5つのモジュールに分かれています:ログイン、連絡先取得、チケットの確認、予約、未完了注文の照会。重要でない他のインターフェース(認証コードの正確性の検出、残りのチケット数のリクエストなど)は直接無視できます。この記事は書かれており、必要なら自分で調べることができます。
       1. ログイン
             ログインは主にセッションを取得し、サーバーとの通信を維持するためのものです。 ログインには主に2つのステップがあります
             まず、ログイン認証コードを入手してください
                     方法:GET
                     インターフェース:https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     パラメータ:コピー、同じ
                     裏:バイナリ画像ストリーム
             2回目のログイン
                    方法:POST(投稿後の処理)
                    インターフェース:https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    パラメータ:1. loginUserDTO.user_name ユーザー名
                               2. ランドコード検証コード
                               3. userDTO.passwordパスワード
                     Returns: json string(ログイン成功の判断)
        2. 人脈を広げる
                    方法:GET
                    インターフェース:https://kyfw.12306.cn/otn/passengers/init
                    パラメータ:なし
                    htmlファイルを戻してください。中にjson形式の変数があり、ユーザーオブジェクトに解析できます
        3. チケットチェック
                    方法:GET
                    インターフェース:https://kyfw.12306.cn/otn/leftTicket/query?
                    パラメータ:leftTicketDTO.train_date:チケットチェック日
                               leftTicketDTO.from_station:出発駅(アルファベット順)
                               leftTicketDTO.to_station:目的地駅(アルファベットコード)
                               purpose_codes:大人
                    返す:JSON形式への返却と直接解析
         4. 予約
                   任命は6つのステップに分かれ、一つずつ相互に関連しています
                   まず:事前提出
                            方法:POST(投稿後の処理)
                            インターフェース:https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            パラメータ:secretStr:チケットチェックから得られます(各列車ごとに1つずつ、毎回異なるものをリアルタイムで解析する必要があります)
                                      train_date:予約日
                                     back_train_date:返宅日
                                      tour_flag:DC
                                      purpose_codes:大人
                                      query_from_station_name:出発駅
                                      query_to_station_name:目的地駅
                                      未定義:空文字列
                           返却:提出が成功したかどうかを判断するためにJSON形式を返します
                    次に、対応するパラメータを取得する
                            方法:POST(投稿後の処理)
                            インターフェース:https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             パラメータ:
                              _json_att:空の文字列
                             Return: htmlファイルは、globalRepeatSubmitTokenの最初の数行の解析や、下からticketInfoForPassengerForm変数の値を取得する際に有用で、json形式で、そこからpurpose_codes、key_check_isChange、leftTicketStr、train_locatio{filter}以下のコミットに備えるためにnを準備するために
                    三つ目:提出認証コードを入手する
                              方法:GET
                             インターフェース:https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             パラメータ:
                                      全くありません
                             返却:ログイン認証コードと同様に画像バイナリストリームを返します
                     四つ目:提出が確認できるかどうか確認する
                             方法:POST(投稿後の処理)
                              インターフェース:https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              パラメータ:
                                       cancel_flag:2
                                       bed_level_order_num:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                       passengerTicketStr:座席タイプ、0、チケットタイプ、名前、身元、電話番号、N(複数の場合、コンマで区切る)
                                       oldPassengerStr: 名前、IDタイプ、ID番号、ユーザータイプ
                                       randCode:予定された検証コード
                                       tour_flag:dc
                                       _json_att:空の文字列
                                       REPEAT_SUBMIT_TOKEN:前のステップから取得できます
                              コミット可能かどうかを判定するために json フォーマットを返す
                    第五:投稿確認
                                方法:POST(投稿後の処理)
                                インターフェース:https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                パラメータ:
   
                                       passengerTicketStr:座席タイプ、0、チケットタイプ、名前、身元、電話番号、N(複数の場合、コンマで区切る)
                                       oldPassengerStr: 名前、IDタイプ、ID番号、ユーザータイプ
                                       randCode:予定された検証コード
                                       purpose_codes:ステップ3で手に入れる
                                       key_check_isChange:同上
                                       leftTicketStr; 同上
                                       train_locatio{filter}n; 同上
                                       REPEAT_SUBMIT_TOKEN:同上
                                       _json_att:空の文字列   
                               Return: json形式、提出成功の判断、待ち時間の返却、一定期間ごとにステップ6を呼び出して処理結果を返します
                     第六:投稿結果を得るための投票
                               方法:GET
                               インターフェース:https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               パラメータ:
   
                                       ランダム:ランダムな数字
                                       tourFlag:dc   
                                       REPEAT_SUBMIT_TOKEN:取得すべき第三の要素があります
                                       _json_att:空の文字列   
                               Return: json format、待ち時間を返します。waitTimeが0未満の場合はorder情報orderIdを取得し、0より大きければポーリングを続けます。
          5. 未完了の注文について問い合わせる
                 方法:POST(投稿後の処理)
                 インターフェース:https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 パラメータ:
                _json_att:空の文字列   
                リターン:JSON形式で、注文情報を含む、直接解析します

           ちなみに、5つの機能は基本的に導入されていますが、今は使い方を学ぶためだけに公開されており、悪意のある攻撃を受けません。さらに、12306のウェブサイトのインターフェースは非常に頻繁に変わり、今投稿されているインターフェースも明日変わる可能性があるため、重要なのは関連するインターフェースやデータを取得し、そこから分析して対応するパラメータや結果を得る方法を学ぶことです。 ここでは主にchromブラウザに付属しているFirebugやFiddler、Wiresharkのツール、関連ツールの使い方を使います。インターネットで探せばいいです。
            最後に不満を言います。12306のウェブサイトはCDNの静的キャッシュ技術を使用しており、これにより異なる地域、帯域幅、負荷に応じて対応するサーバーが選ばれます。つまり、全国に多くの12306サーバーがあります。各ユーザーがアクセスできるサーバーは異なりますが、静的なページやjs、css、画像などのみです。しかし、各サーバーはセッションを直接共有し、つまり一つのサーバーにログインすれば別のサーバーにログインします 上記は着陸したのと同じです。 したがって、キャッシュの時間が最新でストレスが最小限に抑えられ、データがよりリアルタイムにできるよう、サーバーを動的に選択できるのが最善です。 私の実装では、一度クエリしなければサーバーIPが一度変更されます。 関連する技術については後ほどお明かします。 しかし、この記事の内容だけでも学びに十分です。 http://tool.chinaz.com/dns で特定のIPアドレスを確認できます。




先の:{:1_3:}{:1_3:} いい日だ
次に:jsはどのようにしてオブジェクトをコピーするのですか?
掲載地 2017/09/28 9:19:34 |
ボスはチケットを取るのか?
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com