Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 11838|Antwort: 1

12306 Ticketgrabbing-Software-bezogene Schnittstellen und Datenformate

[Link kopieren]
Veröffentlicht am 27.09.2017 10:15:39 | | |

Kommen wir direkt zur Sache: Hier möchte ich hauptsächlich über die Schnittstellen und Datenformate der aktuellen 12306-Funktionen sprechen. Es ist hauptsächlich in fünf Module unterteilt: Login, Kontaktaufnahme, Ticketchecken, Buchung und Abfrage unfertiger Bestellungen. Bei einigen anderen Schnittstellen, die nicht wichtig sind, kann man sie direkt ignorieren, wie zum Beispiel die Erkennung des Verifizierungscodes, das Anfordern der verbleibenden Anzahl der Tickets usw.; dieser Artikel ist ausgeschrieben, und man kann ihn selbst studieren, falls nötig.
       1. Einloggen
             Login dient hauptsächlich dazu, die Sitzung zu empfangen und die Kommunikation mit dem Server aufrechtzuerhalten. Es gibt zwei Hauptschritte, um sich einzuloggen.
             Erstens, holen Sie sich den Login-Verifizierungscode
                     Methode: GET
                     Benutzeroberfläche: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Parameter: kopiert, gleich
                     Rückseite: Binärbildstrom
             Zweiter Login
                    Methode: POST
                    Benutzeroberfläche: https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Parameter: 1. loginUserDTO.user_name Benutzername
                               2. randCode-Verifizierungscode
                               3. userDTO.password-Passwort
                     Gibt den json-String zurück, der bestimmen kann, ob der Login erfolgreich ist
        2. Kontakte knüpfen
                    Methode: GET
                    Benutzeroberfläche: https://kyfw.12306.cn/otn/passengers/init
                    Parameter: Keine
                    Return: html-Datei, du kannst darin eine Variable finden, die im JSON-Format ist und in ein Benutzerobjekt geparst werden kann
        3. Ticketkontrolle
                    Methode: GET
                    Benutzeroberfläche: https://kyfw.12306.cn/otn/leftTicket/query?
                    Parameter: leftTicketDTO.train_date: Ticketprüfungsdatum
                               leftTicketDTO.from_station: Startstation (alphabetischer Code)
                               leftTicketDTO.to_station: Zielstation (Alphabet-Code)
                               purpose_codes:ERWACHSENER
                    Rückkehr: Kehrt zum JSON-Format zurück und parst direkt
         4. Reservierung
                   Die Ernennung ist in sechs Schritte unterteilt, nacheinander, die miteinander verknüpft sind
                   Erstens: Vorababgabe
                            Methode: POST
                            Benutzeroberfläche: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Parameter: secretStr: Erhalten durch die Ticketkontrolle (jeweils eine für jeden Zug, jedes Mal unterschiedlich, muss in Echtzeit analysiert werden)
                                      train_date: Buchungstermin
                                     back_train_date: Rückgabedatum
                                      tour_flag: DC
                                      purpose_codes:ERWACHSENER
                                      query_from_station_name: Abflugstation
                                      query_to_station_name: Zielbahnhof
                                      undefiniert: eine leere Zeichenkette
                           Rückgabe: Gibt das JSON-Format zurück, um zu bestimmen, ob die Einreichung erfolgreich ist
                    Zweitens: Erhalten Sie die entsprechenden Parameter
                            Methode: POST
                            Benutzeroberfläche: https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Parameter:
                              _json_att: Leere Schnur
                             Return: html-Datei, nützlich unter dem Parsen von globalRepeatSubmitToken in den ersten Zeilen und dem Erhalten des Werts der ticketInfoForPassengerForm-Variable von unten, ist im JSON-Format, von dem purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n zur Vorbereitung auf die folgenden Commits
                    Drittens: Holen Sie sich den Verifizierungscode für die Einreichung
                              Methode: GET
                             Benutzeroberfläche: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Parameter:
                                      Nichts
                             Rückgabe: Gibt den Bild-Binärstrom zurück, genau wie der Login-Verifizierungscode
                     Viertens: Überprüfe, ob die Einreichung bestätigt werden kann
                             Methode: POST
                              Benutzeroberfläche: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Parameter:
                                       cancel_flag:2
                                       bed_level_order_num:000000000000000000000000000000000
                                       passageTicketStr: Sitztyp, 0, Tickettyp, Name, Identität, Telefon, N (wenn es mehr als einen gibt, getrennt durch ein Komma)
                                       oldPassengerStr: Name, ID-Typ, ID-Nummer, Benutzertyp
                                       randCode: Geplanter Verifizierungscode
                                       tour_flag:DC
                                       _json_att: Leere Schnur
                                       REPEAT_SUBMIT_TOKEN: Hol es aus dem vorherigen Schritt
                              Rückgabe: JSON-Format, um zu bestimmen, ob es eingebracht werden kann
                    Fünftens: Einreichung bestätigen
                                Methode: POST
                                Benutzeroberfläche: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Parameter:
   
                                       passageTicketStr: Sitztyp, 0, Tickettyp, Name, Identität, Telefon, N (wenn es mehr als einen gibt, getrennt durch ein Komma)
                                       oldPassengerStr: Name, ID-Typ, ID-Nummer, Benutzertyp
                                       randCode: Geplanter Verifizierungscode
                                       purpose_codes: Schritt 3, um es zu bekommen
                                       key_check_isChange: Ebd.
                                       leftTicketStr; Ebd.
                                       train_locatio{filter}n; Ebd.
                                       REPEAT_SUBMIT_TOKEN: Ebd.
                                       _json_att: Leere Schnur   
                               Rückgabe: json-Format, bestimmen, ob die Einreichung erfolgreich ist, die Wartezeit zurückgeben und Schritt 6 in jeder bestimmten Zeit aufrufen, um das Verarbeitungsergebnis zurückzugeben
                     Sechstens: Umfrage zur Erteilung der Einreichungsergebnisse
                               Methode: GET
                               Benutzeroberfläche: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Parameter:
   
                                       zufällig: Zufallszahlen
                                       tourFlag:dc   
                                       REPEAT_SUBMIT_TOKEN: Es gibt noch einen dritten Teil zu erlangen
                                       _json_att: Leere Schnur   
                               Zurückgeben: json-Format, die Wartezeit zurückgeben, wenn die Wartezeit kleiner als 0 ist, die Orderinformation orderId erhalten, wenn sie größer als 0 ist, weiter abfragen
          5. Erkundige dich nach unvollendeten Bestellungen
                 Methode: POST
                 Benutzeroberfläche: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Parameter:
                _json_att: Leere Schnur   
                Gibt zurück: JSON-Format, enthält Bestellinformationen und parst direkt

           Apropos, die 5 Funktionen wurden im Grunde eingeführt, aber jetzt sind sie nur zum Lernen der Nutzung verfügbar und werden nicht böswillig angegriffen; außerdem ändert sich die Benutzeroberfläche der 12306-Website sehr häufig, und die jetzt veröffentlichte Oberfläche könnte morgen geändert werden, daher ist es wichtig, zu lernen, wie man relevante Schnittstellen und Daten abnimmt und aus den Daten analysiert, um die entsprechenden Parameter und Ergebnisse zu erhalten. Hier nutze ich hauptsächlich firebug, das Netzwerkanalyse-Tool mit dem Chrom-Browser, sowie die Fiddler- und Wireshark-Tools und die Anleitungen zur Nutzung verwandter Tools – such einfach im Internet danach.
            Abschließend, beschweren wir uns: Die 12306-Website verwendet CDN-Static-Caching-Technologie, was dazu führt, dass die entsprechenden Server entsprechend der Lastverteilung in verschiedenen Regionen, Bandbreite und Last ausgewählt werden, das heißt, es gibt viele 12306-Server im ganzen Land. Jeder Nutzer kann auf die möglichen Server zugreifen, aber nur statische Seiten und JS, CSS und Bilder usw., aber jeder Server hält die Sitzung direkt geteilt, das heißt, wenn man sich auf einem Server auf anderen Servern anmeldet. Das oben Genannte entspricht ebenfalls einer Landung. Deshalb ist es am besten, einen Server dynamisch auswählen zu können, damit die Cache-Zeiten aktuell sind, der Stress minimal ist und die Daten in Echtzeit sind. In meiner Implementierung ändert man die Server-IP einmal, wenn man nicht einmal abfragt. Was die relevante Technologie angeht, werde ich sie später verraten. Aber der Inhalt dieses Artikels reicht zum Lernen aus. Man kann die genaue IP-Adresse im http://tool.chinaz.com/dns sehen.




Vorhergehend:{:1_3:} {:1_3:} Glücklicher Tag
Nächster:Wie kopiert JS ein Objekt?
Veröffentlicht am 28.09.2017 09:19:34 |
Wird der Chef die Tickets holen?
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com