火車票搶票python代碼公開揭秘!
更新時間:2018年03月08日 11:03:03 作者:閔開慧
火車票搶票python代碼公開揭秘!使用Python模擬搶票程序,給大家揭秘搶票到底是怎么回事,感興趣的小伙伴們可以參考一下
市場上很多火車票搶票軟件大家應(yīng)該非常熟悉,但很少有人研究具體是怎么實現(xiàn)的,所以覺得很神秘,其實很簡單。下面使用Python模擬搶票程序,給大家揭秘搶票到底是怎么回事。

該代碼僅供參考,主要用于大家溝通交流,禁止用于商業(yè)用途。
具體代碼如下,可以修改成自己的12306用戶名賬號:
# -*- coding: utf-8 -*-
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"xxx@qq.com"
passwd = u"xxxx"
starts = u"%u4E0A%u6D77%2CSHH"
ends = u"%u592A%u539F%2CTYV"
dtime = u"2018-01-19"
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"購票頁面開始..."
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"循環(huán)點擊查詢..." % count
# sleep(1)
try:
self.driver.find_by_text(u"預(yù)訂")[self.order - 1].click()
except Exception as e:
print e
print u"還沒開始預(yù)訂"
continue
else:
while self.driver.url == self.ticket_url:
self.driver.find_by_text(u"查詢").click()
count += 1
print u"循環(huán)點擊查詢..." % count
# sleep(0.8)
try:
for i in self.driver.find_by_text(u"預(yù)訂"):
i.click()
sleep(1)
except Exception as e:
print e
print u"還沒開始預(yù)訂 %s" %count
continue
print u"開始預(yù)訂..."
# 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()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python腳本監(jiān)控logstash進程并郵件告警實例
這篇文章主要介紹了python腳本監(jiān)控logstash進程并郵件告警實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python協(xié)程之動態(tài)添加任務(wù)的方法
今天小編就為大家分享一篇python協(xié)程之動態(tài)添加任務(wù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python實現(xiàn)實現(xiàn)gltf預(yù)覽圖的示例詳解
隨著3D技術(shù)的不斷發(fā)展,GLTF逐漸成為了Web和移動應(yīng)用程序中最流行的3D文件格式之一,本文將介紹如何使用Python生成GLTF模型的預(yù)覽圖,需要的可以了解下2025-02-02
pycharm部署django項目到云服務(wù)器的詳細流程
今天重點給大家介紹pycharm部署django項目到云服務(wù)器的詳細流程,首先大家需要先下載python3.8壓縮包,然后通過一系列命令完成操作,具體實現(xiàn)方法,跟隨小編一起看看吧2021-06-06

