12306购票小助手
佳人们,眼看着看着已经1月12日了。想想要回家过年了,难免心中有些小雀跃。期待着,盼望着马上就可以回家和家人团圆了。脑海中浮现出一家人团坐在一起,其乐融融。
有此地区的小伙伴就比较悲催了,一到春节过年期间疫情就四处起掠,还是要注意安全啊。
想着回家得买火车票把,买不到票还想回家,在想屁吃。过年火车票可是一票难求啊。我都已经做好了站回去的准备,还专门在网上买了小板凳。希望能在火车站的小角落里
能有我的一席之地呢。
第三手准备,利用工具买票试试手气,我想我找的应该是可以将我的12306账号密码配置好,然后设置要买的火车票车次。其余的就交给工具自动完成,实际上就是代码手工操作。
最后发现github上有一个star很多的项目。项目地址:/testerSunshine/12306
抱着试一试的心态,先试一试工具的使用,先试着买一次票,最后成功了。以下就是记录我使用的过程,也遇到一点点小坑。
具体步骤参照项目操作即可,我这里仅记录主要步骤和容易失败的地方。
需要的环境,python 3.6-3.7,我这里是用的python3.6.8,下载并安装完成【安装时勾选将python添加到环境变量】。下载地址 网盘下载地址
将项目下载到本地并解压,进入到项目根目录。
配置个人12306账户和你希望抢的车票,配置文件TickerConfig.py。重要的几个参数:STATION_DATES-出发日期、出发车次-STATION_TRAINS、FROM_STATION-出发城市、TO_STATION-目的城市、SET_TYPE-坐位挡次(二等坐)、TICKET_PEOPLES-购票人姓名、USER-你的12306账号、PWD-密码
AUTO_CODE_TYPE-登录验证码打码(3-云打码)、HOST = “120.24.62.193”(谢谢大哥)、COOKIE_TYPE=3(需配置RAIL_EXPIRATION、RAIL_DEVICEID的值)
账号登录时会检验验证码,这里使用的自动打码、云打码,谢谢提供云服务器的同学。
COOKIE_TYPE获取:电脑浏览器进12306的官网: 将RAIL_EXPIRATION、RAIL_DEVICEID两个的内容复制下来,注意RAIL_DEVICEID内容很长,和例子长度比较一下。
筛选cdn命令
python run.py c
启动服务
python3 run.py r
订票成功,最后到12306手机App官网未完成订单付款即可。卷你😤卸载!
实际情况在最后提交订单提交时失败了,错误信息为:“使用缓存中查找的联系人信息 出票失败”。经过我调试一番,将代码调整了一下,购票成功。SubmitOrderRequest.py文件原为
if submitResult['data']=='N':coi = checkOrderInfo(self.session, self.train_no, self.set_type, self.passengerTicketStrList,self.oldPassengerStr,self.train_date, self.ticke_peoples)coi.sendCheckOrderInfo()
调整后
if submitResult['data']:coi = checkOrderInfo(self.session, self.train_no, self.set_type, self.passengerTicketStrList,self.oldPassengerStr,self.train_date, self.ticke_peoples)coi.sendCheckOrderInfo()