網(wǎng)路搶票小助手12306智能刷票危纫,訂票宗挥,想著Down下來操作一波看看效果。
查看官網(wǎng)种蝶,按照官網(wǎng)教程一步步操作:
1 安裝最新版本python
官網(wǎng)支持python3.6以上契耿,查看Mac系統(tǒng)自帶的python版本
python -V
Version為2.7,如何安裝最新的python版本呢螃征?
搜索一下是否已經(jīng)存在python3的包:
brew search python3
已經(jīng)存在搪桂,直接安裝:
brew install python3
Mac設置當前系統(tǒng)的默認版本修改為3.*版本
查找python3安裝路徑
brew info python3
修改 Mac 系統(tǒng)配置文件
vi ~/.bash_profile
添加配置信息
alias python="/usr/local/bin/python3"
編譯系統(tǒng)配置文件
source ~/.bash_profile
系統(tǒng)當前的python版本。
python -V
ok,python3最新包安裝完成踢械。
2 下載源碼
源碼下載地址:https://github.com/testerSunshine/12306.git
3 安裝方法x
命令:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
這里多試幾次酗电,我試了很多次,差點放棄内列。
安裝過程中用到遇到了一個坑撵术,提示
image.png
解決方案:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --user ## 加上--user問題解決
4 修改配置文件
設置你的出發(fā)地,目的地還有乘車人姓名话瞧,車次以及座位
找到源碼目錄嫩与,找到TickerConfig.py文件,一定要查看配置文件中的每個配置項的含義交排,這里貼出來我的配置項:
# -*- coding=utf-8 -*-
# 關于軟件使用配置說明划滋,一定要看!0Bā处坪!
# ps: 如果是候補車票,需要通過人證一致性核驗的用戶及激活的“鐵路暢行”會員可以提交候補需求架专,請您按照操作說明在鐵路12306app.上完成人證核驗
# 關于候補了之后是否還能繼續(xù)撿漏的問題在此說明: 軟件為全自動候補加撿漏稻薇,如果軟件候補成功則會停止搶票,發(fā)出郵件通知胶征,但是不會影響你繼續(xù)撿漏塞椎,
# 如果這個時候撿漏撿到的話,也是可以付款成功的睛低,也就是說案狠,撿漏+候補,可以最大程度提升搶票成功率
# 刷票模式:1=刷票 2=候補+刷票
TICKET_TYPE = 2
# 出發(fā)日期(list) "2018-01-06", "2018-01-07"
STATION_DATES = [
"2020-01-20"
]
# 填入需要購買的車次(list)钱雷,"G1353"
# 修改車次填入規(guī)則骂铁,注:(以前設置的車次邏輯不變),如果車次填入為空罩抗,那么就是當日乘車所有車次都納入篩選返回
# 不填車次是整個list為空才算,如果不是為空套蒂,依然會判斷車次的,這種是錯誤的寫法 [""], 正確的寫法 []
STATION_TRAINS = ["T289"]
# 出發(fā)城市操刀,比如深圳北,就填深圳就搜得到
FROM_STATION = "北京西"
# 到達城市 比如深圳北骨坑,就填深圳就搜得到
TO_STATION = "許昌"
# 座位(list) 多個座位ex:
# "商務座",
# "一等座",
# "二等座",
# "特等座",
# "軟臥",
# "硬臥",
# "硬座",
# "無座",
# "動臥",
SET_TYPE = ["硬臥"]
# 當余票小于乘車人撼嗓,如果選擇優(yōu)先提交,則刪減聯(lián)系人和余票數(shù)一致在提交
# bool
IS_MORE_TICKET = True
# 乘車人(list) 多個乘車人ex:
# "張三",
# "李四"
TICKET_PEOPLES = ["xxx"]
# 12306登錄賬號
USER = "xxx@sina.cn"
PWD = "xxxxxx"
# 加入小黑屋時間默認為5分鐘,此功能為了防止僵尸票導致一直下單不成功錯過正常的票
TICKET_BLACK_LIST_TIME = 5
# 自動打碼
IS_AUTO_CODE = True
# 設置2本地自動打碼粉捻,需要配置tensorflow和keras庫,3為云打碼斑芜,由于云打碼服務器資源有限(為2h4C的cpu服務器),請不要惡意請求押搪,不然只能關閉服務器
# ps: 請不要一直依賴云服務器資源,在此向所有提供服務器同學表示感謝
AUTO_CODE_TYPE = 2
# 此處設置云打碼服務器地址浅碾,如果有自建的服務器大州,可以自行更改
HOST = "120.77.154.140:8000"
REQ_URL = "/verify/base64/"
HTTP_TYPE = "http"
# HOST="12306.yinaoxiong.cn" #備用服務器穩(wěn)定性較差
# 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": "782480917@qq.com",
"notice_email_list": "",
"username": "",
"password": "",
"host": "smtp.qq.com",
}
# 是否開啟 server醬 微信提醒排嫌, 使用前需要前往 http://sc.ftqq.com/3.version 掃碼綁定獲取 SECRET 并關注獲得搶票結果通知的公眾號
SERVER_CHAN_CONF = {
"is_server_chan": False,
"secret": ""
}
# 是否開啟cdn查詢缰犁,可以更快的檢測票票 1為開啟,2為關閉
IS_CDN = 1
# 下單接口分為兩種帅容,1 模擬網(wǎng)頁自動撿漏下單(不穩(wěn)定)颇象,2 模擬車次后面的購票按鈕下單(穩(wěn)如老狗)
ORDER_TYPE = 2
# 下單模式 1 為預售并徘,整點刷新,刷新間隔0.1-0.5S, 然后會校驗時間蕴茴,比如12點的預售,那腳本就會在12.00整檢票姐直,刷新訂單
# 2 是撿漏,撿漏的刷新間隔時間為0.5-3秒简肴,時間間隔長,不容易封ip
ORDER_MODEL = 1
# 是否開啟代理, 0代表關閉, 1表示開始
# 開啟此功能的時候請確保代理ip是否可用佣渴,在測試放里面經(jīng)過充分的測試初斑,再開啟此功能,不然可能會耽誤你購票的寶貴時間
# 使用方法:
# 1见秤、在agency/proxy_list列表下填入代理ip
# 2、測試UnitTest/TestAll/testProxy 測試代理是否可以用
# 3鹃答、開啟代理ip
IS_PROXY = 0
# 預售放票時間, 如果是撿漏模式,可以忽略此操作
OPEN_TIME = "12:59:57"
# 1=使用selenium獲取devicesID
# 2=使用網(wǎng)頁端/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 準備的環(huán)境變量,windows環(huán)境可以不用管這個參數(shù)
CHROME_CHROME_PATH = "/opt/google/chrome/google-chrome"
# 如果COOKIE_TYPE=3, 則需配置RAIL_EXPIRATION紊服、RAIL_DEVICEID的值
RAIL_EXPIRATION = "xxx"
RAIL_DEVICEID = "xxx"
# 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官網(wǎng)請求頻率,設置隨機請求時間围苫,原則為5分鐘不大于80次
# 最大間隔請求時間
MAX_TIME = 3
# 最小間隔請求時間
MIN_TIME = 1
# 軟件版本
RE_VERSION = "1.2.004"
這里需要說明一點,如何獲取RAIL_EXPIRATION跟RAIL_DEVICEID的值呢拧揽?
屬性COOKIE_TYPE = 3 我設置的值為3
# 1=使用selenium獲取devicesID
# 2=使用網(wǎng)頁端/otn/HttpZF/logdevice獲取devicesId腺占,這個接口的算法目前可能有點問題淤袜,如果登錄一直302的請改為配置1
# 3=自己打開瀏覽器在headers-Cookies中抓取RAIL_DEVICEID和RAIL_EXPIRATION衰伯,這個就不用配置selenium
COOKIE_TYPE = 3
# 如果COOKIE_TYPE=3, 則需配置RAIL_EXPIRATION、RAIL_DEVICEID的值
RAIL_EXPIRATION = ""
RAIL_DEVICEID = ""
準備工作就緒烦周,開始搶票尽爆。
5 啟動前請先篩選cdn读慎,這點很重要
python3 run.py c
6 啟動服務
python3 run.py r
完美,貼張圖幅狮,目前還在搶票中
image.png