12306购票小助手使用

获取项目文件

git clone https://github.com/testerSunshine/12306.git

配置助手

刷票模式:

1:刷票 2:候补+刷票

TICKET_TYPE = 1

出发日期

"2018-01-06", "2018-01-07"

STATION_DATES = [
    "2020-01-23"
]

填入需要购买的车次(list)

G1353,
G1233

修改车次填入规则,注:(以前设置的车次逻辑不变),如果车次填入为空,那么就是当日乘车所有车次都纳入筛选返回

不填车次是整个list为空才算,如果不是为空,依然会判断车次的,这种是错误的写法 [""], 正确的写法 []

STATION_TRAINS = [G11540]

出发城市

比如深圳北,填深圳就搜得到

FROM_STATION = "深圳"

到达城市

比如南京南,填南京就搜得到

TO_STATION = "南京"

座位

多个座位ex:

"商务座",
"一等座",
"二等座",
"特等座",
"软卧",
"硬卧",
"硬座",
"无座",
"动卧",

SET_TYPE = ["二等座"]

乘车人

多个乘车人ex:

"张三",
"李四"

TICKET_PEOPLES = [张三]

12306登录账号

USER = "xxxxx"

PWD = "xxxx"

自动打码

IS_AUTO_CODE = True

2为本地自动打码,需要配置tensorflow和keras库

3为云打码,由于云打码服务器资源有限(为2h4C的cpu服务器),请不要恶意请求,不然只能关闭服务器

ps: 请不要一直依赖云服务器资源,在此向所有提供服务器同学表示感谢

AUTO_CODE_TYPE = 3

设置云打码服务器地址,如果有自建的服务器,可以自行更改:

HOST = "120.77.154.140:8000"

docker 本地打码服务器:

HOST = "captcha:80"

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.qq.com",
}
SERVER_CHAN_CONF = {
    "is_server_chan": False,
    "secret": ""
}
# 下单模式 1 为预售,整点刷新,刷新间隔0.1-0.5S, 然后会校验时间,比如12点的预售,那脚本就会在12.00整检票,刷新订单
#         2 是捡漏,捡漏的刷新间隔时间为0.5-3秒,时间间隔长,不容易封ip
ORDER_MODEL = 2

# 是否开启代理, 0代表关闭, 1表示开始
# 开启此功能的时候请确保代理ip是否可用,在测试放里面经过充分的测试,再开启此功能,不然可能会耽误你购票的宝贵时间
# 使用方法:
# 1、在agency/proxy_list列表下填入代理ip
# 2、测试UnitTest/TestAll/testProxy 测试代理是否可以用
# 3、开启代理ip
IS_PROXY = 0

# 预售放票时间, 如果是捡漏模式,可以忽略此操作
OPEN_TIME = "12:59:57"
# 1=使用selenium获取devicesID
# 2=使用网页端/otn/HttpZF/logdevice获取devicesId,这个接口的算法目前可能有点问题,如果登录一直302的请改为配置1
# 3=自己打开浏览器在headers-Cookies中抓取RAIL_DEVICEID和RAIL_EXPIRATION,这个就不用配置selenium
COOKIE_TYPE = 3
# 如果COOKIE_TYPE=1,则需配置chromeDriver路径,下载地址http://chromedriver.storage.googleapis.com/index.html
# chromedriver配置版本只要和chrome的大版本匹配就行
CHROME_PATH = "/usr/src/app/chromedriver"

# 为了docker37 准备的环境变量,windows环境可以不用管这个参数
CHROME_CHROME_PATH = "/opt/google/chrome/google-chrome"

# 如果COOKIE_TYPE=3, 则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值
RAIL_EXPIRATION = ""
RAIL_DEVICEID = ""
# RAIL_EXPIRATION = "1577034103293"
# RAIL_DEVICEID = "CDno29Erc_Pf3FSXb4dzq-Op64EhWrsi5yUZKVIKR1MAfYo2qFlCeXD8VkexY7_1qg-ClV-fE8j9jgVlPZxRh3wVc2iqLe_5A8sdr62qZx4B22JPF8lFCjpgTKZ5ODW90HJd5tiQsJ1KR9nOqHRxHj1FT5LEIwfw"


# 1=>为一直随机ua,2->只启动的时候随机一次ua
RANDOM_AGENT = 2

PASSENGER_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"