Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 11838|Svar: 1

12306 biljettinsamlingsprogramvara relaterade gränssnitt och dataformat

[Kopiera länk]
Publicerad på 2017-09-27 10:15:39 | | |

Låt oss gå rakt på sak, här vill jag främst prata om gränssnitten och dataformaten för de nuvarande 12306-funktionerna. Den är huvudsakligen indelad i fem moduler: inloggning, att få kontakter, att kontrollera ärenden, boka och att skicka ofullständiga beställningar, eftersom du för vissa andra gränssnitt som inte är viktiga kan ignorera dem direkt, som att upptäcka om verifieringskoden är korrekt, begära det återstående antalet ärenden, etc., denna artikel är nedskriven och du kan studera den själv om du behöver.
       1. Logga in
             Inloggning är främst för att få sessionen och upprätthålla kommunikationen med servern. Det finns två huvudsteg för att logga in
             Först, skaffa inloggningsverifieringskoden
                     Metod: GET
                     Gränssnitt: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Parametrar: kopiera, samma
                     Bak: Binära bildström
             Andra inloggningen
                    Metod: POST
                    Gränssnitt: https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Parametrar: 1. loginUserDTO.user_name Användarnamn
                               2. randCode-verifieringskod
                               3. userDTO.password-lösenord
                     Returnerar: json-sträng, som kan avgöra om inloggningen lyckas
        2. Få kontakter
                    Metod: GET
                    Gränssnitt: https://kyfw.12306.cn/otn/passengers/init
                    Parametrar: Inga
                    Return: html-fil, du kan hitta en variabel i den, som är i json-format och kan parsas till ett användarobjekt
        3. Biljettkontroll
                    Metod: GET
                    Gränssnitt: https://kyfw.12306.cn/otn/leftTicket/query?
                    Parametrar: leftTicketDTO.train_date: Datum för biljettkontroll
                               leftTicketDTO.from_station: Startstation (alfabetisk kod)
                               leftTicketDTO.to_station: Destinationsstation (alfabetskod)
                               purpose_codes:VUXEN
                    Return: Återgår till JSON-format och parsar direkt
         4. Reservation
                   Utnämningen är uppdelad i sex steg, ett i taget, som är sammanlänkade
                   Först: Förinlämning
                            Metod: POST
                            Gränssnitt: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Parameter: secretStr: erhålls genom biljettkontroll (en för varje tåg, och olika varje gång, måste tolkas i realtid)
                                      train_date: Bokningsdatum
                                     back_train_date: Återvändningsdatum
                                      tour_flag: DC
                                      purpose_codes:VUXEN
                                      query_from_station_name: Avgångsstation
                                      query_to_station_name: Destinationsstation
                                      Odefinierad: en tom sträng
                           Returnera: Returnerar JSON-formatet för att avgöra om inskicket är framgångsrikt
                    För det andra: Hämta motsvarande parametrar
                            Metod: POST
                            Gränssnitt: https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Parametrar:
                              _json_att: Tom sträng
                             Return: html-fil, användbar under parsing av globalRepeatSubmitToken i de första raderna, och att hämta värdet av variabeln ticketInfoForPassengerForm underifrån, är i json-format, varifrån purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n för att förbereda följande commits
                    För det tredje: Skaffa verifieringskoden för inlämningen
                              Metod: GET
                             Gränssnitt: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Parametrar:
                                      Inga
                             Returnera: Returnerar bildbinära strömmen, precis som inloggningsverifieringskoden
                     För det fjärde: Kontrollera om inskicket kan bekräftas
                             Metod: POST
                              Gränssnitt: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Parametrar:
                                       cancel_flag:2
                                       bed_level_order_num:0000000000000000000000000000000000
                                       passagerarTicketStr: Sätestyp, 0, biljetttyp, namn, identitet, telefonnummer, N (om det finns flera, separerat med kommatecken)
                                       oldPassengerStr: Namn, ID-typ, ID-nummer, användartyp
                                       randCode: Schemalagd verifieringskod
                                       tour_flag:DC
                                       _json_att: Tom sträng
                                       REPEAT_SUBMIT_TOKEN: Hämta det från föregående steg
                              Return: json-format för att avgöra om den kan göras
                    Femte: Bekräfta inlämning
                                Metod: POST
                                Gränssnitt: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Parametrar:
   
                                       passagerarTicketStr: Sätestyp, 0, biljetttyp, namn, identitet, telefonnummer, N (om det finns flera, separerat med kommatecken)
                                       oldPassengerStr: Namn, ID-typ, ID-nummer, användartyp
                                       randCode: Schemalagd verifieringskod
                                       purpose_codes: Steg 3 för att få det
                                       key_check_isChange: Ibid
                                       leftTicketStr; Ibid
                                       train_locatio{filter}n; Ibid
                                       REPEAT_SUBMIT_TOKEN: Ibid
                                       _json_att: Tom sträng   
                               Returnera: json-format, avgör om inskicket lyckas, returnera väntetiden och anropa steg 6 varje viss period för att returnera bearbetningsresultatet
                     Sjätte: Omröstning för att få resultaten från inskickningen
                               Metod: GET
                               Gränssnitt: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Parametrar:
   
                                       slumpmässiga: Slumpmässiga nummer
                                       tourFlag:dc   
                                       REPEAT_SUBMIT_TOKEN: Det finns en tredje del att skaffa
                                       _json_att: Tom sträng   
                               Returnera: json-format, returnera väntetiden, om väntetiden är mindre än 0, hämta orderinformationen orderId, om den är större än 0, fortsätt polling
          5. Fråga om ofullständiga beställningar
                 Metod: POST
                 Gränssnitt: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Parametrar:
                _json_att: Tom sträng   
                Returnerar: JSON-format, innehåller orderinformation och tolkar direkt

           På tal om det, de fem funktionerna är i princip introducerade, men nu är de bara publicerade för att lära sig använda och kommer inte att attackeras illvilligt, dessutom ändras gränssnittet på 12306-webbplatsen mycket ofta, och gränssnittet som publiceras nu kan ändras imorgon, så det viktiga är att lära sig hur man hämtar relevanta gränssnitt och data, och analyserar från data för att få motsvarande parametrar och resultat. Här använder jag främst Firebug, nätverksanalysverktyget som följer med Chrom-webbläsaren, samt Fiddler- och Wireshark-verktygen, och instruktionerna för att använda relaterade verktyg, leta bara efter det på Internet.
            Slutligen, låt oss klaga, 12306-webbplatsen använder CDN-statisk cacheteknik, vilket leder till att motsvarande servrar väljs utifrån lastbalansering i olika regioner, bandbredd och belastning, det vill säga det finns många 12306-servrar över hela landet. Varje användare kan komma åt de möjliga servrarna är olika, men bara statiska sidor och js, css och bilder, etc., men varje server kommer att direkt hålla sessionen delad, det vill säga om du loggar in på en av servrarna, på andra servrar Ovanstående är också likvärdigt med att ha landat. Så det är bäst att kunna välja server dynamiskt så att cache-tiderna är uppdaterade, stressen minimal och datan mer realtidsinriktad. I min implementation, om du inte gör en förfrågan, ändrar du serverns IP en gång. När det gäller relevant teknik kommer jag att avslöja den senare. Men innehållet i denna artikel räcker för att lära sig. Du kan se den specifika IP-adressen i http://tool.chinaz.com/dns.




Föregående:{:1_3:} {:1_3:} Lycklig dag
Nästa:Hur kopierar js ett objekt?
Publicerad på 2017-09-28 09:19:34 |
Kommer chefen att ta biljetter?
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com