From 264f88a5650b87acdac459bd7ece0300d6c68bce Mon Sep 17 00:00:00 2001 From: "xianping.wen" <931128603@qq.com> Date: Mon, 14 Oct 2019 10:11:40 +0800 Subject: [PATCH] update version 116 --- TickerConfig.py | 41 ++++++++++++++++++++------------- config/getCookie.py | 10 ++++++++ inter/AutoSubmitOrderRequest.py | 7 +++--- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/TickerConfig.py b/TickerConfig.py index efa46ea..0f6250e 100644 --- a/TickerConfig.py +++ b/TickerConfig.py @@ -7,7 +7,9 @@ TICKET_TYPE = 2 # 出发日期(list) "2018-01-06", "2018-01-07" -STATION_DATES = [] +STATION_DATES = [ + "2019-10-25" +] # 填入需要购买的车次(list),"G1353" # 修改车次填入规则,注:(以前设置的车次逻辑不变),如果车次填入为空,那么就是当日乘车所有车次都纳入筛选返回 @@ -15,10 +17,10 @@ STATION_DATES = [] STATION_TRAINS = [] # 出发城市,比如深圳北,就填深圳就搜得到 -FROM_STATION = "" +FROM_STATION = "深圳北" # 到达城市 比如深圳北,就填深圳就搜得到 -TO_STATION = "" +TO_STATION = "广州南" # 座位(list) 多个座位ex: # "商务座", @@ -30,14 +32,15 @@ TO_STATION = "" # "硬座", # "无座", # "动卧", -SET_TYPE = [] +SET_TYPE = ["二等座"] + # 当余票小于乘车人,如果选择优先提交,则删减联系人和余票数一致在提交 # bool IS_MORE_TICKET = True # 乘车人(list) 多个乘车人ex: -# - "张三" -# - "李四" +# "张三", +# "李四" TICKET_PEOPLES = [] # 12306登录账号 @@ -52,7 +55,7 @@ IS_AUTO_CODE = True # 设置2本地自动打码,需要配置tensorflow和keras库,3为云打码,由于云打码服务器资源有限(为2h4C的cpu服务器),请不要恶意请求,不然只能关闭服务器 # ps: 请不要一直依赖云服务器资源,在此向提供服务器的"do it"同学表示感谢 -AUTO_CODE_TYPE = 2 +AUTO_CODE_TYPE = 3 # 邮箱配置,如果抢票成功,将通过邮件配置通知给您 # 列举163 @@ -73,7 +76,7 @@ EMAIL_CONF = { "notice_email_list": "", "username": "", "password": "", - "host": "", + "host": "smtp.qq.com", } # 是否开启 server酱 微信提醒, 使用前需要前往 http://sc.ftqq.com/3.version 扫码绑定获取 SECRET 并关注获得抢票结果通知的公众号 @@ -86,7 +89,7 @@ SERVER_CHAN_CONF = { IS_CDN = 1 # 下单接口分为两种,1 模拟网页自动捡漏下单(不稳定),2 模拟车次后面的购票按钮下单(稳如老狗) -ORDER_TYPE = 2 +ORDER_TYPE = 1 # 下单模式 1 为预售,整点刷新,刷新间隔0.1-0.5S, 然后会校验时间,比如12点的预售,那脚本就会在12.00整检票,刷新订单 # 2 是捡漏,捡漏的刷新间隔时间为0.5-3秒,时间间隔长,不容易封ip @@ -104,11 +107,17 @@ IS_PROXY = 0 OPEN_TIME = "13:00:00" # 1=使用selenium获取devicesID # 2=使用网页端/otn/HttpZF/logdevice获取devicesId,这个接口的算法目前可能有点问题,如果登录一直302的请改为配置1 +# 3=自己打开浏览器在headers-Cookies中抓取RAIL_DEVICEID和RAIL_EXPIRATION,这个就不用配置selenium COOKIE_TYPE = 1 # 如果COOKIE_TYPE=1,则需配置chromeDriver路径,下载地址http://chromedriver.storage.googleapis.com/index.html # chromedriver配置版本只要和chrome的大版本匹配就行 CHROME_PATH = "" +# 如果COOKIE_TYPE=1, 则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值 +RAIL_EXPIRATION = "" +RAIL_DEVICEID = "" + + # 1=>为一直随机ua,2->只启动的时候随机一次ua RANDOM_AGENT = 2 @@ -116,12 +125,12 @@ PASSENGER_TICKER_STR = { '一等座': 'M', '特等座': 'P', '二等座': 'O', - '商务座': "9", - '硬座': "1", - '无座': "1", - '软座': "2", - '软卧': "3", - '硬卧': "4", + '商务座': 9, + '硬座': 1, + '无座': 1, + '软座': 2, + '软卧': 4, + '硬卧': 3, } # 保护12306官网请求频率,设置随机请求时间,原则为5分钟不大于80次 @@ -131,4 +140,4 @@ MAX_TIME = 5 MIN_TIME = 3 # 软件版本 -RE_VERSION = "1.1.114" \ No newline at end of file +RE_VERSION = "1.1.116" diff --git a/config/getCookie.py b/config/getCookie.py index 9b9d220..32e8872 100644 --- a/config/getCookie.py +++ b/config/getCookie.py @@ -30,6 +30,16 @@ def getDrvicesID(session): print("cookie获取完成") elif TickerConfig.COOKIE_TYPE is 2: request_device_id(session) + elif TickerConfig.COOKIE_TYPE is 3: + # RAIL_DEVICEID,RAIL_EXPIRATION的值打开12306官网可以获取headers-Cookies + if not TickerConfig.RAIL_DEVICEID or TickerConfig.RAIL_EXPIRATION: + print("警告!!: RAIL_DEVICEID,RAIL_EXPIRATION的值为空,请手动打开12306官网可以获取headers-Cookies中的RAIL_DEVICEID,RAIL_EXPIRATION,填入配置文件中") + cookies = [{ + "RAIL_DEVICEID": TickerConfig.RAIL_DEVICEID, + "RAIL_EXPIRATION": TickerConfig.RAIL_EXPIRATION, + }] + session.httpClint.set_cookies(cookies) + session.cookies = cookies def request_device_id(session): diff --git a/inter/AutoSubmitOrderRequest.py b/inter/AutoSubmitOrderRequest.py index 8788e6a..806071a 100644 --- a/inter/AutoSubmitOrderRequest.py +++ b/inter/AutoSubmitOrderRequest.py @@ -6,6 +6,7 @@ from config.TicketEnmu import ticket from inter.CheckRandCodeAnsyn import checkRandCodeAnsyn from inter.GetQueueCountAsync import getQueueCountAsync from inter.GetRandCode import getRandCode +import TickerConfig class autoSubmitOrderRequest: @@ -60,8 +61,8 @@ class autoSubmitOrderRequest: data["train_date"] = self.train_date data["tour_flag"] = "dc" data["purpose_codes"] = "ADULT" - data["query_from_station_name"] = self.session.from_station - data["query_to_station_name"] = self.session.to_station + data["query_from_station_name"] = TickerConfig.FROM_STATION + data["query_to_station_name"] = TickerConfig.TO_STATION data["cancel_flag"] = 2 data["bed_level_order_num"] = "000000000000000000000000000000" data["passengerTicketStr"] = self.passengerTicketStr @@ -92,7 +93,7 @@ class autoSubmitOrderRequest: toStationTelecode=self.query_to_station_name, leftTicket=self.leftTicket, set_type=self.set_type, - users=len(self.session.ticke_peoples), + users=len(TickerConfig.TICKET_PEOPLES), station_dates=self.train_date, passengerTicketStr=self.passengerTicketStr, oldPassengerStr=self.oldPassengerStr,