12306购票小助手使用

1
2
3
4
# 获取项目文件

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

配置助手

刷票模式:

1:刷票 2:候补+刷票

TICKET_TYPE = 1

出发日期

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

1
2
3
STATION_DATES = [
"2020-01-23"
]

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

1
2
G1353,
G1233

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

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

STATION_TRAINS = [G11540]

出发城市

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

FROM_STATION = "深圳"

到达城市

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

TO_STATION = "南京"

座位

多个座位ex:

1
2
3
4
5
6
7
8
9
"商务座",
"一等座",
"二等座",
"特等座",
"软卧",
"硬卧",
"硬座",
"无座",
"动卧",

SET_TYPE = ["二等座"]

乘车人

多个乘车人ex:

1
2
"张三",
"李四"

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"

1
2
3
HOST="12306.yinaoxiong.cn" #备用服务器稳定性较差
REQ_URL="/verify/base64/"
HTTP_TYPE="https"
1
2
3
4
5
6
7
8
9
10
11
12
13
#  邮箱配置,如果抢票成功,将通过邮件配置通知给您
# 列举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"
1
2
3
4
5
6
7
8
EMAIL_CONF = {
"IS_MAIL": True,
"email": "",
"notice_email_list": "",
"username": "",
"password": "",
"host": "smtp.qq.com",
}
  • 是否开启 server酱 微信提醒, 使用前需要前往 http://sc.ftqq.com/3.version 扫码绑定获取 SECRET 并关注获得抢票结果通知的公众号

    1
    2
    3
    4
    SERVER_CHAN_CONF = {
    "is_server_chan": False,
    "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

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”

```

-------------本文结束感谢阅读-------------

欢迎关注我的其它发布渠道