Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 11838|Ответ: 1

Программные интерфейсы и форматы данных для захвата билетов 12306

[Скопировать ссылку]
Опубликовано 27.09.2017 10:15:39 | | |

Давайте сразу перейдём к делу: здесь я в основном хочу поговорить об интерфейсах и форматах данных текущих функций 12306. Он в основном делится на пять модулей: вход, получение контактов, проверка билетов, бронирование и запросы по незавершённым заказам, а для некоторых других неважных интерфейсов можно напрямую игнорировать их, например, определить правильность кода проверки, запросить оставшееся количество заявок и т.д. — эта статья написана, и вы можете изучить её самостоятельно, если нужно.
       1. Войти в систему
             Вход в систему в основном предназначен для получения сессии и поддержания связи с сервером. Существует два основных шага для входа в систему
             Сначала получите код подтверждения входа
                     Метод: ПОЛУЧИТЬ
                     Интерфейс: 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, которая может определить, успешный ли вход
        2. Получите контакты
                    Метод: ПОЛУЧИТЬ
                    Интерфейс: https://kyfw.12306.cn/otn/passengers/init
                    Параметры: отсутствуют
                    Return: html-файл, в нём можно найти переменную, которая находится в формате json и может быть разборена в пользовательский объект
        3. Проверка билетов
                    Метод: ПОЛУЧИТЬ
                    Интерфейс: 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 для подготовки к следующим коммитам
                    В-третьих: получите код подтверждения подачи
                              Метод: ПОЛУЧИТЬ
                             Интерфейс: 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
                                       ПассажирБилетСила: тип места, 0, тип билета, имя, личность, телефон, N (если их несколько, разделённых запятой)
                                       oldPassengerStr: имя, тип удостоверения, номер удостоверения, тип пользователя
                                       randCode: Код запланированной верификации
                                       tour_flag:DC
                                       _json_att: Пустая верёвка
                                       REPEAT_SUBMIT_TOKEN: Выучи это из предыдущего шага
                              Return: формат json, чтобы определить, можно ли его фиксировать
                    Пятое: подтвердить подачу
                                Метод: POST
                                Интерфейс: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Параметры:
   
                                       ПассажирБилетСила: тип места, 0, тип билета, имя, личность, телефон, N (если их несколько, разделённых запятой)
                                       oldPassengerStr: имя, тип удостоверения, номер удостоверения, тип пользователя
                                       randCode: Код запланированной верификации
                                       purpose_codes: Шаг 3, чтобы получить
                                       key_check_isChange: Там же
                                       leftTicketStr; Там же
                                       train_locatio{filter}n; Там же
                                       REPEAT_SUBMIT_TOKEN: Там же
                                       _json_att: Пустая верёвка   
                               Return: форматировать json, определить, успешная ли отправка, вернуть время ожидания и вызвать шаг 6 каждый определённый период, чтобы вернуть результат обработки
                     Шестое: опрос для получения результатов подачи заявок
                               Метод: ПОЛУЧИТЬ
                               Интерфейс: https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Параметры:
   
                                       случайно: случайные числа
                                       tourFlag:dc   
                                       REPEAT_SUBMIT_TOKEN: Есть третья часть, которую нужно получить
                                       _json_att: Пустая верёвка   
                               Return: формат json, возврат времени ожидания, если waitTime меньше 0 — получить информацию о порядке Id, если больше 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