Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 11838|Răspunde: 1

Interfețe și formate de date legate de software-ul de captare a biletelor 12306

[Copiază linkul]
Postat pe 27.09.2017 10:15:39 | | |

Să mergem direct la subiect, aici vreau să vorbesc în principal despre interfețele și formatele de date ale funcțiilor actuale 12306. Este împărțită în principal în cinci module: autentificare, obținerea contactelor, verificarea tichetelor, rezervări și interogarea comenzilor nefinalizate, deoarece pentru unele alte interfețe care nu sunt importante, le poți ignora direct, cum ar fi detectarea codului de verificare corect, solicitarea numărului rămas de tichete etc., acest articol este scris și îl poți studia singur dacă ai nevoie.
       1. Autentificare
             Autentificarea este în principal pentru a obține sesiunea și a menține comunicarea cu serverul. Există doi pași principali pentru a te conecta
             Mai întâi, obține codul de verificare a autentificării
                     Metodă: GET
                     Interfață: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Parametri: copiat, același
                     Spate: Flux binar de imagini
             A doua autentificare
                    Metodă: POST
                    Interfață: https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Parametri: 1. loginUserDTO.user_name Nume de utilizator
                               2. cod de verificare randCode
                               3. parola userDTO.password
                     Returnează: json string, care poate determina dacă autentificarea este reușită
        2. Obține contacte
                    Metodă: GET
                    Interfață: https://kyfw.12306.cn/otn/passengers/init
                    Parametri: Niciunul
                    Return: fișier html, poți găsi o variabilă în el, care este în format json și poate fi analizată într-un obiect utilizator
        3. Verificarea biletelor
                    Metodă: GET
                    Interfață: https://kyfw.12306.cn/otn/leftTicket/query?
                    Parametri: leftTicketDTO.train_date: Data verificării biletelor
                               leftTicketDTO.from_station: Stația de start (cod alfabetic)
                               leftTicketDTO.to_station: Stația de destinație (cod alfabetic)
                               purpose_codes:ADULT
                    Return: Revine la formatul JSON și analizează direct
         4. Rezervare
                   Numirea este împărțită în 6 etape, unul câte unul, interconectate
                   În primul rând: Pre-trimitere
                            Metodă: POST
                            Interfață: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Parametru: secretStr: obținut prin verificarea biletelor (câte unul pentru fiecare tren și diferit de fiecare dată, trebuie analizat în timp real)
                                      train_date: Data rezervării
                                     back_train_date: Data revenirii
                                      tour_flag: dc
                                      purpose_codes:ADULT
                                      query_from_station_name: Stația de plecare
                                      query_to_station_name: Stația de destinație
                                      nedefinit: un șir gol
                           Returnare: Returnează formatul JSON pentru a determina dacă trimiterea este reușită
                    În al doilea rând: Obține parametrii corespunzători
                            Metodă: POST
                            Interfață: https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Parametri:
                              _json_att: Șnur gol
                             Return: fișier html, util la analizarea globalRepeatSubmitToken în primele rânduri și obținerea valorii variabilei ticketInfoForPassengerForm de mai jos, este în format json, din care purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n pentru a se pregăti pentru următoarele commit-uri
                    În al treilea rând: Obține codul de verificare a trimiterii
                              Metodă: GET
                             Interfață: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Parametri:
                                      Niciuna
                             Return: Returnează fluxul binar al imaginii, la fel ca codul de verificare a autentificării
                     În al patrulea rând: Verifică dacă depunerea poate fi confirmată
                             Metodă: POST
                              Interfață: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Parametri:
                                       cancel_flag:2
                                       bed_level_order_num:0000000000000000000000000000000000
                                       passengerTicketStr: Tipul scaunului, 0, tipul biletului, nume, identitate, telefon, N (dacă sunt mai multe, separate printr-o virgulă)
                                       oldPassengerStr: Nume, Tip ID, Număr ID, Tip de utilizator
                                       randCode: Cod de verificare programată
                                       tour_flag:dc
                                       _json_att: Șnur gol
                                       REPEAT_SUBMIT_TOKEN: Ia-l de la pasul anterior
                              Return: format json pentru a determina dacă poate fi angajat
                    În al cincilea rând: Confirmă trimiterea
                                Metodă: POST
                                Interfață: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Parametri:
   
                                       passengerTicketStr: Tipul scaunului, 0, tipul biletului, nume, identitate, telefon, N (dacă sunt mai multe, separate printr-o virgulă)
                                       oldPassengerStr: Nume, Tip ID, Număr ID, Tip de utilizator
                                       randCode: Cod de verificare programată
                                       purpose_codes: Pasul 3 pentru a-l obține
                                       key_check_isChange: Ibid
                                       leftTicketStr; Ibid
                                       train_locatio{filter}n; Ibid
                                       REPEAT_SUBMIT_TOKEN: Ibid
                                       _json_att: Șnur gol   
                               Returnează: format json, determină dacă trimiterea este reușită, returnează timpul de așteptare și apelează pasul 6 la fiecare anumit interval pentru a returna rezultatul procesării
                     Al șaselea rând: Sondaj pentru a obține rezultatele trimiterii
                               Metodă: GET
                               Interfață: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Parametri:
   
                                       aleatoriu: Numere aleatorii
                                       TurneuDrapel: dc   
                                       REPEAT_SUBMIT_TOKEN: Există o a treia parte de obținut
                                       _json_att: Șnur gol   
                               Return: json format, returnează timpul de așteptare, dacă waitTime este mai mic de 0, primește orderId-ul cu informații de comandă, dacă este mai mare de 0, continuă interogarea
          5. Să întrebăm despre comenzi nefinalizate
                 Metodă: POST
                 Interfață: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Parametri:
                _json_att: Șnur gol   
                Returnează: format JSON, conține informații despre ordine și analizează direct

           Apropo, cele 5 funcții sunt practic introduse, dar acum sunt postate doar pentru a învăța să le folosească și nu vor fi atacate cu rău intenție, mai mult, interfața site-ului 12306 se schimbă foarte frecvent, iar interfața postată acum ar putea fi schimbată mâine, așa că important este să înveți cum să preiei interfețele și datele relevante și să analizezi din date pentru a obține parametrii corespunzători și rezultatele corespunzătoare. Aici folosesc în principal Firebug, instrumentul de analiză a rețelei care vine cu browserul Chrome, precum și instrumentele Fiddler și Wireshark, și instrucțiunile pentru folosirea uneltelor conexe, caută-le pe Internet.
            În final, să ne plângem, site-ul 12306 folosește tehnologia de cache statică CDN, ceea ce va duce la selecția serverelor corespunzătoare în funcție de echilibrarea sarcinii în diferite regiuni, lățime de bandă și încărcare, adică există multe servere 12306 în toată țara. Fiecare utilizator poate accesa serverele posibile sunt diferite, dar doar pagini statice și js, css și poze etc., însă fiecare server va păstra direct sesiunea partajată, adică dacă te conectezi pe unul dintre servere, pe alte servere Cele de mai sus sunt echivalente și cu a fi aterizat. Așadar, cel mai bine este să poți alege un server dinamic, astfel încât timpii de cache să fie actualizați, stresul să fie minim și datele să fie mai în timp real. În implementarea mea, dacă nu interogezi o singură dată, vei schimba IP-ul serverului o singură dată. În ceea ce privește tehnologia relevantă, o voi dezvălui mai târziu. Dar conținutul acestui articol este suficient pentru a învăța. Poți vedea adresa IP specifică în http://tool.chinaz.com/dns.




Precedent:{:1_3:} {:1_3:} Zi fericită
Următor:Cum copiază JS un obiect?
Postat pe 28.09.2017 09:19:34 |
Șeful o să ia bilete?
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com