火车票抢票代码公开揭秘


声明:本文转载自https://my.oschina.net/mkh/blog/1605966,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

火车票抢票代码公开揭秘

市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单。下面使用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"xxx@qq.com" 	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" 	login_url='https://kyfw.12306.cn/otn/login/init' 	 	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()

 

本文发表于2018年01月12日 10:32
(c)注:本文转载自https://my.oschina.net/mkh/blog/1605966,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1981 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1