码迷,mamicode.com
首页 > 其他好文 > 详细

12306接口

时间:2019-12-31 18:58:23      阅读:495      评论:0      收藏:0      [点我收藏+]

标签:src   rom   random   url   rpo   key   ace   提交   attach   

接口

1、检查用户是否保持登录成功

https://kyfw.12306.cn/otn/login/checkUser

2、点击预定

https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest

3、获取联系人

https://kyfw.12306.cn/otn/confirmPassenger/getPassengerDTOs

4、检查选票人信息

https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo

5、提交订单

https://kyfw.12306.cn/otn/confirmPassenger/getQueueCount

6、确认订单

https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue

7、排队等待

https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime

8、订单结果

https://kyfw.12306.cn/otn/confirmPassenger/resultOrderForDcQueue

说明

需要做的依次post服务器需要的参数后,根据response返回的内容进行判断是否成功。

1. checkUser

技术图片

post参数_json_att为空,注意返回的json,flag:true 为保持登录成功

2. 点击预定

技术图片

post参数 secretStr 根据查看返回的预定号urldecode转码而来,python3 可使用urllib.parse.unquote来进行转码,train_date 出发时间,back_train_date 返程时间 , tour_flag 固定值。

3. 获取联系人

技术图片

post的参数_json_att为空,REPEAT_SUBMIT_TOKEN在上一次请求页面的源码中。由于下面截图是后续截的,所以与上一次不同,由此可见每一次的REPEAT_SUBMIT_TOKEN都会改变,所以只要将https://kyfw.12306.cn/otn/confirmPassenger/initDc get下来,使用正则便可以分析出来。方便后续使用。获取的联系人可以将有用的信息,买票人信息提取出来,为后面选票人下单提供参数。

技术图片

4. 检查选票人信息

技术图片

cancel_flag:2, #固定值
bed_level_order_num:000000000000000000000000000000, #固定值
passengerTicketStr:3,0,1,xxx,1,xxxxxxxxxxxxxx,,N,   #座位类型,0,票类型(成人/儿童),name,身份类型(身份证/军官证….),身份证,电话号码,保存状态
oldPassengerStr:xxx,1,xxxxxxxxxxxxxxxx,1,  #姓名  1  身份证号码  1
tour_flag:dc,   #固定值
randCode:‘‘,       #随机数
whatsSelect:1,      
_json_att:‘‘,    #
REPEAT_SUBMIT_TOKEN: xxxxxxxxx  #上面获取过

5. 提交订单

技术图片

data={
    train_date: Wed Apr 22 2018 00:00: 00 GMT + 0800,   #出发时间,注意格式
    "REPEAT_SUBMIT_TOKEN": xxxxxxxx,    #上面获取过
    "_json_att": "",    #
    "fromStationTelecode": fromStationTelecode,     #出发站的英文编号
    "leftTicket": leftTicket,     #和REPEAT_SUBMIT_TOKEN一样在相同网页获取
    "purpose_codes": purpose_codes,    #和REPEAT_SUBMIT_TOKEN一样在相同网页获取
    "seatType": 3,          #3为硬卧,具体可以查看https://kyfw.12306.cn/otn/confirmPassenger/initDc 检视元素可查看
    "stationTrainCode": station_train_code,   #车次
    "toStationTelecode": to_station_telecode, #目的站的也稳编号
    "train_no": train_no,      #和REPEAT_SUBMIT_TOKEN一样在相同网页获取
    train_location:trainl_lst[2]       #车次序列号,和REPEAT_SUBMIT_TOKEN一样在相同网页获取
}

6. 确认订单

技术图片
data={
    passengerTicketStr: 3,0,1,xxx,1,xxxxxxxxxx,,N,  #选票人信息,获取过
    oldPassengerStr: xxx,1,xxxxxxxxxxxxxxx,1_,  #获取过
    randCode: ‘‘,     #随机值,空
    "purpose_codes": purpose_codes,    #获取过
    "key_check_isChange": key_check_isChange,   #和REPEAT_SUBMIT_TOKEN一样在相同网页获取
    "leftTicketStr": leftTicket,    #获取过
    train_location: trainl_lst[2],     #获取过
    choose_seats:‘‘,       #座位类型,一般是高铁用
    roomType: 00,     #固定值
    dwAll: N,       #固定值
    "_json_att": "",  #
    seatDetailType:000,       #固定值
    whatsSelect: 1,      #固定值
    "REPEAT_SUBMIT_TOKEN": ticketToken,     #获取过
}

7. 排队等待

第一次post:

技术图片

第二次post:

技术图片

第一次和第二次post参数相同,但是第二次返回json中多了一个orderid,在订单结果中使用。

data={
    "REPEAT_SUBMIT_TOKEN": ticketToken,    #获取过
    "_json_att": "",   #
    "random": str(time.time()),   #随机值
    "tourFlag": "dc"  #固定值
}

8. 订单结果

技术图片
data={
    "REPEAT_SUBMIT_TOKEN": ticketToken,   #获取过
    "_json_att": "", #
    "orderSequence_no": orderId    #获取到排队等待response中的orderid
}

12306接口

标签:src   rom   random   url   rpo   key   ace   提交   attach   

原文地址:https://www.cnblogs.com/hacker001/p/12125620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!