이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 11838|회답: 1

12306 티켓 조회 소프트웨어 관련 인터페이스 및 데이터 형식

[링크 복사]
게시됨 2017. 9. 27. 오전 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. 랜드코드 검증 코드
                               3. userDTO.password 비밀번호
                     반환: json 문자열, 로그인 성공 여부를 결정할 수 있습니다
        2. 연락처 확보
                    방법: GET
                    인터페이스: https://kyfw.12306.cn/otn/passengers/init
                    매개변수: 없음
                    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:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                       passengerTicketStr: 좌석 유형, 0, 티켓 종류, 이름, 신원, 전화번호, N (두 개 이상일 경우, 쉼표로 구분)
                                       oldPassengerStr: 이름, ID 유형, ID 번호, 사용자 유형
                                       randCode: 예약된 검증 코드
                                       tour_flag:DC
                                       _json_att: 빈 실로
                                       REPEAT_SUBMIT_TOKEN: 이전 단계에서 얻으세요
                              커밋 가능 여부를 판단하기 위해 json 형식을 반환합니다
                    다섯째: 제출 확인
                                방법: POST
                                인터페이스: https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
                                조건:
   
                                       passengerTicketStr: 좌석 유형, 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: 빈 실로   
                               반환: json 형식, 대기 시간을 반환하고, waitTime이 0보다 작으면 orderinfo orderId를 받고, 0보다 크면 폴링을 계속합니다.
          5. 미완료 주문에 대해 문의하기
                 방법: POST
                 인터페이스: https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
                 조건:
                _json_att: 빈 실로   
                반환: JSON 형식, 주문 정보 포함, 직접 파싱

           말 나온 김에, 5가지 기능은 기본적으로 소개되었지만 이제는 사용법을 배우기 위한 게시만 게시되어 악의적인 공격을 받지 않을 것입니다. 게다가 12306 웹사이트의 인터페이스는 매우 자주 바뀌며, 현재 게시된 인터페이스도 내일은 바뀔 수 있으니, 중요한 것은 관련 인터페이스와 데이터를 수집하고 데이터를 분석하여 해당 매개변수와 결과를 얻는 방법을 배우는 것입니다. 여기서는 주로 chrom 브라우저에 포함된 네트워크 분석 도구인 firebug와 fiddler, wireshark 도구들을 사용하며, 관련 도구 사용법도 인터넷에서 찾아보면 됩니다.
            마지막으로, 12306 웹사이트는 CDN 정적 캐싱 기술을 사용해 각 지역, 대역폭, 부하에 따라 해당 서버를 선택하게 됩니다. 즉, 전국에 12306 서버가 많습니다. 각 사용자가 접근할 수 있는 서버는 다르지만, 정적인 페이지, js, css, picture 등만 가능합니다. 하지만 각 서버는 세션을 직접 공유합니다. 즉, 한 서버에 로그인하면 다른 서버에서 위 내용은 착륙한 것과 동등합니다. 그래서 서버를 동적으로 선택할 수 있어야 캐시 시간이 최신으로 유지되고, 스트레스가 최소화되며, 데이터가 더 실시간으로 처리됩니다. 제 구현에서는 한 번도 쿼리하지 않으면 서버 IP를 한 번 변경하게 됩니다. 관련 기술에 대해서는 나중에 공개하겠습니다. 하지만 이 글의 내용만으로도 배움에 충분합니다. http://tool.chinaz.com/dns 에서 구체적인 IP 주소를 확인할 수 있습니다.




이전의:{:1_3:} {:1_3:} 행복한 하루
다음:js는 어떻게 객체를 복사하나요?
게시됨 2017. 9. 28. 오전 9:19:34 |
사장님이 표를 사러 오실 건가요?
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com