기차표9 SRT&KTX 기차표 매크로 예매 - (6) 아이디/비밀번호 저장하기 개발하면서 프로그램을 계속 껐다 켰다 반복하다보니, 매번 로그인하는게 너~~~무 귀찮다. 그래서 id&pw 저장하는 기능을 만들고 다음 스텝으로 넘어가려고 한다. json 형태로 파일을 떨어뜨릴거라, 계정이 pc에 저장되는 아주 위험한 작업이다..! 공용 컴퓨터에서 할 경우 개인계정이 노출될 수 있음을 주의하자! 나중에는 실행파일을 만들어서 배포할 예정이므로, db가 생성되는 경로를 다르게 만들어야 한다. def get_db_path(): try: # PyInstaller에 의해 임시폴더에서 실행될 경우 임시폴더로 접근하는 함수 # 한 단계 상위에 db를 생성해야 삭제되지 않음 return os.path.join(os.path.join(sys._MEIPASS, os.pardir), 'train_db.js.. 2024. 1. 12. SRT&KTX 기차표 매크로 예매 - (4) SRT 승차권 예매 마지막으로 승차권 예매를 해보자! 예매 request는 내용도 많고 복잡하지만... 침착하게 분석해보자 Body data를 분석하다보니, 입석+좌석이나 환승의 경우 데이터가 너무 복잡해서, 직행 열차만 다룬다. URL : https://etk.srail.kr/hpg/hra/01/checkUserInfo.do Method : Post Body Data rsvTpCd : 예약 타입 코드 (01 - 일반 예약, 05 - 대기) jobId : ??? (1101 - 일반 예약, 1102 - 대기) jrnyTpCd : [추정] 여행 타입 코드 - 항상 '11' jrnyCnt : [추정] 여정 개수 - 항상 '1' totPrnb : 총 탑승 인원 stndFlg : [추정] 입석 여부 - 항상 'N' trnOrdrNo.. 2024. 1. 9. SRT&KTX 기차표 매크로 예매 - (3) SRT 승차권 조회 예매하고자 하는 승차권을 정확하게 알고 있다면, 굳이 승차권 리스트를 조회할 필요가 없다. 그래도 최종적으로 UI도 입히고, 유저 편의성을 높이려면 조회 기능은 필요할 것 같아 구현해보려고 한다. 결론적으로 말하자면, SRT 승차권 리스트를 Json 형태로 받아오는 방법을 못찾았다... HTML 코드를 받아서 파싱을 해야한다. 이것만은 하기 싫었는데... 승차권 조회를 여러번 해보면서 찾은 결과 URL : https://etk.srail.kr/hpg/hra/01/selectScheduleList.do Method : POST Query : pageId=TK0101010000 (없어도 되는 것으로 추정됨) Data Field dptRsStnCd : 출발역 코드 (e.g. 0551) arvRsStnCd : .. 2024. 1. 9. SRT&KTX 기차표 매크로 예매 - (2) SRT 로그인 KTX보다는 SRT 매진이 훨씬 빨리되는 편이다. 따라서 SRT를 먼저 개발한다. 기차표를 예매하려면 우선 로그인을 해야한다. 로그인 기능을 구현해보자. Session 받기 srt 예약 홈페이지에 들어가 개발자도구를 켜고 쿠키를 살펴보면 세션키가 있는 것을 볼 수 있다. 로그인에 앞서 세션을 받아오는 기능을 먼저 만들어야 한다. 쿠키를 모두 지우고 홈페이지에 다시 접속해서 Network를 살펴보자 쿠키가 빈 상태에서 https://etk.srail.kr/main.do 에 접속하면 Response Header에 세션키가 반환되는 것을 볼 수 있다. Good!! 코드로 짜보자. import requests session = requests.Session() res = session.get('https://e.. 2024. 1. 8. 이전 1 2 3 다음