Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 11838|Répondre: 1

Interfaces et formats de données liés au logiciel de saisie de tickets 12306

[Copié le lien]
Publié sur 27/09/2017 10:15:39 | | |

Allons droit au but, ici je veux surtout parler des interfaces et des formats de données des fonctions actuelles du 12306. Il est principalement divisé en cinq modules : connexion, obtention de contacts, vérification des tickets, réservation et requête des commandes inachevées, car pour certaines autres interfaces peu importantes, vous pouvez les ignorer directement, comme détecter la correction du code de vérification, demander le nombre restant de tickets, etc. cet article est rédigé, et vous pouvez l’étudier vous-même si besoin.
       1. Connexion
             La connexion sert principalement à obtenir la session et à maintenir la communication avec le serveur. Il y a deux étapes principales pour se connecter
             D’abord, obtenez le code de vérification de connexion
                     Méthode : GET
                     Interface : https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Paramètres : reçu, pareil
                     Arrière : flux d’images binaires
             Deuxième connexion
                    Méthode : POST
                    Interface : https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Paramètres : 1. loginUserDTO.user_name Nom d’utilisateur
                               2. code de vérification randCode
                               3. userDTO.password mot de passe
                     Retour : chaîne json, qui peut déterminer si la connexion est réussie
        2. Obtenir des contacts
                    Méthode : GET
                    Interface : https://kyfw.12306.cn/otn/passengers/init
                    Paramètres : Aucun
                    Retour : fichier html, vous pouvez y trouver une variable, qui est au format json et peut être analysée en un objet utilisateur
        3. Contrôle des billets
                    Méthode : GET
                    Interface : https://kyfw.12306.cn/otn/leftTicket/query ?
                    Paramètres : leftTicketDTO.train_date : Date de vérification des tickets
                               leftTicketDTO.from_station : Station de départ (code alphabétique)
                               leftTicketDTO.to_station : Gare de destination (code alphabétique)
                               purpose_codes : ADULTE
                    Retour : Retour au format JSON et analyse directe
         4. Réservation
                   La nomination est divisée en 6 étapes, une par une, interconnectées
                   Premièrement : Avant soumission
                            Méthode : POST
                            Interface : https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Paramètre : secretStr : obtenu par vérification des billets (un pour chaque train, et différent à chaque fois, doit être analysé en temps réel)
                                      train_date : Date de réservation
                                     back_train_date : Date de retour
                                      tour_flag : DC
                                      purpose_codes : ADULTE
                                      query_from_station_name : Station de départ
                                      query_to_station_name : Gare de destination
                                      indéfini : une chaîne vide
                           Retour : Retourne le format JSON pour déterminer si la soumission est réussie
                    Deuxièmement : Obtenir les paramètres correspondants
                            Méthode : POST
                            Interface : https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Paramètres :
                              _json_att : Corde vide
                             Return : fichier html, utile sous l’analyse de globalRepeatSubmitToken dans les premières lignes, et obtenant la valeur de la variable ticketInfoForPassengerForm en dessous, est au format json, à partir duquel purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n pour préparer les commits suivants
                    Troisièmement : Obtenez le code de vérification de soumission
                              Méthode : GET
                             Interface : https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Paramètres :
                                      Aucun
                             Retour : Retourne le flux binaire d’image, tout comme le code de vérification de connexion
                     Quatrièmement : Vérifiez si la soumission peut être confirmée
                             Méthode : POST
                              Interface : https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Paramètres :
                                       cancel_flag :2
                                       bed_level_order_num :00000000000000000000000000000000000
                                       passengerTicketStr : Type de siège, 0, type de billet, nom, identité, téléphone, N (s’il y en a plusieurs, séparés par une virgule)
                                       oldPassengerStr : Nom, Type d’ID, Numéro d’ID, Type d’utilisateur
                                       randCode : Code de vérification programmé
                                       tour_flag :dc
                                       _json_att : Corde vide
                                       REPEAT_SUBMIT_TOKEN : Récupérez à partir de l’étape précédente
                              Retour : format json pour déterminer s’il peut être engagé
                    Cinquièmement : Confirmer la soumission
                                Méthode : POST
                                Interface : https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Paramètres :
   
                                       passengerTicketStr : Type de siège, 0, type de billet, nom, identité, téléphone, N (s’il y en a plusieurs, séparés par une virgule)
                                       oldPassengerStr : Nom, Type d’ID, Numéro d’ID, Type d’utilisateur
                                       randCode : Code de vérification programmé
                                       purpose_codes : Étape 3 pour l’obtenir
                                       key_check_isChange : Ibid
                                       leftTicketStr ; Ibid
                                       train_locatio{filter}n ; Ibid
                                       REPEAT_SUBMIT_TOKEN : Ibid
                                       _json_att : Corde vide   
                               Retour : format json, déterminer si la soumission est réussie, renvoyer le temps d’attente, et appeler l’étape 6 tous les certains délais pour retourner le résultat de traitement
                     Sixième : Un sondage pour obtenir les résultats des soumissions
                               Méthode : GET
                               Interface : https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime ?
                               Paramètres :
   
                                       aléatoire : nombres aléatoires
                                       Drapeau de la tournée : dc   
                                       REPEAT_SUBMIT_TOKEN : Il y a une troisième étape à obtenir
                                       _json_att : Corde vide   
                               Retour : format json, retourne le temps d’attente, si le temps d’attente est inférieur à 0, obtiens l’information de commande orderId, si elle est supérieure à 0, continue le sondage
          5. S’informer sur les ordres inachevés
                 Méthode : POST
                 Interface : https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Paramètres :
                _json_att : Corde vide   
                Retours : format JSON, contient les informations de commande et analyse directement

           À ce propos, les 5 fonctions sont essentiellement introduites, mais maintenant elles sont publiées uniquement pour apprendre à les utiliser, et ne seront pas attaquées malicieusement, de plus, l’interface du site 12306 change très fréquemment, et l’interface publiée maintenant pourrait être modifiée demain, donc l’important est d’apprendre à récupérer les interfaces et données pertinentes, et d’analyser à partir des données pour obtenir les paramètres et résultats correspondants. Ici, j’utilise principalement Firebug, l’outil d’analyse réseau fourni avec le navigateur Chrome, ainsi que les outils Fiddler et Wireshark, et les instructions pour utiliser les outils associés, il suffit de les chercher sur Internet.
            Enfin, plaignons-nous, le site 12306 utilise la technologie de cache statique CDN, ce qui permet de sélectionner les serveurs correspondants selon l’équilibrage de charge selon les régions, la bande passante et la charge, c’est-à-dire qu’il existe de nombreux serveurs 12306 à travers le pays. Chaque utilisateur peut accéder aux serveurs possibles est différent, mais seulement les pages statiques, js, css et images, etc., mais chaque serveur gardera directement la session partagée, c’est-à-dire si vous vous connectez à l’un des serveurs, sur d’autres serveurs Ce qui précède équivaut aussi à avoir atterri. Il est donc préférable de pouvoir choisir un serveur dynamiquement afin que les temps de cache soient à jour, que le stress soit minimal et que les données soient plus en temps réel. Dans mon implémentation, si vous ne faites pas de requête une seule fois, vous changerez l’adresse IP du serveur une seule fois. Quant à la technologie pertinente, je la révélerai plus tard. Mais le contenu de cet article suffit pour apprendre. Vous pouvez voir l’adresse IP spécifique dans le http://tool.chinaz.com/dns.




Précédent:{:1_3:} { :1_3 :} Journée heureuse
Prochain:Comment js copie-t-il un objet ?
Publié sur 28/09/2017 09:19:34 |
Le patron va-t-il prendre des billets ?
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com