Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 11838|Respuesta: 1

Interfaces y formatos de datos relacionados con el software de captura de tickets 12306

[Copiar enlace]
Publicado en 27/9/2017 10:15:39 | | |

Vamos al grano, aquí principalmente quiero hablar de las interfaces y formatos de datos de las funciones actuales de 12306. Se divide principalmente en cinco módulos: inicio de sesión, obtención de contactos, revisión de tickets, reserva y consulta de pedidos pendientes; en cuanto a otras interfaces que no son importantes, puedes ignorarlas directamente, como detectar si el código de verificación es correcto, solicitar el número restante de tickets, etc.; este artículo está escrito y puedes estudiarlo tú mismo si lo necesitas.
       1. Iniciar sesión
             El inicio de sesión es principalmente para obtener la sesión y mantener la comunicación con el servidor. Hay dos pasos principales para iniciar sesión
             Primero, consigue el código de verificación de inicio de sesión
                     Método: GET
                     Interfaz: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
                     Parámetros: copiado, igual
                     Reversa: Flujo de imagen binario
             Segundo inicio de sesión
                    Método: POST
                    Interfaz: https://kyfw.12306.cn/otn/login/loginAysnSuggest
                    Parámetros: 1. loginUserDTO.user_name Nombre de usuario
                               2. código de verificación randCode
                               3. contraseña de usuarioDTO.contraseña
                     Devuelve: cadena json, que puede determinar si el inicio de sesión es exitoso
        2. Consigue contactos
                    Método: GET
                    Interfaz: https://kyfw.12306.cn/otn/passengers/init
                    Parámetros: Ninguno
                    Return: html, puedes encontrar una variable en él, que está en formato json y puede analizarse en un objeto de usuario
        3. Revisión de billetes
                    Método: GET
                    Interfaz: ¿https://kyfw.12306.cn/otn/leftTicket/query?
                    Parámetros: leftTicketDTO.train_date: Fecha de revisión de tickets
                               leftTicketDTO.from_station: Estación de Inicio (Código alfabético)
                               leftTicketDTO.to_station: Estación de destino (código alfabético)
                               purpose_codes:ADULTO
                    Retorno: Vuelve al formato JSON y analiza directamente
         4. Reserva
                   El nombramiento se divide en 6 pasos, uno a uno, interrelacionados
                   Primero: Pre-envío
                            Método: POST
                            Interfaz: https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
                            Parámetro: secretStr: obtenido mediante la comprobación de billetes (uno para cada tren, y diferente cada vez, debe analizarse en tiempo real)
                                      train_date: Fecha de reserva
                                     back_train_date: Fecha de regreso
                                      tour_flag: dc
                                      purpose_codes:ADULTO
                                      query_from_station_name: Estación de salidas
                                      query_to_station_name: Estación de destino
                                      indefinida: una cadena vacía
                           Devolución: Devuelve el formato JSON para determinar si la presentación es exitosa
                    Segundo: Obtener los parámetros correspondientes
                            Método: POST
                            Interfaz: https://kyfw.12306.cn/otn/confirmPassenger/initDc
                             Parámetros:
                              _json_att: Cuerda vacía
                             Return: html, útil en analizar globalRepeatSubmitToken en las primeras líneas, y obtener el valor de la variable ticketInfoForPassengerForm desde abajo, está en formato json, desde donde purpose_codes, key_check_isChange, leftTicketStr, train_locatio{filter} n para prepararse para los siguientes commits
                    Tercero: Obtén el código de verificación de envío
                              Método: GET
                             Interfaz: https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
                             Parámetros:
                                      Ninguno
                             Return: Devuelve el flujo binario de la imagen, igual que el código de verificación de inicio de sesión
                     Cuarto: Comprueba si la publicación puede ser confirmada
                             Método: POST
                              Interfaz: https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
                              Parámetros:
                                       cancel_flag:2
                                       bed_level_order_num:0000000000000000000000000000000000
                                       passengerTicketStr: tipo de asiento, 0, tipo de billete, nombre, identidad, teléfono, N (si hay más de uno, separados por una coma)
                                       oldPassengerStr: Nombre, Tipo de ID, Número de ID, Tipo de usuario
                                       randCode: Código de verificación programada
                                       tour_flag:dc
                                       _json_att: Cuerda vacía
                                       REPEAT_SUBMIT_TOKEN: Consíguelo del paso anterior
                              Devolve: formato json para determinar si puede comprometerse
                    Quinto: Confirmar la presentación
                                Método: POST
                                Interfaz: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                Parámetros:
   
                                       passengerTicketStr: tipo de asiento, 0, tipo de billete, nombre, identidad, teléfono, N (si hay más de uno, separados por una coma)
                                       oldPassengerStr: Nombre, Tipo de ID, Número de ID, Tipo de usuario
                                       randCode: Código de verificación programada
                                       purpose_codes: Paso 3 para conseguirlo
                                       key_check_isChange: Ibid
                                       leftTicketStr; Ibid
                                       train_locatio{filter}n; Ibid
                                       REPEAT_SUBMIT_TOKEN: Ibid
                                       _json_att: Cuerda vacía   
                               Devolución: formato json, determinar si la presentación ha sido exitosa, devolver el tiempo de espera y llamar al paso 6 cada cierto periodo para devolver el resultado del procesamiento
                     Sexto: Encuesta para obtener los resultados de las entregas
                               Método: GET
                               Interfaz: ¿https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
                               Parámetros:
   
                                       aleatorio: Números aleatorios
                                       Bandera de la gira: dc   
                                       REPEAT_SUBMIT_TOKEN: Hay una tercera parte que obtener
                                       _json_att: Cuerda vacía   
                               Return: formato json, devuelvo el tiempo de espera, si waitTime es menor que 0, obtén la información del pedido orderId, si es mayor que 0, continúa haciendo sondeo
          5. Preguntar por pedidos pendientes
                 Método: POST
                 Interfaz: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 Parámetros:
                _json_att: Cuerda vacía   
                Retornos: formato JSON, contiene información de orden y analiza directamente

           Hablando de eso, las 5 funciones básicamente se han introducido, pero ahora se publican solo para aprender a usarlas y no serán atacadas maliciosamente; además, la interfaz del sitio web 12306 cambia muy frecuentemente, y la interfaz publicada ahora puede cambiarse mañana, así que lo importante es aprender a recopilar interfaces y datos relevantes, y analizar a partir de los datos para obtener los parámetros y resultados correspondientes. Aquí uso principalmente Firebug, la herramienta de análisis de redes que viene con el navegador Chrome, así como las herramientas Fiddler y Wireshark, y las instrucciones para usar herramientas relacionadas, solo hay que buscarlo en Internet.
            Por último, quejemonos, la web 12306 utiliza tecnología de caché estática CDN, lo que permite seleccionar servidores correspondientes según el balanceo de carga en diferentes regiones, ancho de banda y carga, es decir, hay muchos servidores 12306 en todo el país. Cada usuario puede acceder a los posibles servidores son diferentes, pero solo páginas estáticas y js, css y imágenes, etc., pero cada servidor mantendrá directamente la sesión compartida, es decir, si inicias sesión en uno de los servidores, en otros servidores Lo anterior también equivale a haber aterrizado. Por eso es mejor poder elegir un servidor dinámicamente para que los tiempos de caché estén actualizados, el estrés sea mínimo y los datos sean más en tiempo real. En mi implementación, si no consultas una vez, cambiarás la IP del servidor una vez. En cuanto a la tecnología relevante, la revelaré más adelante. Pero el contenido de este artículo es suficiente para aprender. Puedes ver la dirección IP específica en el http://tool.chinaz.com/dns.




Anterior:{:1_3:} {:1_3:} Día feliz
Próximo:¿Cómo copia JS un objeto?
Publicado en 28/9/2017 9:19:34 |
¿El jefe va a coger entradas?
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com