【使用教程】面向回家编程-12306智能刷票,订票

article/2025/8/19 20:20:52

代码链接:https://github.com/testerSunshine/12306

实名感谢:testerSunshine

春运一票难求,很多朋友都听说了GitHub上的12306抢票神器,但苦于没有计算机编程基础或在使用过程中遇到暂时无法解决的问题导致抢票失败。特撰写本博客供电脑小白参照,并列举了几个在使用过程中常遇到的问题,欢迎补充。

使用教程

  1. 安装python
  2. 下载源码
  3. 配置文件
  4. 欢迎回家

1.安装python

python安装教程,请参照:https://baijiahao.baidu.com/s?id=1606573927720991570&wfr=spider&for=pc

推荐安装anaconda,请参照:https://blog.csdn.net/ITLearnHall/article/details/81708148


2.下载源码

地址:https://github.com/testerSunshine/12306

按图中所示依次点击,保存至本地,并帅筛选CDN、安装依赖包

 筛选CDN:WIN+R打开命令符,输入CMD,输入python 你的run.py所在地址 c

 

安装依赖包:WIN+R打开命令符,输入CMD,输入pip install 你的requirements.txt所在地址


3.配置文件

本小节对配置文件进行详细说明,在使用过程中有如下几个常见问题:

1.使用本地打码TensorFlow报错

AttributeError: module 'tensorflow' has no attribute 'get_default_graph'

解决方案:TensorFlow和keras版本兼容问题,推荐使用TensorFlow1.14.0版本

推荐使用本地打码,高峰时段在线打码服务器访问量高速度慢

2.COOKIE获取配置问题

  • COOKIE_TYPE = 1

           步骤一:安装chrome

    https://www.google.cn/intl/zh-CN/chrome/

    步骤二:下载对应版本的chrome驱动,解压至桌面

    http://chromedriver.storage.googleapis.com/index.html

    步骤三:设置chrome驱动路径参数

    CHROME_PATH = ‘你的chrome驱动位置”

  • COOKIE_TYPE = 2

    不推荐

  • COOKIE_TYPE = 3

    步骤一:手动定位RAIL_EXPIRATION、RAIL_DEVICEID的值。首先登录12306,按F12进入开发者工具界面,选择Console,输入document.cookie图示操作获取cookie,找到cookie中RAIL_EXPIRATION、RAIL_DEVICEID的值。

     步骤二:配置RAIL_EXPIRATION、RAIL_DEVICEID的值,注意这个值会发生变化,若显示接口302,请打开浏览器重新获取该值。

RAIL_EXPIRATION = "获取的RAIL_EXPIRATION的值"
RAIL_DEVICEID = "获取的RAIL_DEVICEID的值"

3.邮箱配置问题

配置详情如下所示:

EMAIL_CONF = {
    "IS_MAIL": True,
    "email": "发送邮件的邮箱地址",
    "notice_email_list": "接收邮件的邮箱地址",
    "username": "发送邮件的邮箱地址登录账号",
    "password": "发送邮件的邮箱地址登录密码(注意QQ和126等邮箱此处请填写授权码)",
    "host": "发送邮件的邮箱的smtp地址",
}

可以简单的理解为您需要注册两个邮箱,一个邮箱为发件邮箱,一个为接收邮箱。其中常遇到的异常是password错误导致发送失败。

QQ和126等邮箱password字段应该为授权码,授权码获取的办法请参照:https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256

举个例子:

EMAIL_CONF = {
    "IS_MAIL": True,
    "email": "SendAddress@qq.com",
    "notice_email_list": "ReceivingAddress@126.com",
    "username": "SendAddress",
    "password": "授权码",
    "host": "smtp.qq.com",
}

4.微信推送配置问题

请参照:https://www.jianshu.com/p/8d10b5b9c4e3

步骤一:http://sc.ftqq.com/3.version,使用GitHub账号注册,登录

步骤二:点击微信推送,使用微信扫码绑定,绑定成功后点击发送信息,即可查看到您的secret码

步骤三:设置secret码

SERVER_CHAN_CONF = {"is_server_chan": True,"secret": "请在此处输入您的secret码"
}

欢迎回家

WIN+R输入CMD打开命令行输入python run.py文件的地址 r 

如果一切顺利,你将看到以下内容,恭喜!!

正在第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分钟内完成支付!

在使用过程中如果有任何问题,欢迎留言讨论。 最后,引用源码作者的一句话

  • 能为你抢到一张回家的票,是我最大的心愿


配置文件详解

# 如果是候补车票,需要通过人证一致性核验的用户及激活的“铁路畅行”会员可以提交候补需求,请您按照操作说明在铁路12306app.上完成人证核验
# 关于候补了之后是否还能继续捡漏的问题在此说明: 软件为全自动候补加捡漏,如果软件候补成功则会停止抢票,发出邮件通知,但是不会影响你继续捡漏,
# 如果这个时候捡漏捡到的话,也是可以付款成功的,也就是说,捡漏+候补,可以最大程度提升抢票成功率# 刷票模式:1=刷票 2=候补+刷票
TICKET_TYPE = 2# 出发日期(list) "2018-01-06", "2018-01-07"
STATION_DATES = ["2020-01-25"
]# 填入需要购买的车次(list),"G1353"
# 修改车次填入规则,注:(以前设置的车次逻辑不变),如果车次填入为空,那么就是当日乘车所有车次都纳入筛选返回
# 不填车次是整个list为空才算,如果不是为空,依然会判断车次的,这种是错误的写法 [""], 正确的写法 []
STATION_TRAINS = ["G383","D21"]# 出发城市,比如深圳北,就填深圳就搜得到
FROM_STATION = "北京"# 到达城市 比如深圳北,就填深圳就搜得到
TO_STATION = "海南"# 座位(list) 多个座位ex:
# "商务座",
# "一等座",
# "二等座",
# "特等座",
# "软卧",
# "硬卧",
# "硬座",
# "无座",
# "动卧",
SET_TYPE = ["二等座"]# 当余票小于乘车人,如果选择优先提交,则删减联系人和余票数一致在提交
# bool
IS_MORE_TICKET = True# 乘车人(list) 多个乘车人ex:
# "张三",
# "李四"
TICKET_PEOPLES = ["张三","李四"]# 12306登录账号
USER = "你的12306登录账号"
PWD = "你的12306登录密码"# 加入小黑屋时间默认为5分钟,此功能为了防止僵尸票导致一直下单不成功错过正常的票
TICKET_BLACK_LIST_TIME = 5# 自动打码
IS_AUTO_CODE = True# 设置2本地自动打码,需要配置tensorflow和keras库,3为云打码,由于云打码服务器资源有限(为2h4C的cpu服务器),请不要恶意请求,不然只能关闭服务器
# ps: 请不要一直依赖云服务器资源,在此向所有提供服务器同学表示感谢
#此处请注意设置2需要安装正确的TensorFlow和keras版本,否则会因版本问题出现报错
AUTO_CODE_TYPE = 2# 此处设置云打码服务器地址,如果有自建的服务器,可以自行更改
HOST = "120.77.154.140:8000"
REQ_URL = "/verify/base64/"
HTTP_TYPE = "http"
# HOST="12306.yinaoxiong.cn" #备用服务器稳定性较差
# REQ_URL="/verify/base64/"
# HTTP_TYPE="https"#  邮箱配置,如果抢票成功,将通过邮件配置通知给您
#  列举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"
EMAIL_CONF = {"IS_MAIL": True,"email": "发送邮件的邮箱地址","notice_email_list": "接收邮件的邮箱地址","username": "发送邮件的邮箱地址登录账号","password": "发送邮件的邮箱地址登录密码","host": "发送邮件的邮箱的smtp地址",
}# 是否开启 server酱 微信提醒, 使用前需要前往 http://sc.ftqq.com/3.version 扫码绑定获取 SECRET 并关注获得抢票结果通知的公众号
SERVER_CHAN_CONF = {"is_server_chan": True,"secret": "你的secret"
}# 是否开启cdn查询,可以更快的检测票票 1为开启,2为关闭
IS_CDN = 1# 下单接口分为两种,1 模拟网页自动捡漏下单(不稳定),2 模拟车次后面的购票按钮下单(稳如老狗)
ORDER_TYPE = 2# 下单模式 1 为预售,整点刷新,刷新间隔0.1-0.5S, 然后会校验时间,比如12点的预售,那脚本就会在12.00整检票,刷新订单
#         2 是捡漏,捡漏的刷新间隔时间为0.5-3秒,时间间隔长,不容易封ip
#注意:如果已经错过了第一时间的发售,请设置该值为2,进行捡漏
ORDER_MODEL = 1# 是否开启代理, 0代表关闭, 1表示开始
# 开启此功能的时候请确保代理ip是否可用,在测试放里面经过充分的测试,再开启此功能,不然可能会耽误你购票的宝贵时间
# 使用方法:
# 1、在agency/proxy_list列表下填入代理ip
# 2、测试UnitTest/TestAll/testProxy 测试代理是否可以用
# 3、开启代理ip
IS_PROXY = 0# 预售放票时间, 如果是捡漏模式,可以忽略此操作
OPEN_TIME = "16:30:00"
# 1=使用selenium获取devicesID
# 2=使用网页端/otn/HttpZF/logdevice获取devicesId,这个接口的算法目前可能有点问题,如果登录一直302的请改为配置1
# 3=自己打开浏览器在headers-Cookies中抓取RAIL_DEVICEID和RAIL_EXPIRATION,这个就不用配置selenium
#打开12306网站登录进去,按F12,在consol中输入document.cookie即可查询到RAIL_DEVICEID和RAIL_EXPIRATION的值
COOKIE_TYPE = 3
# 如果COOKIE_TYPE=1,则需配置chromeDriver路径,下载地址http://chromedriver.storage.googleapis.com/index.html
# chromedriver配置版本只要和chrome的大版本匹配就行
CHROME_PATH = R"C:\Users\t470-1\Desktop\chromedriver.exe"# 为了docker37 准备的环境变量,windows环境可以不用管这个参数
CHROME_CHROME_PATH = "/opt/google/chrome/google-chrome"# 如果COOKIE_TYPE=3, 则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值
RAIL_EXPIRATION = ""
RAIL_DEVICEID = ""# 1=>为一直随机ua,2->只启动的时候随机一次ua
RANDOM_AGENT = 3PASSENGER_TICKER_STR = {'一等座': 'M','特等座': 'P','二等座': 'O','商务座': 9,'硬座': 1,'无座': 1,'软座': 2,'软卧': 4,'硬卧': 3,
}# 保护12306官网请求频率,设置随机请求时间,原则为5分钟不大于80次
# 最大间隔请求时间
MAX_TIME = 3
# 最小间隔请求时间
MIN_TIME = 1# 软件版本
RE_VERSION = "1.2.004"


 


http://chatgpt.dhexx.cn/article/ghCT74ZG.shtml

相关文章

12306自动刷票下单-登录篇(一)

12306网站推出图片验证码以后,对于抢票软件就提出了更高的要求,本篇并不涉及自动识别验证码登录(主要是博主能力所限),提供一个途径-打码平台,这个几乎是可以破解所有验证码了,本篇主要是分享一…

12306刷票脚本

我也在刷票,不过发现12306还是发生了一些变化,在使用过程中,发现会自动退出登录。所以对脚本做了一些改动。顺便加了一些新的功能。具体如下: 防自动退出 添加刷到票后发起桌面通知 勾选某些类型的车 选择发站站点 …

c#模拟网页实现12306登陆、自动刷票、自动抢票完全篇

这一篇文章,我将从头到尾教大家使用c#模拟网页面登陆12306网站,自动刷票,选择订票人,到最后一步提交订单。研究过HTTP协议的童鞋们都知道,我们在访问网站时,是有两种方式的,POST和GET方式&#…

你距离家只差一个刷票脚本而已——12306刷票脚本升级版

马上就要回家了,票还没有。你是否用到了我去年发布的刷票脚本呢。传送门~ 我也在刷票,不过发现12306还是发生了一些变化,在使用过程中,发现会自动退出登录。所以对脚本做了一些改动。顺便加了一些新的功能。具体如下:…

搞技术的要不要学习财务知识

越是大型的集团或者企业,公司里面设立的部门就越多,也越细化,各部门之间既相互独立管理,又是相互的辅助支持,所以在工作中经常遇到这样的一个问题,就是做技术的要不要学习财务知识。这个问题其实就是把技术…

财务管理的一般常识

2019独角兽企业重金招聘Python工程师标准>>> 财务总监助理在协助财务总监做好企业理财规划与管理的时候需要首先了解以下的有关知识: —、财务和企业财务管理的概念 所谓“财务”,通俗地讲就是有关“钱财”的事务。从事一切事业都离不开钱财&…

财政系统基本知识

文章目录 一、基础数据1、单位管理修改2、部门信息 二、资产账1、卡片登记(新增资产)2、新增资产入账,也可批量入账3、卡片变动1)普通信息变动 >>>普通信息确认2)资产价值变动3)资产大类变动4&…

身为企业管理者,必须了解的财务知识

财务管理工作是企业管理工作中的核心内容,也是企业管理工作中的难点内容,对于集团企业来讲更是任务艰巨而又问题频出。然而,信息时代的来临为解决和完善企业财务管理问题提供了新思路,就集团企业而言,财务管理信息化基…

业务:财务会计业务知识

一、引言 会计是以货币为主要计量单位,对企业、事业、机关、团体及其他经济组织的经济活动进行记录、计算、控制、分析、报告,以提供财务和管理信息的工作。会计的职能主要是反映和控制经济活动过程,保证会计信息的合法、真实、准确和完整&a…

软件测试分类

一、软件测试的分类 1、按开发阶段:单元测试、集成测试、系统测试、验收测试 2、按测试实施组织:α、β、第三方 3、按测试执行方式:静态测试、动态测试 4、按是否查看代码:黑盒测试、白盒测试、灰盒测试 5、按是否手工执行划分&a…

【软件工程】软件测试报告——软件测试说明书

【备注】本说明书由华中农业大学2018级计算机科学与技术专业的刘畅、刘铠铭、张清望、卢家伟四位同学共同完成。 文章目录 1 引言1.1 编写目的1.2 背景1.3 术语和缩略词1.4 参考资料 2 测试用例设计3 测试结果及分析3.1 测试环境3.2 测试用例执行3.3 结论及建议 1 引言 1.1 编…

软件测试模型有哪些?

目录 1、瀑布模型 2、V模型 3、W模型 4、H模型 5、X模型 6、前置测试模型 1、瀑布模型 瀑布模型(Waterfall Model)是一个软件生命周期模型,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护&…

1.软件测试-----软件测试的基本概念

目录 一、软件测试的基本概念 1.什么是软件测试? 2.软件测试和软件开发的区别? 3.什么是需求? 4.什么是BUG? 5.如何描述一个BUG? 6.BUG的级别? 7.BUG的生命周期? 8.软件测试的生命周期&#xff1…

软件测试菜鸟入门

更新版:https://weltest.blog.csdn.net/article/details/110529745 视频课程:https://edu.csdn.net/course/detail/23459 目录 前言... 3 软件测试流程... 3 提取测试点... 4 设计测试用例与用例评审... 4 测试类型选择... 5 测试执行与缺陷管理.…

什么是软件测试?

什么是软件测试? 软件测试的定义:在一定条件下对软件进行操作,发现软件的问题,提高软件的质量。 软件测试在开发中的有着重要地位。软件测试在各阶段的完成相应的任务,需求测试,架构测试,详细测…

2022最新软件测试八股文,能不能拿心仪Offer就看你背得怎样了

前言 鉴于目前测试就业越来越严峻,内卷也成了测试领域的代名词了。我的一个HR朋友告诉我,由于门槛较低,现在普通测试岗(偏功能)的投递比已经将近100,也就是一个岗位差不多有百分简历投进来。 所以现在还想…

想自学软件测试?一般人我还是劝你算了吧。。。

本人7年测试经验,在学测试之前对电脑的认知也就只限于上个网,玩个办公软件。这里不能跑题,我为啥说:自学软件测试,一般人我还是劝你算了吧?因为我就是那个一般人! 软件测试基础真的很简单&…

【云服务器】免费云服务器推荐

你还在因为阿里云、腾讯云等的云服务器价格昂贵而放弃自己建站、建服务器的梦想吗?还在因为阿里云、腾讯云推出的免费产品不能永久使用而烦恼吗? 优豆云就能帮你解决。重点是,它提供的云服务器是免费的!!!…

如何操作申请免费云服务器?

2核4G、4核8G服务器申请操作: 第一步: 注册天翼云账号通过以下链接 注册账号https://www.ctyun.cn/agent/#/invitation/20753574或者扫二维码注册 第二步: 注册号账号进行实名认证 个人用户可通过“身份证认证”(扫码认证&…

云服务服务器免费使用

写作目的 最近买了个2核4G的云服务器,自己平时就是写个demo。感觉服务器资源浪费了,所以搭建了一些测试环境方便小伙伴使用。 云服务器免费使用 注意:仅限普通用户 ip:114.115.208.175 用户名:marenlvdou 密码:lvd…