Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 11838|Antwoord: 1

12306 ticket-grabbing softwaregerelateerde interfaces en dataformaten

[Link kopiëren]
Geplaatst op 27-09-2017 10:15:39 | | |

Laten we meteen ter zake komen: hier wil ik het vooral hebben over de interfaces en dataformaten van de huidige 12306-functies. Het is voornamelijk verdeeld in vijf modules: inloggen, contacten verkrijgen, tickets controleren, boeken en onvoltooide bestellingen aanvragen; voor sommige andere interfaces die niet belangrijk zijn, kun je ze direct negeren, zoals het herkennen of de verificatiecode correct is, het aanvragen van het resterende aantal tickets, enzovoort. Dit artikel is geschreven en je kunt het zelf bestuderen als je het nodig hebt.
       1. Inloggen
             Inloggen is vooral bedoeld om de sessie te krijgen en de communicatie met de server te onderhouden. Er zijn twee hoofdstappen om in te loggen
             Vraag eerst de inlogverificatiecode op
                     Methode: GET
                     Interface: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Parameters: kopie, hetzelfde
                     Achterkant: Binaire beeldstroom
             Tweede Login
                    Methode: POST
                    Interface: https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Parameters: 1. loginUserDTO.user_name Gebruikersnaam
                               2. randCode verificatiecode
                               3. userDTO.password wachtwoord
                     Retourneert: json-string, die kan bepalen of de login succesvol is
        2. Contacten maken
                    Methode: GET
                    Interface: https://kyfw.12306.cn/otn/passengers/init
                    Parameters: Geen
                    Return: html-bestand, je kunt er een variabele in vinden, die in json-formaat is en kan worden geparsed in een gebruikersobject
        3. Ticketcontrole
                    Methode: GET
                    Interface: https://kyfw.12306.cn/otn/leftTicket/query?
                    Parameters: leftTicketDTO.train_date: Ticketcontroledatum
                               leftTicketDTO.from_station: Startstation (alfabetische code)
                               leftTicketDTO.to_station: Bestemmingsstation (alfabetcode)
                               purpose_codes:VOLWASSEN
                    Terugkeer: Keert terug naar het JSON-formaat en parseert direct
         4. Reservering
                   De afspraak is verdeeld in 6 stappen, één voor één, die met elkaar verbonden zijn
                   Ten eerste: Pre-indiening
                            Methode: POST
                            Interface: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Parameter: secretStr: verkregen via ticketcontrole (één voor elke trein, en elke keer anders, moet in realtime worden geanalyseerd)
                                      train_date: Boekingsdatum
                                     back_train_date: Terugkeerdatum
                                      tour_flag: DC
                                      purpose_codes:VOLWASSEN
                                      query_from_station_name: Vertrekstation
                                      query_to_station_name: Bestemmingsstation
                                      Ongedefinieerd: een lege string
                           Return: Geeft het JSON-formaat terug om te bepalen of de indiening succesvol is
                    Ten tweede: Haal de bijbehorende parameters op
                            Methode: POST
                            Interface: https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Parameters:
                              _json_att: Lege string
                             Return: html-bestand, nuttig door globalRepeatSubmitToken in de eerste paar regels te parsen en de waarde van de ticketInfoForPassengerForm-variabele van onderaf te krijgen, is in json-formaat, waarvan purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n om zich voor te bereiden op de volgende commits
                    Ten derde: Haal de verificatiecode voor de indiening op
                              Methode: GET
                             Interface: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Parameters:
                                      Geen enkele
                             Return: Geeft de beeldbinaire stroom terug, net als de loginverificatiecode
                     Ten vierde: Controleer of de inzending bevestigd kan worden
                             Methode: POST
                              Interface: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Parameters:
                                       cancel_flag:2
                                       bed_level_order_num:000000000000000000000000000000000
                                       passagierTicketStr: Stoeltype, 0, tickettype, naam, identiteit, telefoon, N (als er meer dan één zijn, gescheiden door een komma)
                                       oldPassengerStr: Naam, ID-type, ID-nummer, gebruikerstype
                                       randCode: Geplande verificatiecode
                                       tour_flag:DC
                                       _json_att: Lege string
                                       REPEAT_SUBMIT_TOKEN: Haal het uit de vorige stap
                              Return: json-formaat om te bepalen of het kan worden ingezet
                    Vijfde: Bevestig de inzending
                                Methode: POST
                                Interface: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Parameters:
   
                                       passagierTicketStr: Stoeltype, 0, tickettype, naam, identiteit, telefoon, N (als er meer dan één zijn, gescheiden door een komma)
                                       oldPassengerStr: Naam, ID-type, ID-nummer, gebruikerstype
                                       randCode: Geplande verificatiecode
                                       purpose_codes: Stap 3 om het te krijgen
                                       key_check_isChange: Ibid
                                       leftTicketStr; Ibid
                                       train_locatio{filter}n; Ibid
                                       REPEAT_SUBMIT_TOKEN: Ibid
                                       _json_att: Lege string   
                               Return: json-formaat, bepaal of de indiening succesvol is, geef de wachttijd terug en roep stap 6 elke bepaalde periode aan om het verwerkingsresultaat terug te geven
                     Zesde: Peiling om de inzendresultaten te verkrijgen
                               Methode: GET
                               Interface: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Parameters:
   
                                       willekeurig: Willekeurige getallen
                                       tourFlag:dc   
                                       REPEAT_SUBMIT_TOKEN: Er is een derde deel om te verkrijgen
                                       _json_att: Lege string   
                               Return: json-formaat, geef de wachttijd terug, als wachttijd kleiner is dan 0, haal dan de orderinformatie orderId op, als deze groter is dan 0, ga door met pollen
          5. Informeer naar onvoltooide bestellingen
                 Methode: POST
                 Interface: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Parameters:
                _json_att: Lege string   
                Retourneert: JSON-formaat, bevat orderinformatie en parseert direct

           Over gesproken, de 5 functies zijn in feite geïntroduceerd, maar nu zijn ze alleen bedoeld om te leren gebruiken, en zullen ze niet kwaadwillig worden aangevallen; bovendien verandert de interface van de 12306-website zeer vaak, en de interface die nu wordt geplaatst kan morgen worden aangepast, dus het belangrijkste is om te leren hoe je relevante interfaces en data kunt verzamelen, en analyseren uit de data om de bijbehorende parameters en resultaten te verkrijgen. Hier gebruik ik vooral firebug, de netwerkanalysetool die bij de chrom-browser zit, evenals de fiddler- en wireshark-tools, en de instructies voor het gebruik van gerelateerde tools, zoek er gewoon op internet naar.
            Tot slot, laten we klagen: de 12306-website gebruikt CDN statische cachingtechnologie, wat leidt tot de selectie van de bijbehorende servers op basis van load balancing in verschillende regio's, bandbreedte en belasting, dat wil zeggen, er zijn veel 12306-servers verspreid over het hele land. Elke gebruiker kan toegang krijgen tot de mogelijke servers zijn verschillend, maar alleen statische pagina's en js, css en afbeeldingen, enzovoort, maar elke server zal de sessie direct gedeeld houden, dat wil zeggen, als je inlogt op een van de servers, op andere servers Het bovenstaande is ook gelijk aan het landen zijn. Het is dus het beste om een server dynamisch te kunnen kiezen zodat cachetijden up-to-date zijn, stress minimaal is en data meer realtime is. In mijn implementatie verander je het server-IP één keer als je niet één query doet. Wat betreft de relevante technologie, zal ik die later onthullen. Maar de inhoud van dit artikel is genoeg om te leren. Je kunt het specifieke IP-adres in de http://tool.chinaz.com/dns zien.




Vorig:{:1_3:} {:1_3:} Gelukkige dag
Volgend:Hoe kopieert JS een object?
Geplaatst op 28-09-2017 09:19:34 |
Gaat de baas kaartjes pakken?
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com