12306 快速抢票购票程序

目录

  • 特性
  • 环境
  • 使用
  • 贡献

特性

  • 1.支持多人、多座位、多车次智能选票。
  • 2.支持手动自动识别图片验证码。
  • 3.支持代理,防止ip被拉黑。
  • 4.配置简单,使用方便。

环境

System: Windows\Max\Linux
Python: 3.6

使用

程序只支持Python3.x,运行程序需要有一个Python环境推荐使用虚拟环境。

  1. 下载项目
git clone https://github.com/janlle/12306.git 12306
cd 12306
  1. 安装依赖

python install -r requirements.txt

3.配置项目的配置文件 ticket_config.py

# coding:utf-8# ====================== 必填项 ======================
# 12306账号
ACCOUNT = 'wealip'# 12306密码
PASSWORD = '12306FF0'# 出发站
FROM_STATION = '武昌'# 到达站
TO_STATION = '长沙'# 出发时间,例如: 2019-10-15.
DATE = '2019-12-29'# 乘车人 (12306账号必须添加下列乘客信息)
USER = ['张三', '李四']# 车次(车次首字母大写)
TRAINS_NO = ['Z89', 'K81']# 座位类别: 商务座(9),一等座(8),二等座(7),高级软卧(6),软卧(5),动卧(4),硬卧(3),软座(2),硬座(1),无座(0)
SEAT_TYPE = [1, 2, 3]# ====================== 非必填项 ======================# 验证码识别方式(0:自动,1:手动)
CAPTCHA_IDENTIFY = 0# 通知手机号
PHONE = '159xxx00xxx'# 是否使用代理
USE_PROXY = False
  1. 启动你的应用
python start.py
  1. 运行日志

Using TensorFlow backend.
2019-12-06 09:22:42,522 INFO     4828  - stations.py     [line:405]: 车站数据同步成功
2019-12-06 09:22:44,210 INFO     4828  - verify_code.py  [line: 94]: 题目为: ['跑步机']
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 选项1.金字塔
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 选项2.雨靴
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 选项3.跑步机
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 选项4.中国结
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 选项5.调色板
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 选项6.订书机
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 选项7.金字塔
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 选项8.中国结
2019-12-06 09:22:44,760 INFO     4828  - login.py        [line:154]: 答案为: ['3']
2019-12-06 09:22:44,949 INFO     4828  - login.py        [line:163]: 验证码校验成功
2019-12-06 09:22:45,119 INFO     4828  - login.py        [line: 61]: 登录成功,共登录 1 次
2019-12-06 09:22:45,317 INFO     4828  - login.py        [line:120]: 验证通过,用户名: 张三
+------+-------------------+-----------------------+-------+--------+--------+--------+----------+------+------+------+------+------+------+
| 车次 | 出发站 - 到达站   | 出发时间 - 到达时间  | 历时  | 商务座 | 一等座 | 二等座 | 高级软卧 | 软卧 | 动卧 | 硬卧 | 软座 | 硬座 | 无座 |
+------+-------------------+-----------------------+-------+--------+--------+--------+----------+------+------+------+------+------+------+
| Z89  | 武昌 - 长沙    | 01:34 - 04:49         | 03:15 | --     | --     | --     | --       | no   | --   | no   | --   | yes  | no   |
+------+-------------------+-----------------------+-------+--------+--------+--------+----------+------+------+------+------+------+------+
2019-12-06 09:22:46,840 INFO     4828  - start.py        [line: 76]: [乘车人: ['张三', '李四'], 出发站: 武昌, 到达站: 长沙, 车次: Z89, 座位: 硬座, 出发时间: 2019-12-29 01:34:00]
2019-12-06 09:22:46,841 INFO     4828  - start.py        [line: 77]: 车票订单提交成功,请稍后...
2019-12-06 09:22:47,037 INFO     4828  - order.py        [line:221]: 购票结果查询中,第 1 次查询...
2019-12-06 09:22:52,213 INFO     4828  - order.py        [line:221]: 购票结果查询中,第 2 次查询...
2019-12-06 09:22:57,290 INFO     4828  - order.py        [line:218]: 下单成功,请登录 12306 订单中心 -> 火车票订单 -> 未完成订单,支付订单!
Corrupt JPEG data: 16 extraneous bytes before marker 0xd9Process finished with exit code 0

项目整体流程

登录

登录模块的整体流程为

  • 1.使用http请求获取图形验证码的 Base64 数据然后转换为图片,url /passport/captcha/captcha-image64

  • 2.使用图片识别模块(基于TensorFlow的图片识别)得到答案的正确坐标

  • 3.调用验证码校验接口校验验证码,url /passport/captcha/captcha-check

  • 4.调用登录接口带上用户名、密码、上一步验证码坐标等 url /passport/web/login

查票、选座

查票步骤比较简单

  • 1.调用12306的车票查询接口,得到所有车次信息 查询接口url /otn/leftTicket/query

  • 2.解析加密过得返回数据得到车票信息。

  • 3.选择合适的座位依次从最高级到最低级筛选。

查询下单结果

  • 1.先提交一个下单的请求带上上面步骤中的一个secretStr字段和其他字段,此步骤是判断是否可以下单。

  • 2.请求一个静态 html 页面,解析 html 得到下单的必要参数,页面url /otn/confirmPassenger/initDc

  • 3.查询账号的乘客信息,查询接口url cn/otn/confirmPassenger/getPassengerDTOs

  • 4.提交车次的乘客、座位类别、日志等信息,接口url cn/otn/confirmPassenger/checkOrderInfo

  • 5.获取上次提交订单的结果,如果返回信息都是ok的表示可以继续提价订单,接口url /otn/confirmPassenger/getQueueCount

  • 6.提交最终的车票订单,如果到此步骤表示前面的其他步骤都是OK的。

  • 7.查询下单结果,正常12306购票成功后会有一定的延迟几秒或几十秒返回下单结果,接口地址 /otn/confirmPassenger/queryOrderWaitTime

最后

到此项目的整体使用和流程都已经介绍完毕 项目源码地址 Gighub

12306 快速抢票购票程序相关推荐

  1. Python实现12306自动抢票小程序

    项目描述: 本程序通过网络爬虫技术,通过抓包分析出一次购票过程中出现的所有请求,最后通过Python程序一步步实现模拟浏览器进行请求.本程序通过调用云打码平台实现登录时候验证码校验,并能实现不断地监控 ...

  2. Crawler:基于splinter.browser库实现爬取12306网站来实现快速抢票

    Python之Crawler:爬取12306网站来实现快速抢票 目录 实现结果 实现代码 实现结果 实现代码 # -*- coding: utf-8 -*- from splinter.browser ...

  3. 基于python的12306自动抢票系统的设计与实现

    铁路售票系统12306网站作为一个广受人们的日常使用工具,受大极大的关注.铁路售票的管理者都主要考虑降低成本,提升售票服务满意度.一年一度的春运和节假日出行高峰期,给众多的出行群众者带来了极大的烦恼, ...

  4. 用python写12306系统_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  Python实现12306火车票抢票系统.txt ] (友情提示:右键点 ...

  5. 基于python的火车票订票系统的设计与实现_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统效果图如下所示: 具体代码如下所示: import urllib.request as request import http.cookiejar as coo ...

  6. Python大牛带你实现12306全自动抢票,学完后春运回家抢票无忧

    随着2018年春节的脚步日益临近,归心似箭的人们都希望能尽快赶回家中.中国人回家过年,是每个人一年中最重要的事,无论你离家远近.在所有的交通工具中,承担着最大客流量的交通工具,毫无疑问是火车.中国庞大 ...

  7. 12306与抢票插件初识

    序. 无数巨人的肩膀 12306购票浅显研究 http://xiaowa.org/modules.php?link=read_article&id=129 . 基于HTTPS协议的12306抢 ...

  8. python实现云服务器上12306自动化抢票功能

    本文将分为几大模块讲解python服务器上12306自动化抢票功能: 一.云服务器的安装与配置 1.1 云服务器与个人主机不同,不受时间.场所等条件的限制,将python代码运行在云服务器上可以实现真 ...

  9. python编写12306窗体抢票软件(一)

    python编写12306窗体抢票软件(一) 第一次写博客,拿写过的软件练个手~ 12306是学习爬虫的比较好的一个练手网站.本文带你重零开始编写一个python窗体,十分简单,小白进来看哈~这节只说 ...

  10. python抢票12306源码_Python实现12306火车票抢票系统

    Python实现12306火车票抢票系统效果图如下所示: 具体代码如下所示: import urllib.request as request import http.cookiejar as coo ...

最新文章

  1. 浏览器拦截弹出窗口 IE Firefox……浏览器
  2. 不得不提的团队协作工具
  3. python 登陆开心网图片批量下载-selenium实现
  4. 如何在Ubuntu中安装java jdk
  5. 对 C++ 的忧虑?C++ 创始人警告:关于 C++ 的某些未来计划十分危险
  6. k8s mysql pv_k8s+mysql+pv+pvc+NFS实现mysql容器编排
  7. asp.net如何隐藏服务器控件TEXTBOX
  8. %%%%%%%%123564
  9. 万能密码 php,PHP 万能密码
  10. 判了!国内「最牛删库跑路事件」程序员被判6年,公司损失近亿
  11. retained heap shallow heap 区别及介绍
  12. 扩增子图表解读4曼哈顿图:差异OTU或Taxonomy
  13. android 横竖屏固定,Android——设置固定横竖屏
  14. 华为OD机试 - 九宫格按键输入(Python) | 机试算法备考思路
  15. 在CSDN中如何快速简单方便的免费下载资料
  16. 强力推荐90个优秀外国英文网站
  17. linux 硬盘使用监控,zabbix3.2监控linux磁盘使用空间
  18. 数字化时代-11:从马斯洛需求层次看未来选择做什么样的产品
  19. python数据科学速查表_Python数据科学速查表:中级
  20. 工期概率计算_如何从文本和数字单元格值计算工期

热门文章

  1. 解决打开浏览器报proxy服务器发生错误
  2. Cython使用及pycharm
  3. windows 环境下 0x色彩对应表
  4. 达索系统推出汽车项目智能看板行业解决方案体验
  5. PyTorch 实现 Skip-gram
  6. easyui datagrid mysql分页_Easyui 自定义分页_EasyUI 教程
  7. 22牛客多校day1 J - Serval and Essay 启发式合并
  8. 36氪:超级表格想把企业协作做得“轻”一点
  9. 隐形窗口_建立网站时要考虑的隐形(但至关重要)注意事项
  10. NPOI导出EXCEL 合并单元格、统计列、单元格样式设置