You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
12306/README.md

212 lines
9.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 12306
- python版本支持
- 2.7
- 依赖库
- 依赖打码兔 需要去打码兔注册用户账号打码兔账号地址http://www.dama2.com 一般充值1元就够用了充值打码兔之后首次运行是需要到官网黑白名单授权
- 依赖若快 若快注册地址http://www.ruokuai.com/client/index?6726 推荐用若快打码兔在12306验证码更新之后识别率不是很高
- 项目依赖包 requirements.txt
- 安装方法 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
- 项目使用说明
- 需要配置邮箱可以配置可以不配置配置邮箱的格式在yaml里面可以看到ex
- 提交订单验证码哪里依赖打码兔,所以如果是订票遇到验证码的时候,没有打码兔是过不了的,不推荐手动,手动太慢
- 配置yaml文件的时候需注意空格和遵循yaml语法格式项目的yaml配置ex
- ticket_config.yaml 配置说明
```
#station_date:出发日期改为多日期查询格式ex
- "2018-02-03"
- "2018-02-04"
- "2018-02-05"
#station_trains:过滤车次格式ex
# - "G1353"
# - "G1329"
# - "G1355"
# - "G1303"
# - "G1357"
# - "G1305"
# - "G1359"
# - "G1361"
# - "G1373"
# - "G1363"
#from_station: 始发站
#to_station: 到达站
#set_type: 坐席(商务座,二等座,特等座,软卧,硬卧,硬座,无座)
#is_more_ticket:余票不足是否自动提交
#select_refresh_interval:抢票刷新间隔时间1为一秒0.1为100毫秒以此类推 如果捡漏推荐为1秒刷票设置0.01
#expect_refresh_interval:售票未开始等待刷新间隔时间1为一秒0.1为100毫秒以此类推
#ticket_black_list:加入小黑屋的等待时间默认3 min 小黑屋的功能是上次买票失败,证明此票已无机会,下次刷新看到此票跳过
#enable_proxy:是否开启代理模式,代理速度比较慢,如果是抢票阶段,不建议开启
#ticke_peoples: 乘客 ex: "张三"
#damatu:打码兔账号,用于自动登录和订单自动打码
#is_aotu_code是否自动打码如果选择Ture,则调用打码兔打码,默认不使用打码兔
#is_email: 是否需要邮件通知 ex: True or False 切记邮箱加完一定到config目录下测试emailConf功能是否正常
#邮箱配置 列举163
# email: "xxx@163.com"
# notice_email_list: "123@qq.com"
# username: "xxxxx"
# password: "xxxxx
# host: "smtp.163.com"
#邮箱配置 列举qq qq设置比较复杂需要在邮箱--账户--开启smtp服务取得授权码==邮箱登录密码
# email: "xxx@qq.com"
# notice_email_list: "123@qq.com"
# username: "xxxxx"
# password: "授权码"
# host: "smtp.qq.com"
```
- 项目开始
- 修改config/ticket_config.yaml文件按照提示更改自己想要的信息
- 运行根目录run.py即可开始
- 目录对应说明
- agency - cdn代理
- config - 项目配置
- damatuCode - 打码兔接口
- init - 项目主运行目录
- myException - 异常
- myUrllib - urllib库
- 思路图
![image](https://github.com/testerSunshine/12306/blob/master/uml/uml.png)
- 项目声明:
- 本软件只供学习交流使用务作为商业用途交流群286271084
- 能为你抢到一张回家的票,是我最大的心愿
- 成功log如果是购票失败的请带上失败的log给我我尽力帮你挑也可加群一起交流程序只是加速买票的过程并不一定能买到票
```
正在第355次查询 乘车日期: 2018-02-12 车次G4741,G2365,G1371,G1377,G1329 查询无票 代理设置 无 总耗时429ms
车次: G4741 始发车站: 上海 终点站: 邵阳 二等座:有
正在尝试提交订票...
尝试提交订单...
出票成功
排队成功, 当前余票还剩余: 359 张
正在使用自动识别验证码功能
验证码通过,正在提交订单
提交订单成功!
排队等待时间预计还剩 -12 ms
排队等待时间预计还剩 -6 ms
排队等待时间预计还剩 -7 ms
排队等待时间预计还剩 -4 ms
排队等待时间预计还剩 -4 ms
恭喜您订票成功订单号为EB52743573, 请立即打开浏览器登录12306访问未完成订单在30分钟内完成支付
```
- 2017.5.13跟新
- 增加登陆错误判断(密码错误&ip校验
- 修改queryOrderWaitTime校验orderId字段bug校验msg字段bug校验messagesbug
- 修改checkQueueOrder 校验 data 字段的列表推导式bug
- 增加代理ip方法目前已可以过滤有用ip
- 2018.1.7 号更新
- 增加自动配置
```
#station_date:出发日期格式ex2018-01-06
#from_station: 始发站
#to_station: 到达站
#set_type: 坐席(商务座,二等座,特等座,软卧,硬卧,硬座,无座)
#is_more_ticket:余票不足是否自动提交
#select_refresh_interval:刷新间隔时间1为一秒0.1为100毫秒以此类推
#ticke_peoples: 乘客
#damatu:打码图账号,用于自动登录
```
- 优化订票流程
- 支持自动刷票,自动订票
- 2018.1.8 更新
- 增加小黑屋功能
- 修复bug若干
- 增加多账号同时订票功能
- 增加按照选定车次筛选购买车次
- 2018.1.9 更新
- 增加手动打码只是登录接口完全不用担心提交票的效率问题要挂linux系统的话还是去注册个打码兔吧
```
思路
1.调用PIL显示图片
2.图片位置说明验证码图片中每个图片代表一个下标依次类推12345678
3.控制台输入对应下标,按照英文逗号分开,即可手动完成打码,
```
- 修改无座和硬座的座位号提交是个字符串的问题
- 增加校验下单需要验证码功能
- 增强下单成功判断接口校验
- 2018.1.10 更新
- 优化查票流程
- 修改二等座的余票数返回为字符串的问题
- 优化订单查询bug
- 2018.1.12更新
- 优化抢票页面逻辑
-增强代码稳定性
- 2018.1.13更新
- 修改下单验证码功能
- 优化大量调用user接口导致联系人不能用理论加快订票速度
- 增加邮箱功能
```
#is_email: 是否需要邮件通知 ex: True or False 切记邮箱加完一定要到config目录下测试emailConf功能是否正常
#email: 发送的邮箱地址 ex: 1@qq.com
#notice_email_list: 被通知人邮箱 ex: 2@qq.com
#username: 邮箱账号
#password: 邮箱密码
#host: 邮箱地址
```
- 2018.1.14更新
- 优化订票流程
- 优化挂机功能
- 修改之前程序到11点自动跳出功能现在修改为到早上7点自动开启刷票
- 需要开启打码兔代码功能is_aotu_code 设置为True
- 增加异常判断
- 2018.1.15更新
- 增加捡漏自动检测是否登录功能建议捡漏不要刷新太快2S最好否则会封IP
- 优化提交订单有很大记录无限排队的情况,感谢群里的小伙伴提供的思路
- 修改休眠时间为早上6点
- 2018.1.20更新,好久没跟新了,群里的小伙伴说登录不行了,今晚抽空改了一版登录,妥妥的
- 更新新版登录功能,经测试,更稳定有高效
- 优化手动打码功能
- 更新请求第三方库
- 优化若干代码,小伙伴尽情的放肆起来
- 2018.1.21跟新
- 修复若干bug
- 合并dev
- 恢复之前因为12306改版引起的订票功能
- 增加派对失败自动取消订单功能
- 优化接口请求规范
- 增加多日期查询请严格按照yaml格式添加 即可
- 注意:如果多日期查询的话,可能查询时间会比较长
- 增加如果排队时间超过一分钟,自动取消订单
- 2018.1.23更新
- 增加若快平台打码yaml新增字段aotu_code_type1=打码兔2=若快 若快注册地址http://www.ruokuai.com/client/index?6726
- 修改is_aotu_code字段为全部是否自动打码字段也就是说字段为rue则全部自动打码为False全部手动打码包括提交订单注意centOs不可设置手动打码
- 修复bug
- 优化抢票功能
- 2018.1.25更新
- 删除 expect_refresh_interval 无用字段,优化代码
- 2018.1.29更新
- 增加cdn轮训功能优势 is_cdn=1为开启cdn2为普通查询
- 能够一定程度躲避封ip
- 查询余票快人一步
- 提交订单快人一步
- 僵尸票可能会少很多
- 兼容Windows cmd命令乱码问题
- 规范12306接口提交参数
- 修改已知bug
- 最后感谢群里提供测试和代码的小伙伴,能为你们买到一张回家的票真的感到灰常开心
- 2018.2.28更新收12306风控影响代码可能有时候会进入慢排队请自行调整刷新参数
- 修改已知bug
- 优化接口提交参数规范