GitHub搶票小助手12306,成功幫我搶到回家的票

網(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設(shè)置當(dāng)前系統(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)當(dā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 修改配置文件

設(shè)置你的出發(fā)地,目的地還有乘車人姓名,車次以及座位
找到源碼目錄,找到TickerConfig.py文件,一定要查看配置文件中的每個配置項的含義,這里貼出來我的配置項:

# -*- coding=utf-8 -*-
# 關(guān)于軟件使用配置說明,一定要看?。。?# ps: 如果是候補車票,需要通過人證一致性核驗的用戶及激活的“鐵路暢行”會員可以提交候補需求,請您按照操作說明在鐵路12306app.上完成人證核驗
# 關(guān)于候補了之后是否還能繼續(xù)撿漏的問題在此說明: 軟件為全自動候補加撿漏,如果軟件候補成功則會停止搶票,發(fā)出郵件通知,但是不會影響你繼續(xù)撿漏,
# 如果這個時候撿漏撿到的話,也是可以付款成功的,也就是說,撿漏+候補,可以最大程度提升搶票成功率

# 刷票模式:1=刷票 2=候補+刷票
TICKET_TYPE = 2

# 出發(fā)日期(list) "2018-01-06", "2018-01-07"
STATION_DATES = [
    "2020-01-20"
]

# 填入需要購買的車次(list),"G1353"
# 修改車次填入規(guī)則,注:(以前設(shè)置的車次邏輯不變),如果車次填入為空,那么就是當(dāng)日乘車所有車次都納入篩選返回
# 不填車次是整個list為空才算,如果不是為空,依然會判斷車次的,這種是錯誤的寫法 [""], 正確的寫法 []
STATION_TRAINS = ["T289"]

# 出發(fā)城市,比如深圳北,就填深圳就搜得到
FROM_STATION = "北京西"

# 到達城市 比如深圳北,就填深圳就搜得到
TO_STATION = "許昌"

# 座位(list) 多個座位ex:
# "商務(wù)座",
# "一等座",
# "二等座",
# "特等座",
# "軟臥",
# "硬臥",
# "硬座",
# "無座",
# "動臥",
SET_TYPE = ["硬臥"]

# 當(dāng)余票小于乘車人,如果選擇優(yōu)先提交,則刪減聯(lián)系人和余票數(shù)一致在提交
# bool
IS_MORE_TICKET = True

# 乘車人(list) 多個乘車人ex:
# "張三",
# "李四"
TICKET_PEOPLES = ["xxx"]

# 12306登錄賬號
USER = "xxx@sina.cn"
PWD = "xxxxxx"

# 加入小黑屋時間默認為5分鐘,此功能為了防止僵尸票導(dǎo)致一直下單不成功錯過正常的票
TICKET_BLACK_LIST_TIME = 5

# 自動打碼
IS_AUTO_CODE = True

# 設(shè)置2本地自動打碼,需要配置tensorflow和keras庫,3為云打碼,由于云打碼服務(wù)器資源有限(為2h4C的cpu服務(wù)器),請不要惡意請求,不然只能關(guān)閉服務(wù)器
# ps: 請不要一直依賴云服務(wù)器資源,在此向所有提供服務(wù)器同學(xué)表示感謝
AUTO_CODE_TYPE = 2

# 此處設(shè)置云打碼服務(wù)器地址,如果有自建的服務(wù)器,可以自行更改
HOST = "120.77.154.140:8000"
REQ_URL = "/verify/base64/"
HTTP_TYPE = "http"
# HOST="12306.yinaoxiong.cn" #備用服務(wù)器穩(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設(shè)置比較復(fù)雜,需要在郵箱-->賬戶-->開啟smtp服務(wù),取得授權(quán)碼==郵箱登錄密碼
#  email: "xxx@qq.com"
#  notice_email_list: "123@qq.com"
#  username: "xxxxx"
#  password: "授權(quán)碼"
#  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 并關(guān)注獲得搶票結(jié)果通知的公眾號
SERVER_CHAN_CONF = {
    "is_server_chan": False,
    "secret": ""
}

# 是否開啟cdn查詢,可以更快的檢測票票 1為開啟,2為關(guān)閉
IS_CDN = 1

# 下單接口分為兩種,1 模擬網(wǎng)頁自動撿漏下單(不穩(wěn)定),2 模擬車次后面的購票按鈕下單(穩(wěn)如老狗)
ORDER_TYPE = 2

# 下單模式 1 為預(yù)售,整點刷新,刷新間隔0.1-0.5S, 然后會校驗時間,比如12點的預(yù)售,那腳本就會在12.00整檢票,刷新訂單
#         2 是撿漏,撿漏的刷新間隔時間為0.5-3秒,時間間隔長,不容易封ip
ORDER_MODEL = 1

# 是否開啟代理, 0代表關(guān)閉, 1表示開始
# 開啟此功能的時候請確保代理ip是否可用,在測試放里面經(jīng)過充分的測試,再開啟此功能,不然可能會耽誤你購票的寶貴時間
# 使用方法:
# 1、在agency/proxy_list列表下填入代理ip
# 2、測試UnitTest/TestAll/testProxy 測試代理是否可以用
# 3、開啟代理ip
IS_PROXY = 0

# 預(yù)售放票時間, 如果是撿漏模式,可以忽略此操作
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 準(zhǔn)備的環(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',
    '商務(wù)座': 9,
    '硬座': 1,
    '無座': 1,
    '軟座': 2,
    '軟臥': 4,
    '硬臥': 3,
}

# 保護12306官網(wǎng)請求頻率,設(shè)置隨機請求時間,原則為5分鐘不大于80次
# 最大間隔請求時間
MAX_TIME = 3
# 最小間隔請求時間
MIN_TIME = 1

# 軟件版本
RE_VERSION = "1.2.004"

這里需要說明一點,如何獲取RAIL_EXPIRATION跟RAIL_DEVICEID的值呢?
屬性COOKIE_TYPE = 3 我設(shè)置的值為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 = ""

準(zhǔn)備工作就緒,開始搶票。

5 啟動前請先篩選cdn,這點很重要

python3 run.py c

6 啟動服務(wù)

python3 run.py r

完美,貼張圖,目前還在搶票中


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容