Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 11838|Svar: 1

12306 billetgribende software-relaterede grænseflader og dataformater

[Kopier link]
Opslået på 27/09/2017 10.15.39 | | |

Lad os gå direkte til sagen, her vil jeg primært tale om grænsefladerne og dataformaterne for de nuværende 12306-funktioner. Det er hovedsageligt opdelt i fem moduler: login, få kontakter, tjekke billetter, booking og forespørge ufærdige ordrer; for nogle andre grænseflader, der ikke er vigtige, kan du direkte ignorere dem, såsom at opdage, om verifikationskoden er korrekt, anmode om det resterende antal tickets osv., denne artikel er skrevet ned, og du kan selv studere den, hvis du har brug for det.
       1. Log ind
             Login er primært for at få sessionen og opretholde kommunikationen med serveren. Der er to hovedtrin for at logge ind
             Først, få login-verifikationskoden
                     Metode: GET
                     Interface: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Parametre: kopi, det samme
                     Bagside: Binær billedstrøm
             Anden login
                    Metode: POST
                    Interface: https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Parametre: 1. loginUserDTO.user_name Brugernavn
                               2. randCode-verifikationskode
                               3. userDTO.password adgangskode
                     Returnerer: json-streng, som kan afgøre, om login lykkes
        2. Få kontakter
                    Metode: GET
                    Interface: https://kyfw.12306.cn/otn/passengers/init
                    Parametre: Ingen
                    Return: html-fil, du kan finde en variabel i den, som er i json-format og kan parses til et brugerobjekt
        3. Ticketkontrol
                    Metode: GET
                    Interface: https://kyfw.12306.cn/otn/leftTicket/query?
                    Parametre: leftTicketDTO.train_date: Ticketcheckdato
                               leftTicketDTO.from_station: Startstation (alfabetisk kode)
                               leftTicketDTO.to_station: Destinationsstation (alfabetkode)
                               purpose_codes:VOKSEN
                    Return: Vender tilbage til JSON-format og parser direkte
         4. Reservation
                   Udnævnelsen er opdelt i 6 trin, ét ad gangen, som er indbyrdes forbundne
                   Først: Forudindsendelse
                            Metode: POST
                            Interface: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Parameter: secretStr: opnået ved billetkontrol (én for hvert tog, og forskellig hver gang, skal analyseres i realtid)
                                      train_date: Bookingdato
                                     back_train_date: Returdato
                                      tour_flag: DC
                                      purpose_codes:VOKSEN
                                      query_from_station_name: Afgangsstation
                                      query_to_station_name: Destinationsstation
                                      Udefineret: en tom streng
                           Return: Returnerer JSON-formatet for at afgøre, om indsendelsen er succesfuld
                    For det andet: Få de tilsvarende parametre
                            Metode: POST
                            Interface: https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Parametre:
                              _json_att: Tom streng
                             Return: html-fil, nyttig under parsing af globalRepeatSubmitToken i de første par linjer og henter værdien af ticketInfoForPassengerForm-variablen nedenunder, er i json-format, hvorfra purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n for at forberede følgende commits
                    For det tredje: Få bekræftelseskoden for indsendelsen
                              Metode: GET
                             Interface: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Parametre:
                                      Ingen
                             Return: Returnerer billed-binærstrømmen, ligesom login-verifikationskoden
                     For det fjerde: Tjek om indsendelsen kan bekræftes
                             Metode: POST
                              Interface: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Parametre:
                                       cancel_flag:2
                                       bed_level_order_num:00000000000000000000000000000000
                                       passagerTicketStr: Sædetype, 0, billettype, navn, identitet, telefon, N (hvis der er flere, adskilt af et komma)
                                       oldPassengerStr: Navn, ID-type, ID-nummer, brugertype
                                       randCode: Planlagt verifikationskode
                                       tour_flag:dc
                                       _json_att: Tom streng
                                       REPEAT_SUBMIT_TOKEN: Hent det fra det forrige trin
                              Return: json-format for at afgøre, om det kan committes
                    Femte: Bekræft indsendelse
                                Metode: POST
                                Interface: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Parametre:
   
                                       passagerTicketStr: Sædetype, 0, billettype, navn, identitet, telefon, N (hvis der er flere, adskilt af et komma)
                                       oldPassengerStr: Navn, ID-type, ID-nummer, brugertype
                                       randCode: Planlagt verifikationskode
                                       purpose_codes: Trin 3 for at få det
                                       key_check_isChange: Ibid
                                       leftTicketStr; Ibid
                                       train_locatio{filter}n; Ibid
                                       REPEAT_SUBMIT_TOKEN: Ibid
                                       _json_att: Tom streng   
                               Returner: json-format, afgør om indsendelsen er succesfuld, returner ventetiden, og kald trin 6 hver bestemt periode for at returnere behandlingsresultatet
                     For det sjette: Afstemning for at få resultaterne af indsendelserne
                               Metode: GET
                               Interface: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Parametre:
   
                                       tilfældige: Tilfældige tal
                                       tourFlag:dc   
                                       REPEAT_SUBMIT_TOKEN: Der er en tredje del, der skal opnås
                                       _json_att: Tom streng   
                               Return: json-format, returner ventetiden, hvis ventetiden er mindre end 0, hent ordreinformationen orderId, hvis den er større end 0, fortsæt polling
          5. Forespørg om ufærdige ordrer
                 Metode: POST
                 Interface: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Parametre:
                _json_att: Tom streng   
                Returnerer: JSON-format, indeholder ordreinformation og parser direkte

           Når vi taler om det, er de 5 funktioner grundlæggende introduceret, men nu er det kun lagt op for at lære at bruge det, og det vil ikke blive ondsindet angrebet; desuden ændrer brugerfladen på 12306-hjemmesiden sig meget ofte, og den nuværende grænseflade kan blive ændret i morgen, så det vigtige er at lære at hente relevante grænseflader og data og analysere ud fra dataene for at opnå de tilsvarende parametre og resultater. Her bruger jeg primært Firebug, netværksanalyseværktøjet der følger med Chrom-browseren, samt Fiddler- og Wireshark-værktøjerne og instruktionerne til brug af relaterede værktøjer, bare søg efter det på internettet.
            Lad os endelig klage, 12306-hjemmesiden bruger CDN statisk caching-teknologi, hvilket vil føre til valg af tilsvarende servere baseret på load balancing i forskellige regioner, båndbredde og belastning, det vil sige, der er mange 12306-servere over hele landet. Hver bruger kan tilgå de mulige servere, der er forskellige, men kun statiske sider og js, css og billeder osv., men hver server vil direkte dele sessionen, altså hvis du logger ind på en af serverne, på andre servere Ovenstående svarer også til at have landet. Så det er bedst at kunne vælge en server dynamisk, så cache-tiderne er opdaterede, stressen minimal, og dataene er mere realtidsorienterede. I min implementering, hvis du ikke forespørger én gang, ændrer du serverens IP én gang. Hvad angår den relevante teknologi, vil jeg afsløre den senere. Men indholdet af denne artikel er nok til at lære. Du kan se den specifikke IP-adresse i http://tool.chinaz.com/dns.




Tidligere:{:1_3:} {:1_3:} Glad dag
Næste:Hvordan kopierer js et objekt?
Opslået på 28/09/2017 09.19.34 |
Skal chefen hente billetter?
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com