12306 快速搶票購票程序

12306 快速搶票購票程序

目錄

特性

  • 1.支持多人倦逐、多座位譬正、多車次智能選票。
  • 2.支持手動(dòng)自動(dòng)識別圖片驗(yàn)證碼檬姥。
  • 3.支持代理,防止ip被拉黑曾我。
  • 4.配置簡單,使用方便健民。

環(huán)境

System: Windows\Max\Linux
Python: 3.6

使用

程序只支持Python3.x抒巢,運(yùn)行程序需要有一個(gè)Python環(huán)境推薦使用虛擬環(huán)境。

  1. 下載項(xiàng)目
git clone https://github.com/janlle/12306.git 12306
cd 12306
  1. 安裝依賴

python install -r requirements.txt

3.配置項(xiàng)目的配置文件 ticket_config.py

# coding:utf-8

# ====================== 必填項(xiàng) ======================
# 12306賬號
ACCOUNT = 'wealip'

# 12306密碼
PASSWORD = '12306FF0'

# 出發(fā)站
FROM_STATION = '武昌'

# 到達(dá)站
TO_STATION = '長沙'

# 出發(fā)時(shí)間,例如: 2019-10-15.
DATE = '2019-12-29'

# 乘車人 (12306賬號必須添加下列乘客信息)
USER = ['張三', '李四']

# 車次(車次首字母大寫)
TRAINS_NO = ['Z89', 'K81']

# 座位類別: 商務(wù)座(9),一等座(8),二等座(7),高級軟臥(6),軟臥(5),動(dòng)臥(4),硬臥(3),軟座(2),硬座(1),無座(0)
SEAT_TYPE = [1, 2, 3]

# ====================== 非必填項(xiàng) ======================

# 驗(yàn)證碼識別方式(0:自動(dòng)秉犹,1:手動(dòng))
CAPTCHA_IDENTIFY = 0

# 通知手機(jī)號
PHONE = '159xxx00xxx'

# 是否使用代理
USE_PROXY = False

  1. 啟動(dòng)你的應(yīng)用
python start.py
  1. 運(yùn)行日志

Using TensorFlow backend.
2019-12-06 09:22:42,522 INFO     4828  - stations.py     [line:405]: 車站數(shù)據(jù)同步成功
2019-12-06 09:22:44,210 INFO     4828  - verify_code.py  [line: 94]: 題目為: ['跑步機(jī)']
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 選項(xiàng)1.金字塔
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 選項(xiàng)2.雨靴
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 選項(xiàng)3.跑步機(jī)
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 選項(xiàng)4.中國結(jié)
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 選項(xiàng)5.調(diào)色板
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 選項(xiàng)6.訂書機(jī)
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 選項(xiàng)7.金字塔
2019-12-06 09:22:44,760 INFO     4828  - verify_code.py  [line:102]: 選項(xiàng)8.中國結(jié)
2019-12-06 09:22:44,760 INFO     4828  - login.py        [line:154]: 答案為: ['3']
2019-12-06 09:22:44,949 INFO     4828  - login.py        [line:163]: 驗(yàn)證碼校驗(yàn)成功
2019-12-06 09:22:45,119 INFO     4828  - login.py        [line: 61]: 登錄成功蛉谜,共登錄 1 次
2019-12-06 09:22:45,317 INFO     4828  - login.py        [line:120]: 驗(yàn)證通過,用戶名: 張三
+------+-------------------+-----------------------+-------+--------+--------+--------+----------+------+------+------+------+------+------+
| 車次 | 出發(fā)站 - 到達(dá)站   | 出發(fā)時(shí)間 - 到達(dá)時(shí)間  | 歷時(shí)  | 商務(wù)座 | 一等座 | 二等座 | 高級軟臥 | 軟臥 | 動(dòng)臥 | 硬臥 | 軟座 | 硬座 | 無座 |
+------+-------------------+-----------------------+-------+--------+--------+--------+----------+------+------+------+------+------+------+
| Z89  | 武昌 - 長沙    | 01:34 - 04:49         | 03:15 | --     | --     | --     | --       | no   | --   | no   | --   | yes  | no   |
+------+-------------------+-----------------------+-------+--------+--------+--------+----------+------+------+------+------+------+------+
2019-12-06 09:22:46,840 INFO     4828  - start.py        [line: 76]: [乘車人: ['張三', '李四'], 出發(fā)站: 武昌, 到達(dá)站: 長沙, 車次: Z89, 座位: 硬座, 出發(fā)時(shí)間: 2019-12-29 01:34:00]
2019-12-06 09:22:46,841 INFO     4828  - start.py        [line: 77]: 車票訂單提交成功崇堵,請稍后...
2019-12-06 09:22:47,037 INFO     4828  - order.py        [line:221]: 購票結(jié)果查詢中型诚,第 1 次查詢...
2019-12-06 09:22:52,213 INFO     4828  - order.py        [line:221]: 購票結(jié)果查詢中,第 2 次查詢...
2019-12-06 09:22:57,290 INFO     4828  - order.py        [line:218]: 下單成功,請登錄 12306 訂單中心 -> 火車票訂單 -> 未完成訂單鸳劳,支付訂單!
Corrupt JPEG data: 16 extraneous bytes before marker 0xd9

Process finished with exit code 0

項(xiàng)目整體流程

登錄

登錄模塊的整體流程為

  • 1.使用http請求獲取圖形驗(yàn)證碼的 Base64 數(shù)據(jù)然后轉(zhuǎn)換為圖片狰贯,url /passport/captcha/captcha-image64

  • 2.使用圖片識別模塊(基于TensorFlow的圖片識別)得到答案的正確坐標(biāo)

  • 3.調(diào)用驗(yàn)證碼校驗(yàn)接口校驗(yàn)驗(yàn)證碼,url /passport/captcha/captcha-check

  • 4.調(diào)用登錄接口帶上用戶名赏廓、密碼涵紊、上一步驗(yàn)證碼坐標(biāo)等 url /passport/web/login

查票、選座

查票步驟比較簡單

  • 1.調(diào)用12306的車票查詢接口幔摸,得到所有車次信息 查詢接口url /otn/leftTicket/query

  • 2.解析加密過得返回?cái)?shù)據(jù)得到車票信息摸柄。

  • 3.選擇合適的座位依次從最高級到最低級篩選。

查詢下單結(jié)果

  • 1.先提交一個(gè)下單的請求帶上上面步驟中的一個(gè)secretStr字段和其他字段既忆,此步驟是判斷是否可以下單驱负。

  • 2.請求一個(gè)靜態(tài) html 頁面,解析 html 得到下單的必要參數(shù)尿贫,頁面url /otn/confirmPassenger/initDc电媳。

  • 3.查詢賬號的乘客信息踏揣,查詢接口url cn/otn/confirmPassenger/getPassengerDTOs

  • 4.提交車次的乘客庆亡、座位類別、日志等信息捞稿,接口url cn/otn/confirmPassenger/checkOrderInfo

  • 5.獲取上次提交訂單的結(jié)果又谋,如果返回信息都是ok的表示可以繼續(xù)提價(jià)訂單拼缝,接口url /otn/confirmPassenger/getQueueCount

  • 6.提交最終的車票訂單,如果到此步驟表示前面的其他步驟都是OK的彰亥。

  • 7.查詢下單結(jié)果咧七,正常12306購票成功后會有一定的延遲幾秒或幾十秒返回下單結(jié)果,接口地址 /otn/confirmPassenger/queryOrderWaitTime

最后

到此項(xiàng)目的整體使用和流程都已經(jīng)介紹完畢 項(xiàng)目源碼地址 Gighub

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末任斋,一起剝皮案震驚了整個(gè)濱河市继阻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌废酷,老刑警劉巖瘟檩,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異澈蟆,居然都是意外死亡墨辛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門趴俘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睹簇,“玉大人,你說我怎么就攤上這事寥闪√荩” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵橙垢,是天一觀的道長垛叨。 經(jīng)常有香客問我,道長柜某,這世上最難降的妖魔是什么嗽元? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮喂击,結(jié)果婚禮上剂癌,老公的妹妹穿的比我還像新娘。我一直安慰自己翰绊,他們只是感情好佩谷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著监嗜,像睡著了一般谐檀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裁奇,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天桐猬,我揣著相機(jī)與錄音,去河邊找鬼刽肠。 笑死溃肪,一個(gè)胖子當(dāng)著我的面吹牛免胃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惫撰,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼羔沙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了厨钻?” 一聲冷哼從身側(cè)響起扼雏,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夯膀,沒想到半個(gè)月后呢蛤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棍郎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年其障,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涂佃。...
    茶點(diǎn)故事閱讀 38,747評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡励翼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辜荠,到底是詐尸還是另有隱情汽抚,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布伯病,位于F島的核電站造烁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏午笛。R本人自食惡果不足惜惭蟋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望药磺。 院中可真熱鬧告组,春花似錦、人聲如沸癌佩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽围辙。三九已至我碟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姚建,已是汗流浹背矫俺。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恳守。 一個(gè)月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像贩虾,于是被迫代替她去往敵國和親催烘。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容