Ķeramies tieši pie jautājuma, šeit es galvenokārt vēlos runāt par pašreizējo 12306 funkciju saskarnēm un datu formātiem. Tas galvenokārt ir sadalīts piecos moduļos: pieteikšanās, kontaktu iegūšana, biļešu pārbaude, rezervēšana un nepabeigtu pasūtījumu vaicāšana, tāpat kā dažām citām saskarnēm, kas nav svarīgas, jūs varat tos tieši ignorēt, piemēram, noteikt, vai verifikācijas kods ir pareizs, pieprasīt atlikušo biļešu skaitu utt., Šis raksts ir uzrakstīts, un jūs varat to izpētīt pats, ja jums tas ir nepieciešams. 1. Pieteikties Pieteikšanās galvenokārt ir sesijas iegūšana un saziņas uzturēšana ar serveri. Lai pieteiktos, ir divi galvenie soļi Vispirms iegūstiet pieteikšanās verifikācijas kodu Metode: GET Interfeiss: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand& Parametri: kopēt, tas pats Atpakaļ: Bināro attēlu straume Otrā pieteikšanās Metode: POST Interfeiss: https://kyfw.12306.cn/otn/login/loginAysnSuggest Parametri: 1. loginUserDTO.user_name Lietotājvārds 2. randCode verifikācijas kods 3. lietotājsDTO.parole parole Atgriežas: json virkne, kas var noteikt, vai pieteikšanās ir veiksmīga 2. Kontaktpersonu iegūšana Metode: GET Interfeiss: https://kyfw.12306.cn/otn/passengers/init Parametri: Nav Atgriešanās: html fails, tajā var atrast mainīgo, kas ir json formātā un to var parsēt lietotāja objektā 3. Biļešu pārbaude Metode: GET Interfeiss: https://kyfw.12306.cn/otn/leftTicket/query? Parametri: leftTicketDTO.train_date: Biļešu pārbaudes datums leftTicketDTO.from_station: Starta stacija (alfabētiskais kods) leftTicketDTO.to_station: Galamērķa stacija (alfabēta kods) purpose_codes:PIEAUGUŠAIS Atgriezties: atgriežas JSON formātā un tieši parsē 4. Rezervācija Iecelšana ir sadalīta 6 soļos, pa vienam, savstarpēji saistīti Pirmais: Iepriekšēja iesniegšana Metode: POST Interfeiss: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest Parametrs: secretStr: iegūts no biļešu pārbaudes (viens katram vilcienam un katru reizi atšķirīgs, ir jāanalizē reāllaikā) train_date: Rezervācijas datums back_train_date: Atgriešanās datums tour_flag: līdzstrāva purpose_codes:PIEAUGUŠAIS query_from_station_name: Izlidošanas stacija query_to_station_name: Galamērķa stacija nedefinēts: tukša virkne Atgriezt. Atgriež JSON formātu, lai noteiktu, vai iesniegšana ir sekmīga Otrkārt: iegūstiet atbilstošos parametrus Metode: POST Interfeiss: https://kyfw.12306.cn/otn/confirmPassenger/initDc Parametri: _json_att: Tukša virkne Atgriešanās: html fails, noderīgs, parsējot globalRepeatSubmitToken pirmajās rindās un iegūstot mainīgā ticketInfoForPassengerForm vērtību no apakšas, ir json formātā, no kura purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n sagatavoties šādām saistībām Treškārt: iegūstiet iesniegšanas verifikācijas kodu Metode: GET Interfeiss: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp& Parametri: Nav Atgriezties: atgriež attēla bināro straumi, tāpat kā pieteikšanās verifikācijas kodu Ceturtkārt: pārbaudiet, vai iesniegumu var apstiprināt Metode: POST Interfeiss: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo Parametri: cancel_flag:2 bed_level_order_num:00000000000000000000000000000000000000 passengerTicketStr: sēdvietas veids, 0, biļetes veids, vārds, identitāte, tālrunis, N (ja ir vairāk nekā viens, atdalīts ar komatu) oldPassengerStr: vārds, ID tips, ID numurs, lietotāja tips randCode: Plānotais verifikācijas kods tour_flag:dc _json_att: Tukša virkne REPEAT_SUBMIT_TOKEN: Iegūstiet to no iepriekšējās darbības Atgriešana: json formāts, lai noteiktu, vai to var izdarīt Piektkārt: apstipriniet iesniegumu Metode: POST Interfeiss: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue Parametri:
passengerTicketStr: sēdvietas veids, 0, biļetes veids, vārds, identitāte, tālrunis, N (ja ir vairāk nekā viens, atdalīts ar komatu) oldPassengerStr: vārds, ID tips, ID numurs, lietotāja tips randCode: Plānotais verifikācijas kods purpose_codes: 3. darbība, lai to iegūtu key_check_isChange: Turpat leftTicketStr; Turpat train_locatio{filter}n; Turpat REPEAT_SUBMIT_TOKEN: Turpat _json_att: Tukša virkne Atgriezties: json formātā, nosakiet, vai iesniegšana ir veiksmīga, atgrieziet gaidīšanas laiku un ik pēc noteikta perioda izsauciet 6. darbību, lai atgrieztu apstrādes rezultātu Sestais: aptauja, lai iegūtu iesniegšanas rezultātus Metode: GET Interfeiss: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime? Parametri:
nejauši: nejauši skaitļi tourFlag:dc REPEAT_SUBMIT_TOKEN: Ir jāiegūst trešā daļa _json_att: Tukša virkne Atgriezties: json formāts, atgriezt gaidīšanas laiku, ja waitTime ir mazāks par 0, iegūt pasūtījuma informāciju orderId, ja tas ir lielāks par 0, turpināt aptauju 5. Uzziniet par nepabeigtiem pasūtījumiem Metode: POST Interfeiss: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete Parametri: _json_att: Tukša virkne Atgriešana: JSON formāts, satur pasūtījuma informāciju un tieši parsē
Runājot par to, 5 funkcijas būtībā tiek ieviestas, bet tagad tas tiek ievietots tikai, lai iemācītos lietot, un netiks ļaunprātīgi uzbrukts, turklāt 12306 vietnes saskarne mainās ļoti bieži, un tagad ievietotais interfeiss rīt var tikt mainīts, tāpēc svarīgi ir iemācīties satvert atbilstošās saskarnes un datus un analizēt no datiem, lai iegūtu atbilstošos parametrus un atbilstošos rezultātus. Šeit es galvenokārt izmantoju firebug, tīkla analīzes rīku, kas nāk kopā ar chrom pārlūkprogrammu, kā arī vijolnieka un wireshark rīkus, un norādījumus par saistīto rīku lietošanu, vienkārši meklējiet to internetā. Visbeidzot, sūdzēsimies, ka 12306 tīmekļa vietnē tiek izmantota CDN statiskās kešatmiņas tehnoloģija, kas novedīs pie atbilstošo serveru izvēles atbilstoši slodzes līdzsvarošanai dažādos reģionos, joslas platumam un slodzei, tas ir, visā valstī ir daudz 12306 serveru Katrs lietotājs var piekļūt iespējamiem serveriem ir atšķirīgi, bet tikai statiskās lapas un js, css un attēli utt., Bet katrs serveris tieši uzturēs sesiju koplietotu, tas ir, ja piesakāties vienā no serveriem, citos serveros Iepriekš minētais ir līdzvērtīgs arī izkraušanai. Tāpēc vislabāk ir dinamiski izvēlēties serveri, lai kešatmiņas laiks būtu atjaunināts, stress būtu minimāls un dati būtu reālāk. Manā ieviešanā, ja jūs nevaicājat vienu reizi, jūs vienu reizi mainīsit servera IP. Kas attiecas uz attiecīgo tehnoloģiju, es to atklāšu vēlāk. Bet šī raksta saturs ir pietiekams, lai mācītos. Konkrēto IP adresi varat redzēt http://tool.chinaz.com/dns. |