Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 11838|Odpowiedź: 1

Interfejsy i formaty danych do pobierania zgłoszeń 12306

[Skopiuj link]
Opublikowano 27.09.2017 10:15:39 | | |

Przejdźmy od razu do sedna, tutaj głównie chcę opowiedzieć o interfejsach i formatach danych obecnych funkcji 12306. Jest głównie podzielony na pięć modułów: logowanie, zdobywanie kontaktów, sprawdzanie zgłoszeń, rezerwacja i wysyłanie zapytań o niedokończone zamówienia, a w przypadku innych interfejsów, które nie są istotne, można je bezpośrednio zignorować, np. wykrywanie poprawności kodu weryfikacyjnego, żądanie pozostałej liczby zgłoszeń itp. Ten artykuł jest napisany i możesz go samodzielnie przeanalizować, jeśli potrzebujesz.
       1. Zaloguj się
             Logowanie służy głównie do odebrania sesji i utrzymania komunikacji z serwerem. Są dwa główne kroki logowania
             Najpierw zdobądź kod weryfikacyjny logowania
                     Metoda: GET
                     Interfejs: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Parametry: kopiuję, to samo
                     Tył: Strumień obrazów binarnych
             Drugie logowanie
                    Metoda: POST
                    Interfejs: https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Parametry: 1. loginUserDTO.user_name Nazwa użytkownika
                               2. Kod weryfikacyjny randCode
                               3. hasło userDTO.password
                     Zwraca: ciąg json, który może określić, czy logowanie jest skuteczne
        2. Zdobądź kontakty kontaktowe
                    Metoda: GET
                    Interfejs: https://kyfw.12306.cn/otn/passengers/init
                    Parametry: brak
                    Return: plik html, możesz znaleźć zmienną w formacie json, którą można parsować do obiektu użytkownika
        3. Sprawdzanie biletów
                    Metoda: GET
                    Interfejs: https://kyfw.12306.cn/otn/leftTicket/query?
                    Parametry: leftTicketDTO.train_date: Data sprawdzenia biletu
                               leftTicketDTO.from_station: Stacja startowa (kod alfabetyczny)
                               leftTicketDTO.to_station: Stacja docelowa (kod alfabetowy)
                               purpose_codes: DOROSŁY
                    Powrót: Powraca do formatu JSON i analizuje bezpośrednio
         4. Rezerwacja
                   Termin jest podzielony na 6 etapów, jeden po drugim, powiązanych ze sobą
                   Po pierwsze: Wstępne zgłoszenie
                            Metoda: POST
                            Interfejs: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Parametr: secretStr: uzyskany z sprawdzania biletów (jeden dla każdego pociągu, za każdym razem inny, musi być analizowany w czasie rzeczywistym)
                                      train_date: Data rezerwacji
                                     back_train_date: Data zwrotu
                                      tour_flag: DC
                                      purpose_codes: DOROSŁY
                                      query_from_station_name: Stacja odlotu
                                      query_to_station_name: Stacja docelowa
                                      niezdefiniowany: pusty ciąg znaków
                           Return: Przywraca format JSON, aby sprawdzić, czy zgłoszenie jest pomyślne
                    Po drugie: Uzyskaj odpowiednie parametry
                            Metoda: POST
                            Interfejs: https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Parametry:
                              _json_att: Pusty ciąg
                             Return: plik html, przydatny przy parsowaniu globalRepeatSubmitToken w pierwszych linijkach i uzyskaniu wartości zmiennej ticketInfoForPassengerForm od poniżej, jest w formacie json, z którego purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n przygotowując się do następujących commitów
                    Po trzecie: Pobierz kod weryfikacyjny zgłoszenia
                              Metoda: GET
                             Interfejs: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Parametry:
                                      Brak
                             Return: Zwraca binarny strumień obrazu, podobnie jak kod weryfikacyjny logowania
                     Po czwarte: Sprawdź, czy zgłoszenie można potwierdzić
                             Metoda: POST
                              Interfejs: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Parametry:
                                       cancel_flag:2
                                       bed_level_order_num:00000000000000000000000000000000000000
                                       passengerTicketStr: Typ miejsca, 0, typ biletu, imię i nazwisko, tożsamość, telefon, N (jeśli jest ich więcej, oddzielone przecinkem)
                                       oldPassengerStr: Imię, typ ID, Numer ID, Typ użytkownika
                                       randCode: Kod zaplanowanej weryfikacji
                                       tour_flag:dc
                                       _json_att: Pusty ciąg
                                       REPEAT_SUBMIT_TOKEN: Zrób to z poprzedniego kroku
                              Return: json format, aby określić, czy można go zatwierdzać
                    Po piąte: Potwierdź zgłoszenie
                                Metoda: POST
                                Interfejs: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Parametry:
   
                                       passengerTicketStr: Typ miejsca, 0, typ biletu, imię i nazwisko, tożsamość, telefon, N (jeśli jest ich więcej, oddzielone przecinkem)
                                       oldPassengerStr: Imię, typ ID, Numer ID, Typ użytkownika
                                       randCode: Kod zaplanowanej weryfikacji
                                       purpose_codes: Krok 3, aby to zdobyć
                                       key_check_isChange: Ibid
                                       leftTicketStr; Ibid
                                       train_locatio{filter}n; Ibid
                                       REPEAT_SUBMIT_TOKEN: Ibid
                                       _json_att: Pusty ciąg   
                               Wróć: json format, sprawdź, czy zgłoszenie jest pomyślne, zwróć czas oczekiwania i wywołaj krok 6 co określony okres, aby zwrócić wynik przetwarzania
                     Szóste: Ankieta, aby uzyskać wyniki zgłoszeń
                               Metoda: GET
                               Interfejs: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Parametry:
   
                                       losowe: Liczby losowe
                                       tourFlag:dc   
                                       REPEAT_SUBMIT_TOKEN: Jest trzecia część do zdobycia
                                       _json_att: Pusty ciąg   
                               Wróć: json format, zwróć czas oczekiwania, jeśli waitTime jest mniejszy niż 0, pobierz order information orderId, jeśli jest większy niż 0, kontynuuj ankietowanie
          5. Pytaj o niedokończone zamówienia
                 Metoda: POST
                 Interfejs: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Parametry:
                _json_att: Pusty ciąg   
                Zwraca się: format JSON, zawiera informacje o kolejności i analizuje bezpośrednio

           A propos, 5 funkcji zostało zasadniczo wprowadzonych, ale teraz jest publikowane tylko po to, by nauczyć się ich używać i nie będzie złośliwie atakowane, ponadto interfejs strony 12306 zmienia się bardzo często, a interfejs opublikowany teraz może zostać zmieniony jutro, więc ważne jest, aby nauczyć się pobierać odpowiednie interfejsy i dane oraz analizować dane, aby uzyskać odpowiednie parametry i wyniki. Tutaj głównie korzystam z Firebug, narzędzia do analizy sieciowej dołączonego do przeglądarki Chrome, a także narzędzi Fiddler i Wireshark oraz instrukcji obsługi powiązanych narzędzi, wystarczy poszukać ich w Internecie.
            Na koniec narzekamy, strona 12306 korzysta z technologii statycznej pamięci podręcznej CDN, co prowadzi do wyboru odpowiadających serwerów zgodnie z równowagą obciążenia w różnych regionach, przepustowości i obciążenia, czyli jest wiele serwerów 12306 w całym kraju. Każdy użytkownik może uzyskać dostęp do różnych serwerów, ale tylko statyczne strony, js, css, obrazy itd., ale każdy serwer bezpośrednio utrzymuje sesję współdzieloną, czyli jeśli zalogujesz się na jeden z serwerów, na innych serwerach Powyższe jest również równoważne z lądowaniem. Dlatego najlepiej jest móc wybierać serwer dynamicznie, aby czasy pamięci podręcznej były aktualne, stres minimalny, a dane bardziej w czasie rzeczywistym. W mojej implementacji, jeśli nie wykonasz zapytania raz, zmienisz adres IP serwera raz. Jeśli chodzi o odpowiednią technologię, ujawnię ją później. Ale treść tego artykułu wystarcza do nauki. Konkretny adres IP możesz zobaczyć w http://tool.chinaz.com/dns.




Poprzedni:{:1_3:} {:1_3:} Szczęśliwego dnia
Następny:Jak js kopiuje obiekt?
Opublikowano 28.09.2017 09:19:34 |
Czy szef zamierza zabrać bilety?
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com