python开源12306火车票抢票程序py12306教程

亲测有效。
git地址:https://github.com/pjialin/py12306

第一步,创建python3虚拟环境

pip install virtualenv
virtualenv venv
virtualenv -p /usr/bin/python3.6 venv
source venv/bin/activate

创建详细教程
https://www.cnblogs.com/technologylife/p/6635631.html

第二步,克隆并安装依赖

git clone https://github.com/pjialin/py12306
cd py12306
pip install -r requirements.txt

第三步,配置配置文件

cp env.py.example env.py
vi env.py

1.填写12306账号密码

# 12306 账号
USER_ACCOUNTS = [
    # 目前已支持仅查询,不下单,屏蔽掉下面的账号即可
    {
        'key': 0,  # 如使用多个账号 key 不能重复
        'user_name': '12306 user name',
        'password': '12306 password'
    },
    # {
    #     'key': 'wangwu',
    #     'user_name': '[email protected]',
    #     'password': 'wangwu'
    # }
]

在USER_ACCOUNTS的列表的第一个字典中填入你的12306的账号(user_name)和密码(password)

2.选择打码方式
打码有‘ruokuai’和‘free’两种模式
作者称free不可持续,建议ruokuai

如果使用若快,将AUTO_CODE_PLATFORM改成‘ruokuai’
若快注册网址为http://www.ruokuai.com/login
注册后将注册的账号密码填入AUTO_CODE_ACCOUNT即可

收费是这样的。1块钱能买2500个豆,登陆打码一次大概花费10-30个豆,感觉最多充5块钱的豆就够了,建议先来1块钱的试试。同时关注其公众号,还能免费获得1000豆。

8583647-f8f0621fb71fbb0d.png
image.png
# 打码平台账号
# 目前只支持免费打码接口 和 若快打码,注册地址:http://www.ruokuai.com/login
AUTO_CODE_PLATFORM = 'ruokuai'  # 免费填写 free 若快 ruokuai  # 免费打码无法保证持续可用,如失效请手动切换
AUTO_CODE_ACCOUNT = {  # 使用 free 可用省略
    'user': 'user_name',
    'pwd': 'user password'
}

3、设置语音提醒
因为抢到票以后需要及时提醒你去支付,完成订单,所以,建议开启语音提醒功能。

扫描二维码关注公众号,回复: 5186543 查看本文章

可以在阿里云领取5次免费体验套餐,因为抢票成功后才会使用,所以基本够用

另外收费是1元10次

登陆https://market.aliyun.com/products/57126001/cmapi019902.html

8583647-0b906f89b3143787.png
image.png

购买或者领取免费套餐后,会得到一个appcode,将其填入NOTIFICATION_API_APP_CODE

# 语音验证码
# 没找到比较好用的,现在用的这个是阿里云 API 市场上的,基本满足要求,价格也便宜
# 购买成功后到控制台找到  APPCODE 放在下面就可以了
# 地址:https://market.aliyun.com/products/57126001/cmapi019902.html
NOTIFICATION_BY_VOICE_CODE = 1  # 开启语音通知
NOTIFICATION_API_APP_CODE = 'app code'

4、配置日期,车次,始发站,终点站信息
首先在left_dates中填入你期望的出发日期,可以是多个,注意格式一定是‘2019-02-02’这种
然后再stations中填入你的始发站和终点站
members中,填入你的乘客名字
seats中填入‘特等座, 商务座, 一等座, 二等座, 软卧, 硬卧, 动卧, 软座, 硬座, 无座’中的一个或者多个
train_numbers,填入车次,如果为空,则为出发日期的所有可抢车次票

QUERY_JOBS = [
    {
        # 'job_name':  'bj -> sz',  # 任务名称,不填默认会以车站名命名,不可重复
        'account_key': 0,  # 将会使用指定账号下单
        'left_dates': [  # 出发日期 :Array
            "2019-02-01",
            #"2019-01-26",
        ],
        'stations': {  # 车站 支持多个车站同时查询  :Dict or :List
            'left': '北京',
            'arrive': '潍坊',
        },
        #  # 多个车站示例  (建议添加多个,有时多买几站成功率会高一点)
        # 'stations': [{
        ],
        'stations': {  # 车站 支持多个车站同时查询  :Dict or :List
            'left': '北京',
            'arrive': '潍坊',
        },
        #  # 多个车站示例  (建议添加多个,有时多买几站成功率会高一点)
        # 'stations': [{
        #     'left': '北京',
        #     'arrive': '深圳',
        # },{  # 多个车站示例
        #     'left': '北京',
        #     'arrive': '广州',
        # }],
        'members': [  # 乘客姓名,会根据当前账号自动识别乘客类型 购买儿童票 设置两个相同的姓名即可,程序会自动识别 如  ['张三', '张三']
            "一行数师",
            #"王五",
        ],
        'allow_less_member': 0,  # 是否允许余票不足时提交部分乘客
        'seats': [  # 筛选座位  有先后顺序 :Array
            # 可用值: 特等座, 商务座, 一等座, 二等座, 软卧, 硬卧, 动卧, 软座, 硬座, 无座
            '二等座',
            '硬卧',
            #'硬座'
        ],
        'train_numbers': [  # 筛选车次 可以为空,为空则所有车次都可以提交
            "G4961",
            "K411",
            #"K4184"
        ]

    },

第四步,测试
1 测试配置信息

python main.py -t

2 测试通知消息

python main.py -t -n

第五步,开抢

python main.py
8583647-12e7a8adafcf5dca.png
image.png

抢到票后,会收到语音提示,届时到进入12306的订单查看中进行支付即可。

祝大家抢票顺利,新年快乐。

猜你喜欢

转载自blog.csdn.net/weixin_34242658/article/details/87234729
今日推荐