過年了嗦明,我們每個人都會回家過年库北,說到過年就不得不提搶票朴恳,畢竟過年回家的票都是一票難求欺栗,而以前都是靠購買加速包來提速搶票毫痕,前幾天在公眾號看到github上一個很火的12306搶票項目,而且我自己本職也是一個辣雞程序猿迟几,所以就想試試能不能把這個項目clone下來消请,調(diào)試并跑起來,于是我抱著試一試的態(tài)度类腮,花了一些時間臊泰,安裝虛擬機,克隆代碼到本地蚜枢,安裝環(huán)境缸逃,調(diào)試bug,最終把它跑起來了厂抽,并且成功的買到了票需频,所以就想把這個過程記錄下來,雖然項目不是自己寫的筷凤,而且自己本職也是java大數(shù)據(jù)方向昭殉,python也不是很懂,但是很到項目跑通還是覺得很酷藐守,我想這就是作為程序猿的G點吧挪丢,就是項目成功運行并且能夠解決某些問題,在此膜拜開發(fā)12306項目的大佬吗伤,牛X3钥俊!足淆!
大佬的12306github項目地址:https://github.com/testerSunshine/12306
膜拜大佬,記得star啊
搶票思路:
0.環(huán)境:
- CentOS7
- jdk8
1.前提:
- 安裝python3(見我另外一篇文章)
- 安裝git
2.將項目克隆到本地(一定要克隆最新的代碼):
cd /opt/module
git clone https://github.com/testerSunshine/12306.git
3.安裝項目依賴:
cd /opt/module/12306
pip3 install -i https://mirrors.aliyun.com/pypi/simple -r requirements.txt
4.CentOS安裝google(見我另一篇文章)
5.在CentOS7上用Google登錄12306官網(wǎng):
查到RAIL_EXPIRATION 礁阁,RAIL_DEVICEID
6.修改配置文件TickerConfig.py
cd /opt/module/12306
vi TickerConfig.py
(1)更改關(guān)鍵參數(shù):
TickerConfig.py
# 填入需要購買的車次(list)巧号,"G1353"
# 修改車次填入規(guī)則,注:(以前設(shè)置的車次邏輯不變)姥闭,如果車次填入為空丹鸿,那么就是當日乘車所有車次都納入篩選返回
# 不填車次是整個list為空才算,如果不是為空棚品,依然會判斷車次的靠欢,這種是錯誤的寫法 [""], 正確的寫法 []
STATION_TRAINS = ["G1353","A1687","C2020"]
# 時間范圍 如果所有時間段,則用 00:00-23:59
START_TIME = "00:00"
END_TIME = "23:59"
# 出發(fā)日期(list) "2018-01-06", "2018-01-07"
STATION_DATES = [
"2020-01-18"
]
# 出發(fā)城市廊敌,比如深圳北,就填深圳就搜得到
FROM_STATION = "廣州南"
# 到達城市 比如深圳北门怪,就填深圳就搜得到
TO_STATION = "隆回"
# 座位(list) 多個座位ex:
# "商務(wù)座",
# "一等座",
# "二等座",
# "特等座",
# "軟臥",
# "硬臥",
# "硬座",
# "無座",
# "動臥",
SET_TYPE = ["二等座"]
# 乘車人(list) 多個乘車人ex:
# "張三",
# "李四"
TICKET_PEOPLES = ["張三"]
# 12306登錄賬號骡澈,填入自己的12306賬號密碼
USER = "xxx"
PWD = "xxx"
# 云打碼服務(wù)器地址
HOST = "120.24.62.193:80"
# 郵箱配置,如果搶票成功掷空,將通過郵件配置通知給您
# 列舉163
# email: "xxx@163.com"
# notice_email_list: "123@qq.com"
# username: "xxxxx"
# password: "xxxxx
# host: "smtp.163.com"
# 列舉qq 肋殴,qq設(shè)置比較復雜,需要在郵箱-->賬戶-->開啟smtp服務(wù)坦弟,取得授權(quán)碼==郵箱登錄密碼
# email: "xxx@qq.com"
# notice_email_list: "123@qq.com"
# username: "qq號"
# password: "授權(quán)碼"
# host: "smtp.qq.com"
EMAIL_CONF = {
"IS_MAIL": True,
"email": "xxx@qq.com",
"notice_email_list": "xxx@qq.com",
"username": "xxx",
"password": "xxx",
"host": "smtp.qq.com",
}
# 如果COOKIE_TYPE=3, 則需配置RAIL_EXPIRATION护锤、RAIL_DEVICEID的值
RAIL_EXPIRATION = ""
RAIL_DEVICEID = ""
(2)注意:
- USER和PWD填買票的12306賬號
- HOST需要填寫可用的云打碼服務(wù)器
- 如果需要通過郵箱通知,比如qq郵箱需要開啟smtp服務(wù)email填寫發(fā)送者郵箱酿傍,notice_email_list填寫通知的郵箱烙懦,username填寫qq號,password填寫授權(quán)碼
- RAIL_EXPIRATION填寫在CentOS中chorme瀏覽器登錄12306后的cookie信息
- RAIL_DEVICEID填寫在CentOS中chorme瀏覽器登錄12306后的cookie信息
6.運行:
cd /opt/module/12306
python3 run.py c
python3 run.py r