1. 程式人生 > >python學習:12306火車票搶票程式碼公開揭祕

python學習:12306火車票搶票程式碼公開揭祕

火車票搶票程式碼公開揭祕

市場上很多火車票搶票軟體大家應該非常熟悉,但很少有人研究具體是怎麼實現的,所以覺得很神祕,其實很簡單。下面使用Python模擬搶票程式,給大家揭祕搶票到底是怎麼回事。

該程式碼僅供參考,主要用於大家溝通交流,禁止用於商業用途。

具體程式碼如下,可以修改成自己的12306使用者名稱賬號:

# -*- coding: utf-8 -*-
"""
@author: liuyw
"""
from splinter.browser import Browser
from time import sleep
import traceback
import time, sys

class huoche(object):
	"""docstring for huoche"""
	driver_name=''
	executable_path=''
	#使用者名稱,密碼
	username = u"
[email protected]
" passwd = u"xxxx" # cookies值得自己去找, 下面兩個分別是上海, 太原南 starts = u"%u4E0A%u6D77%2CSHH" ends = u"%u592A%u539F%2CTYV" # 時間格式2018-01-19 dtime = u"2018-01-19" # 車次,選擇第幾趟,0則從上之下依次點選 order = 0 ###乘客名 users = [u"xxx",u"xxx"] ##席位 xb = u"二等座" pz=u"成人票" """網址""" ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init" login_url = "https://kyfw.12306.cn/otn/login/init" initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306" buy="https://kyfw.12306.cn/otn/confirmPassenger/initDc" def __init__(self): self.driver_name='chrome' self.executable_path='/usr/local/bin/chromedriver' def login(self): self.driver.visit(self.login_url) self.driver.fill("loginUserDTO.user_name", self.username) # sleep(1) self.driver.fill("userDTO.password", self.passwd) print u"等待驗證碼,自行輸入..." while True: if self.driver.url != self.initmy_url: sleep(1) else: break def start(self): self.driver=Browser(driver_name=self.driver_name,executable_path=self.executable_path) self.driver.driver.set_window_size(1400, 1000) self.login() # sleep(1) self.driver.visit(self.ticket_url) try: print u"購票頁面開始..." # sleep(1) # 載入查詢資訊 self.driver.cookies.add({"_jc_save_fromStation": self.starts}) self.driver.cookies.add({"_jc_save_toStation": self.ends}) self.driver.cookies.add({"_jc_save_fromDate": self.dtime}) self.driver.reload() count=0 if self.order!=0: while self.driver.url==self.ticket_url: self.driver.find_by_text(u"查詢").click() count += 1 print u"迴圈點選查詢... 第 %s 次" % count # sleep(1) try: self.driver.find_by_text(u"預訂")[self.order - 1].click() except Exception as e: print e print u"還沒開始預訂" continue else: while self.driver.url == self.ticket_url: self.driver.find_by_text(u"查詢").click() count += 1 print u"迴圈點選查詢... 第 %s 次" % count # sleep(0.8) try: for i in self.driver.find_by_text(u"預訂"): i.click() sleep(1) except Exception as e: print e print u"還沒開始預訂 %s" %count continue print u"開始預訂..." # sleep(3) # self.driver.reload() sleep(1) print u'開始選擇使用者...' for user in self.users: self.driver.find_by_text(user).last.click() print u"提交訂單..." sleep(1) # self.driver.find_by_text(self.pz).click() # self.driver.find_by_id('').select(self.pz) # # sleep(1) # self.driver.find_by_text(self.xb).click() # sleep(1) self.driver.find_by_id('submitOrder_id').click() # print u"開始選座..." # self.driver.find_by_id('1D').last.click() # self.driver.find_by_id('1F').last.click() sleep(1.5) print u"確認選座..." self.driver.find_by_id('qr_submit_id').click() except Exception as e: print e if __name__ == '__main__': huoche=huoche() huoche.start()

在學習python、python爬蟲中有迷茫不知如何學習的朋友可以加python學習裙【 463024091 】,互幫互助,群裡有不錯的免費教程。無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!

相關推薦

python學習12306火車票程式碼公開揭祕

火車票搶票程式碼公開揭祕 市場上很多火車票搶票軟體大家應該非常熟悉,但很少有人研究具體是怎麼實現的,所以覺得很神祕,其實很簡單。下面使用Python模擬搶票程式,給大家揭祕搶票到底是怎麼回事。 該程式碼僅供參考,主要用於大家溝通交流,禁止用於商業用途。 具體

12306火車票Python程式碼

語言版本:Python 1、自動登入12306並保持Cookie 2、自動實現搶購設定的某日期的某車次的票 3、攻克排隊系統陷阱,避免進入排隊系統 4、迴圈監控某車次的票,直到有票,自動搶購 5、搶票時若出現異常,自動重新搶票,直到成功 '''

過年過節真是一難求!分享關於Python最新版12306自動指令碼

為了方面和節約時間,本次使用的python編譯器和直譯器分別為pycharm,python3.6.1RC 逢年過節 有一個神奇的網站 你一定不陌生 “12306” 是不是總搶不到票啊 是不是觀察著餘票最新動態 告訴你一個新技能 賊666 12306自動搶票 前

python 學習筆記一 自動軟體

這是一個系列,記錄我練習python時的程式碼,有些是參考網上程式碼,送給那些想要學習python的人。可以相互交流, wx: Lxp911221 喜歡的加我吧 這篇是一個搶票軟體,有登入,自動選座,自動下單功能。用的splinter.browser 測試庫實

Python + selenium + requests實現12306全自動,驗證碼破解加自動點選!!!

Python + selenium + requests實現12306全自動搶票,驗證碼破解加自動點選!!!!! 測試結果: 整個買票流程可以再快一點,不過為了穩定起見,有些地方等待了一些時間 完整程式,拿去可用 整個程式分了三個模組:購票模組(主體)、驗證碼識別模組、餘票查

Github上最新發布的12306 自動開源工具(Python

12306 鑑於市場上的大多數搶票軟體的安全問題和效率問題,就手動修改了開源的程式碼來為自己贏得撿漏的機會,誰叫本電腦是linux系統呢。縮減重新整理的頻率也是一種策略,哈哈!!! 這是一款工具 這是一款搶票工具 這是一款 12306 自動搶票開源工

12306春運火車票攻略——3分鐘到熱門票

    2013年春節即將來臨,您一定在為買回家的火車票而發愁吧,上12306網站(http://www.12306.cn/)或者撥打熱線 95105105,您總髮現自己比別人慢一拍,本來票就不多,都被人家搶去了,鬱悶吧!搶票什麼的,搶時間最重要!1秒之差就可能錯過死亡之票。話不多 說,過年要回家的趕緊開啟

12306自動軟體程式碼實現

昨天我發的是抓取的12306資料包,然後分析了一下,今天按照昨天的分析 用程式碼實現了,如果有需要的同學們可以看一下 ,實現的功能有,登入,驗證碼識別,自動查票,有餘票點選預定, 差了最後一步提交訂單。同學們可以自己研究一下。 import requests impor

Python學習集合(set)

pythonpython的set和其他語言類似, 是一個無序不重復元素集, 基本功能包括關系測試和消除重復元素. 集合對象還支持union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算. sets 支持 x in s

Python學習函數(function)

python編寫函數def是可執行的代碼。Python函數是有一個新的語句便攜的,即def。不像C這樣的編譯語言,def是一個可執行的語句,函數並不存在,知道Python運行了def後才存在。事實上,if語句、while語句升至是其他的 def中嵌套都是合法的。def創建一個函數對象,並將其賦值給某一變量名。

Python學習作用域(namespace)

pythonPython作用域基礎Python有四個作用域:L(Local)本地也稱作局部作用域;E(Enclosing)閉包函數外的函數中;G(global)全局作用域;B(Built-in)內建作用域;變量可以在三個不同的地方分配:如果一個變量在def內賦值,它被定位在這個函數之內。如果一個變量在嵌套的d

Python學習面向對象(OOP)

python類和實例1、類(class):有屬性有方法就是類。下面是Student類:class Student(object): def __init__(self, name, score): self.name = name self.score = score

12306火車票失敗!您的身份信息未經核驗,一般人是不能訂的,我訂了,可是沒成功。。。

ext con efault jsb fill ast edit 技術 post 12306火車票訂票失敗!您的身份信息未經核驗。一般人是不能訂票的,我訂了,可是沒成功。。。 上圖哈,未經核驗能能夠訂票,只是出票失敗了。看來12306不是吃幹飯的

Python學習基本數據類型與變量(中)與基礎之條件及循環(上)

sets 但是 while循環 spl view put 算數運算 sse 邏輯運算 一.數據類型和變量 1.可變與不可變數據類型   可變數據類型:在id不變的情況下,數據類型內部的元素可以改變   列表   字典   不可變數據類型:value改變,id也跟著改變

Python學習函數進階

eva hide con span money 技術分享 from 內部 size 本節要點:命名空間及作用域,函數嵌套,函數名本質,閉包 命名空間:   命名空間的本質:存放名字與值的綁定關系。 三種命名空間:   全局命名空間   局部命名空間   內置命名空間 三種命

python學習函數傳參數

函數傳參 參數 傳參數 bsp pri () python學習 for [1] #!/usr/bin/python import sys def isNum(s): for i in s: if i in ‘0123456789‘:

python學習字典排序

eve undle pat openss service cte x86_64 rac 排序 按字典值排序 按照字典value排序,類似sort -k 命令 import operator x= {1:2,3:4,4:3,2:1,0:0} sorted_x = so

第一階段Python學習1、基礎知識、if語句、循環

定義變量 assert loop 所有 方法 right 源碼 under 速度 本文內容:   一、Python介紹級應用方向   二、Python 特性   三、hello world 程序   四、Python 格式化輸出   五、變量、數據類型、註釋   六、表達

python學習變量

變量##變量print("Hello World!") name = "xiguapi" name2 = name print(name,name2) name= "Jack" print ("What is the value name2

12306 分流 純凈綠色版

process cto ima 使用 短信郵件 alt 更新 準備 src 全程自動搶票,雲打碼自動識別驗證碼,多線程秒單、穩定撿漏,支持多天、多車次、短信提醒。??12306Bypass,12306分流搶票軟件,完全免費的12306搶票軟件,功能強易使用,全程自動搶票,雲