Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 11838|Отговор: 1

12306 Софтуерни интерфейси и формати за данни за взимане на билети

[Копирай линк]
Публикувано в 27.09.2017 г. 10:15:39 ч. | | |

Нека минем направо към същината, тук основно искам да говоря за интерфейсите и форматите на данните на текущите функции 12306. Той е основно разделен на пет модула: влизане, получаване на контакти, проверка на билети, резервация и запитване на незавършени поръчки, а за някои други интерфейси, които не са важни, можете директно да ги игнорирате, като например да откриете дали кодът за верификация е правилен, да поискате останалия брой билети и др., тази статия е написана и можете да я проучите сами, ако ви е нужно.
       1. Влезте
             Входът е основно за получаване на сесията и поддържане на комуникация със сървъра. Има две основни стъпки за влизане
             Първо, вземете кода за потвърждение на входа
                     Метод: GET
                     Интерфейс: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Параметри: копира, същите
                     Назад: Двоичен поток от снимки
             Втори вход
                    Метод: POST
                    Интерфейс: https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Параметри: 1. loginUserDTO.user_name Потребителско име
                               2. код за проверка на randCode
                               3. парола userDTO.password
                     Връща: json string, който може да определи дали входът е успешен
        2. Вземете контактни лещи
                    Метод: GET
                    Интерфейс: https://kyfw.12306.cn/otn/passengers/init
                    Параметри: Няма
                    Return: html файл, можеш да намериш променлива в него, която е в json формат и може да се анализира в потребителски обект
        3. Проверка на билети
                    Метод: GET
                    Интерфейс: https://kyfw.12306.cn/otn/leftTicket/query?
                    Параметри: leftTicketDTO.train_date: Дата за проверка на билета
                               leftTicketDTO.from_station: Начална станция (азбучен код)
                               leftTicketDTO.to_station: Дестинационна станция (азбучен код)
                               purpose_codes: ВЪЗРАСТЕН
                    Връщане: Връща се към JSON формат и парсира директно
         4. Резервация
                   Назначението е разделено на 6 стъпки, една по една, взаимосвързани
                   Първо: Предварително подаване
                            Метод: POST
                            Интерфейс: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Параметър: secretStr: получава се чрез проверка на билети (по един за всеки влак, и различен всеки път, трябва да се анализира в реално време)
                                      train_date: Дата на резервация
                                     back_train_date: Дата на връщане
                                      tour_flag: DC
                                      purpose_codes: ВЪЗРАСТЕН
                                      query_from_station_name: Станция за тръгване
                                      query_to_station_name: Дестинационна станция
                                      Неопределено: празен низ
                           Връщане: Връща JSON формата, за да се определи дали подаденото е успешно
                    Второ: Вземете съответните параметри
                            Метод: POST
                            Интерфейс: https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Параметри:
                              _json_att: Празна струна
                             Return: html файл, полезен при парсване на globalRepeatSubmitToken в първите няколко реда и получаване на стойността на променливата ticketInfoForPassengerForm отдолу, е в json формат, от който purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n за подготовка за следните комити
                    Трето: Вземете кода за потвърждение на подаването
                              Метод: GET
                             Интерфейс: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Параметри:
                                      Няма
                             Return: Връща двоичния поток на изображението, точно както код за потвърждение на входа
                     Четвърто: Проверете дали подаденото подаване може да бъде потвърдено
                             Метод: POST
                              Интерфейс: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Параметри:
                                       cancel_flag:2
                                       bed_level_order_num:000000000000000000000000000
                                       ПътникБилетStr: Тип място, 0, тип билет, име, идентичност, телефон, N (ако има повече от един, разделен със запетая)
                                       oldPassengerStr: Име, ID тип, ID номер, потребителски тип
                                       randCode: Планиран код за верификация
                                       tour_flag:DC
                                       _json_att: Празна струна
                                       REPEAT_SUBMIT_TOKEN: Вземи го от предишната стъпка
                              Return: json формат, за да се определи дали може да бъде комитиран
                    Пето: Потвърдете предаването
                                Метод: POST
                                Интерфейс: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Параметри:
   
                                       ПътникБилетStr: Тип място, 0, тип билет, име, идентичност, телефон, N (ако има повече от един, разделен със запетая)
                                       oldPassengerStr: Име, ID тип, ID номер, потребителски тип
                                       randCode: Планиран код за верификация
                                       purpose_codes: Стъпка 3, за да го разбереш
                                       key_check_isChange: Там
                                       leftTicketStr; Там
                                       train_locatio{filter}n; Там
                                       REPEAT_SUBMIT_TOKEN: Там
                                       _json_att: Празна струна   
                               Return: json формат, определи дали подаването е успешно, върни времето за изчакване и извикай стъпка 6 на всеки определен период, за да върнеш резултата от обработката
                     Шесто: Анкета за получаване на резултатите от подадените материали
                               Метод: GET
                               Интерфейс: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Параметри:
   
                                       случайни: Случайни числа
                                       tourFlag:dc   
                                       REPEAT_SUBMIT_TOKEN: Има трета част за получаване
                                       _json_att: Празна струна   
                               Return: json формат, върни времето за изчакване, ако waitTime е по-малко от 0, вземи информацията за поръчката orderId, ако е по-голям от 0, продължи с анкетирането
          5. Попитайте за незавършени поръчки
                 Метод: POST
                 Интерфейс: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Параметри:
                _json_att: Празна струна   
                Връщания: JSON формат, съдържа информация за поръчката и парсира директно

           Говорейки за това, петте функции са въведени основно, но сега са публикувани само за да се научат да се използват и няма да бъдат злонамерено атакувани, освен това интерфейсът на сайта 12306 се променя много често, а публикуваният сега интерфейс може да бъде променен утре, затова важно е да се научите как да се вземат релевантни интерфейси и данни и да се анализират от данните, за да се получат съответните параметри и резултати. Тук основно използвам firebug, инструмента за мрежов анализ, който идва с chrom браузъра, както и Fiddler и Wireshark инструментите, и инструкциите за използване на свързани инструменти, просто ги потърси в интернет.
            Накрая, нека се оплакаме, уебсайтът 12306 използва CDN технология за статично кеширане, което води до избор на съответни сървъри според баланса на натоварването в различни региони, честотна лента и натоварване, тоест има много 12306 сървъри в цялата страна. Всеки потребител може да достъпва възможните сървъри, които са различни, но само статични страници и js, css и снимки и т.н., но всеки сървър ще запази сесията споделена, тоест ако влезете в един от сървърите на други сървъри Горното също е еквивалентно на кацане. Затова е най-добре да можеш да избираш сървър динамично, така че времето за кеш да е актуално, стресът да е минимален и данните да са по-реални в реално време. В моята имплементация, ако не направите заявка веднъж, ще промените IP адреса на сървъра веднъж. Що се отнася до съответната технология, ще я разкрия по-късно. Но съдържанието на тази статия е достатъчно за учене. Можете да видите конкретния IP адрес в http://tool.chinaz.com/dns.




Предишен:{:1_3:} {:1_3:} Щастлив ден
Следващ:Как js копира обект?
Публикувано в 28.09.2017 г. 9:19:34 ч. |
Шефът ще вземе ли билети?
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com