㈠ 如何在网上预定火车票 要先付钱吗
网上预订火车票方法:
1、12306铁路官网注册用户后登陆预订,官网地址:http://www.12306.cn/mormhweb/
2、使用手机抢票软件,如12306手机客户端、网络手机浏览器抢票、360手机卫士抢票等。
网上预订火车票是需要预先付款的,可以在任何一家铁路售票网点打印纸质车票,+5块钱即可。
㈡ 你好,我想做一个抢票软件,该从哪方面入手
做抢票软件的话。
首先你要知道抢票软件的原理:用程序来模拟人为操作,但是比人为操作速度更快,更精准。
第一,需要学习web前端基础知识,你要会分析售票网站的代码,里面的数据是怎么实现的,现在的网站都是静态的框架(html+css,或者html5),动态的数据(利用javascript实现)。
第二,在第一的基础之上,需要学习编程语言,利用编程语言写爬虫脚本,你可以用python语言或者其他编程语言写脚本都可以,只要能爬取售票网站的数据就行了。根据售票网站的代码格局,设计好专项的爬虫程序,不断的调试再调试,如果你想把你的爬虫脚本打包成软件,还要稍微的学习一下,打包成只是windows平台的还是Linux平台的,还是MACOS(苹果电脑系统)平台的,还是移动操作平台(手机,安卓还是苹果),不同的平台下打包也不同,做出来后还要不断的测试直到没问题,再考虑怎么将软件上线,这些等等的就不细说了,这个阶段需要耗费些精力了
第三,现在很多网站的防爬虫机制都很强,售票网站的防爬机制更强,所以你需要设计好代码,防止被防爬虫机制把你的程序防下来,这个阶段其实可以放在你学爬虫的阶段里一起学习,这个是至关重要的阶段
第四,你需要顺应时代的变化,经验而谈,售票网站都会定期更新,所以你写的爬虫脚本也要跟着改变。长久下来,如果你做的很好,那么你基本也算IT圈内人了。
不过说句实话,做抢票软件国内市场里也只在春运时期有点作用,平常时间基本没什么人用,官方直接就可以买的,而且这门槛说高不高,说低不低,抢票行里目前已经有很多比较成熟的抢票软件存在了,你要做就必须体现出与那些成熟的app很明显的不同,以及很明显的优势你才能够分一杯羹,不然也搞不出什么。不要听人搞抢票很赚钱,这一行,始终不是长久的,毕竟和黄牛党很类似,不算多么正规的。
还有,说句实在话,可能不太好听,如果哥们你只是脑子一热想搞这个的,没有绝对的毅力,我劝你别趟这浑水。
以上全是经验而谈,实话实说
㈢ 什么软件可以买自己指定的火车票
都可以买自己指定的火车票http://www.12306.cn/mormhweb/不用下载软件也可以买如果要的话也有12306抢票助手目前比较火热的有三种,一个是360抢票浏览器,一个是猎豹抢票浏览器,还有一个是搜狗抢票浏览器。1、360安全浏览器抢火车票专版(360抢票使用流程详见:http://www.huoche.net/12306-1988/)2、猎豹浏览器春运抢票版(猎豹抢票使用流程详见:http://www.huoche.net/12306-4739/)3、搜狗12306专版浏览器(搜狗抢票使用流程详见:http://www.huoche.net/12306-1986/)抢票浏览器解析:从易用性和便捷度上来说,360安全浏览器是最终的获胜者,毕竟简单、快速才是抢购火车票的制胜法宝,在这些方面360浏览器可以为用户省去很多步骤,订票的成功率也最高。而猎豹浏览器的功能确实非常强大,但是小编觉得这不是给普通用户使用的,感觉更像是频繁坐火车人最合适。而搜狗浏览器虽然速度也很快,但是功能上还需要优化。㈣ 浏览器抢票插件是用什么语言编写的
js就行,功能想要强大点,用主流的后台语言都可以写
㈤ 谷歌浏览器怎样添加抢票插件就是像360抢票插件那样具体
1.打开谷歌Chrome Web Store(网址:https://chrome.google.com/webstore/category/apps?utm_source=chrome-ntp-icon)
2.在最左上角有Chrome Web Store搜索栏,搜索12306
3.选择第一个认证的,按ADD TO CHROME,会弹出对话框选“添加”
4.完成
㈥ 从web的角度教你如何抢火车票和选择上下铺
插件安装步骤:谷歌浏览器——选项——工具——扩展程序界面如下:在搜索框输入:火车关键字即可安装好订票插件。 进入订票网在下订单选择预定时:右键 审查元素 以下是订票实战:关键技巧:选中上面有背景色的一行 右击鼠标,选择edit as html,然后将其中的display后的none改为block,然后在网页空白处单击鼠标,现在你会发现有了上中下铺的选项。 改成如下:<</CODE>select name="passenger_1_seat_detail_select" style="display: block"id="passenger_1_seat_detail_select" onchange="setSeatDetail('1')"><</CODE>option value="0">随机</</CODE>option><</CODE>option value="3">上铺</</CODE>option><</CODE>option value="2">中铺</</CODE>option><</CODE>option value="1">下铺</</CODE>option></</CODE>select>解释:上面这个代码其实就是把html中隐藏起来,系统默认的是随机,none的作用是将这个选择上下铺的选项隐藏起来,改成block就又把它改成显示。(从这个可以看出订票系统其实也相当低级 )其他技巧: 网上找12306 订票助手木鱼开发的的12306订票助手 以及谷歌,360急速,火狐,搜狗等推出的订票插件,都可以帮你刷票,自动登录,语音提示等等,自己去选择琢磨吧。 电话订票:技巧就是让他无线重播:Android 手机用户的话可以去应用市场搜一个支持自动重播的应用,iOS 用户的话可以试试火车票达人 其他关于订票网钻空子:
㈦ 什么是原生应用、web应用和混合应用
应用一词指的是app,即application。
原生应用指的是能直接运行于当前操作系统的应用程序;
web应用指需要在浏览器中运行的网页应用,由于界面体验、功能上都更加强大,可媲美原生应用,故称web应用;
混合应用则是两者的结合,通常是一个原生应用内嵌了浏览器。
以手机APP为例:
原生应用,酷狗音乐、美图秀秀,此类APP可称之为原生;
web应用,通过UC浏览器打开抢票助手、充值易,这类就是web应用;
混合应用,天猫、携程、58同城这类APP,大多数是在原生的壳基础上包装了web页面,比如58同城的帖子、天猫的活动页面、携程的订单详情页面,都是内嵌网页的实现。
而PC端也存在较多的案例:
原生应用,如QQ、迅雷
网页应用,如曾经火极一时的页游
混合应用,如360手机助手
随着软件平台的不断扩展,业务功能趋向复杂化,原生应用大多都会往混合应用的方向靠拢。在体验上其实已经很难区分,比如当前迅雷、QQ都已经存在混合网页应用的做法
㈧ 如何用360浏览器抢火车票
您好,很高兴能帮助您,
打开360浏览器后,安装抢票插件才能抢票,找到浏览器上面的 “扩展” 菜单点击进入
进去后,找到抢票王插件并点击进行安装,
在打开的提示窗口中,选择添加到浏览器,
在打开的提示框中,选择添加,
安装插件完成后,浏览器的右上方多了一个360抢票王的菜单,
点击360抢票王,然后安装铁道部证书,
安装完成后,点击抢票王,选择360抢票,
登陆12306网站,如下图
抢票浏览器很智能,一填好验证码就自动登陆了。
登陆进去后,自动进入车票预订页面了,
设置好席别,车次,添加好乘客,选择好出发地,目的地,出发时间,点击开始刷票。
然后刷票就开始了,如下图
如果刷到票了,马上展现出来给你,选择想要的票,进入购买,
进入订单提交页面后,输入验证码,抢票王会自动提交订单,非常智能。
检查订单信息是否正确,确认无误后,确认订单,
步骤阅读
接下来就是付款,流程和12306网站上订票的支付流程一模一样。
你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!
如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!
㈨ 抢票代码原理
1
为什么会实行抢票机制?
其他所谓的抢票,根本原理就是帮你时时刻刻盯着12306而已。无论哪一家的抢票,最终都是要通过.
2
有人知道抢票软件的原理是什么吗?
“购票者提供个人信息,将被上传至服务器数据库。 一旦检测到余票就迅速锁定,并通过高速填写乘车人信息和自动识别验证码来抢票
3
12306是抢票原理分析 - 多线程之间实现同步 - evanYang - 的博客...
2020年5月3日程序执行的顺序按照代码的先后顺序执行。 一般来说处理器为了提高程序运行效率
4
python自动抢票的原理
python自动抢票的原理_利用Python代码自动抢火车票的原理以及代码解析
weixin_39890629
原创
关注
1点赞·1024人阅读
今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool。
准备工具:
12306网站用户名和密码
chrome浏览器及下载chromedriver
下载Python代码
代码用的Python+Splinter开发,Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互。Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。
了解原理:
找到相应URL,找到控件模拟登录、查询、订票操作。关键是找到控件名称,难点是起始地不是直接输入的页面值,需要在cookie中查出。
12306查询URL:
12306登录URL:
我的12306URL:
购票确认URL:
Python代码打开URL,找到控件填充值:
找到用户名密码控件名
找到起始地控件名
确定起始地的值,方法Chrome浏览器中的“检查”功能(按F12),Network--->Cookies中找到:
cookie中起始地的值
拷贝起始地的cookie值,我把几个常用的城市拷出来,放到了字典中:
查询车票代码:
其实,你只需要运行代码:
当然,还需要手动点一下的还是万恶的12306验证码,抢到票后确认支付就行啦。
抢票进行中
抢票成功!
5
登录
首页
学习
实践
活动
专区
工具
TVP
返回腾讯云官网
阿黎逸阳
111 篇文章
关注
100行代码自动买火车票——和你一起探索抢票软件背后的原理
2021-10-08 15:32:42阅读 6940
大家有没有这种感觉,一到国庆、春节这种长假,抢火车票就非常困难?
各大互联网公司都推出抢票服务,只要加钱给服务费就可以增加抢到票的几率。
有些火车票代售网点和一些加速买票软件,说你只要给100元服务费就可以优先帮忙抢到票。
本文和你一起探索抢票软件背后的原理。
本文目录
效果展示
代码详解
2.1 导入库
2.2 确定好基本购票信息
2.3 登录12306
2.4 模拟滑动滑块
2.5 处理疫情特殊要求
2.6 点击购票并填写相关信息
2.7 锁定车票
一、效果展示
在正式进入代码讲解之前,先来看下本文的实现效果。
如果不是为了演示效果,直接在最后确定阶段加一个延时点击确定,应该不到45秒可以锁定一张票,只要在30分钟之内付款即可。
二、代码详解
本小节会详细解锁抢票软件是如何模拟登录网站,进行自动买票的。
为了更清晰地给大家展示,部分代码没有写成函数,直接裸代码运行,让需要买票的朋友可以自己应用软件进行购票。
1 导入库
首先导入本文需要加载的库,如果你有些库还没有安装,导致运行代码时报错,可以在Anaconda Prompt中用pip方法安装。
import json
import time
from captcha import *
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import wait
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
#导入库
复制
2 确定好购票基本信息
导入库后,在python代码中填写你购票的基本信息。
purpose = 'ADULT' #购买成人票,如果是学生票,需调整代码
names = ['谢朝阳'] #填写购票人姓名
date = '2021-09-21' #填写购票日期
start_station = '深圳' #购票出发站
end_station = '长沙南' #购票目的站
password = '11234567xyz' #登录12306的秘密
username ='xiezhaoyang122700' #登录12306的账号
trains = ['G1004', 'G80', 'G6028', 'G6182', 'G6016'] #你想买的班次
#填写基本信息
复制
本文预订的是2021年9月21日从深圳到长沙南的高铁票,你可以根据自己的实际需要进行调整。
由于有些班次的时间过早或过晚,买了也很不方便,所以可以在trains中挑选出你满意的班次进行购票。
在这里需要提醒大家,我之前在尝试代码时碰到的坑,那就是时间中如果有个位数要在前面填0。
比如2021年9月2日,你在填写购票日期date时要写成'2021-09-02',否则在运行代码时日期总是填不进去。
3 登录12306
确定好购票的基本信息后,就可以应用python模拟登录12306了,代码如下:
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
browser = webdriver.Chrome(options=options)
browser.maximize_window()
login_url = 'https://kyfw.12306.cn/otn/resources/login.html'
#ticket_url = 'https://kyfw.12306.cn/otn/leftTicket/init'
browser.get(login_url)
time.sleep(0.5)
wait.WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.CLASS_NAME,'login-hd-account'))).click()
input_name = browser.find_element_by_id('J-userName')
input_pd = browser.find_element_by_id('J-password')
input_name.send_keys(username)
input_pd.send_keys(password)
login = browser.find_element_by_id('J-login')
login.click()
#登录12306
复制
整体思路是:
应用python模拟调用google浏览器;
输入12306网址;
等网页加载完全后点击账户密码登录;
找到账号密码的id,把账户密码信息填充进去;
找到登录id,模拟点击登录按钮。
在这一小节中要注意两个点。一是要在python安装目录中放和google版本匹配的chromedriver,供python调用。
二是要学会找填写账户密码信息的id。
首先,在google浏览器中输入12306登录网址:https://kyfw.12306.cn/otn/resources/login.html。
接着点击账户密码登录,会出现如下界面。
然后点击红框中的三个点,找到更多工具,点击开发者工具,会出现如下界面。
点击红框中的箭头,把鼠标移动到账户框上去,就会出现如下界面:
undefined
右边变灰的框里就会出现对应的id,点击账号框,再把鼠标移动到右边变灰的字符上去,点击右键,会出现 element的选项,复制下来即可。
<input type="text" class="input" id="J-userName" placeholder="用户名/邮箱/手机号" style="height: 44px; line-height: 44px; outline: black 0px;" aria-label="请输入用户名/邮箱/手机号" title="请输入用户名/邮箱/手机号">
复制
发现了吗?源代码input_name中要填写的browser.find_element_by_id('J-userName')内容,即为id="J-userName"中的信息。
4 模拟滑动滑块
输入完用户名和密码,点击立即登录后,会出现如下滑块验证要求。
运行如下代码即可拖动滑块进行验证。
browser.implicitly_wait(5)
print('=====开始处理滑动验证码=====')
track = [300, 400, 500]
for i in track:
try:
btn = browser.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span')
ActionChains(browser).drag_and_drop_by_offset(btn,i,0).perform()
except:
time.sleep(2)
#拉动滑块验证
复制
其中,browser.implicitly_wait(5)表示隐性等待5秒,track中放的是滑块拉动的距离。
5 处理疫情特殊要求
完成滑块验证要求后,会出现如下疫情特殊要求提示:
用如下代码点击确认即可。
browser.implicitly_wait(5)
browser.find_element_by_xpath('/html/body/div[5]/div[2]/div[3]/a').click()
time.sleep(2)
#疫情特殊要求
复制
browser.find_element_by_xpath和id的区别是,在右键复制时要 XPath或 full XPath。
6 点击购票并填写出发地、目的地、出发时间
接下来是选择买票,并将出发地、目的地、出发时间等信息填写进去。
browser.find_element_by_xpath('//*[@id="J-chepiao"]/a').click()
browser.find_element_by_xpath('//*[@id="megamenu-3"]/div[1]/ul/li[1]/a').click()
browser.find_element_by_xpath('//*[@id="qd__id"]').click()
#选择买票
def input_info():
print('=====开始买票=====')
from_station = browser.find_element_by_xpath('//*[@id="fromStationText"]')
from_station.send_keys(Keys.ENTER)
from_station.send_keys(Keys.CONTROL, 'a')
from_station.send_keys(start_station, Keys.ENTER)
browser.implicitly_wait(5)
to_station = browser.find_element_by_xpath('//*[@id="toStationText"]')
to_station.send_keys(Keys.ENTER)
to_station.send_keys(Keys.CONTROL, 'a')
to_station.send_keys(end_station, Keys.ENTER)
browser.implicitly_wait(5)
start_date = browser.find_element_by_xpath('//*[@id="train_date"]')
start_date.send_keys(Keys.ENTER)
start_date.send_keys(Keys.CONTROL, 'a')
start_date.send_keys(Keys.CONTROL, 'x')
start_date.send_keys(date, Keys.ENTER)
browser.implicitly_wait(5)
wait.WebDriverWait(browser, 3).until(EC.element_to_be_clickable((By.ID,'query_ticket'))).click()
input_info()
input_info()
#将出发地、目的地、出发日期填进去
复制
得到结果如下:
这里需要注意的是我调用了两遍input_info函数,因为12306可能采取了一些反爬措施,一遍输入进去后查不出东西,显示为灰色。
7 锁定车票
最后是依次查找trains中的车次是否有票,有的话点击购买锁定车票。
trList = browser.find_elements_by_xpath(".//tbody[@id='queryLeftTable']/tr[not(@datatran)]")
for tr in trList:
trainNum = tr.find_element_by_class_name("number").text
if trainNum in trains:
leftTicket = tr.find_element_by_xpath(".//td[4]").text
print('leftTicket', leftTicket)
if leftTicket == '有' or leftTicket.isdigit():
orderBtn = tr.find_element_by_class_name("btn72")
orderBtn.click()
browser.implicitly_wait(5)
passengerLabels = browser.find_elements_by_xpath(".//ul[@id='normal_passenger_id']/li/label")
for passengerLabel in passengerLabels:
name = passengerLabel.text
if name in names:
passengerLabel.click()
browser.implicitly_wait(20)
# 获取提交按钮
submitBtn = browser.find_element_by_id("submitOrder_id")
submitBtn.click()
browser.implicitly_wait(20)
confirmBtn = browser.find_element_by_id("qr_submit_id")
confirmBtn.click()
time.sleep(2)
browser.implicitly_wait(20)
confirmBtn = browser.find_element_by_id("qr_submit_id")
confirmBtn.click()
break
#依次查找trains中的车次是否有票,有的话点击购买
复制
所以,如果你有特别心仪的车次,可以在trains中放在最前面,依次填写觉得还行的车次。
至此,应用python解锁抢票软件背后的原理已讲解完毕,感兴趣的朋友可以自己跟着本文实现一遍。
12306不定期会更新买票界面,所以过一段时间可能之前的代码就要进行一些调整,需要自己弄清里面的原理,才可以以不变应万变。
本文的代码没有进行高级的封装,只为大家能更清楚地了解每一步,能在抢票高峰期买到自己心仪的票。
也写得很基础,没有进一步的调优缩短时效,感兴趣的朋友可以自行研究,如有任何疑问可以跟我沟通。
6
抢票软件原理 - Python实战案例教学(视频讲解) 12306...
2020年12月7日python有很多方法去实现抢票,其基本原理,就是让程序自动模拟人去操作12306网站
7
为什么会实行抢票机制?
其他所谓的抢票,根本原理就是帮你时时刻刻盯着12306而已。无论哪一家的抢票,最终都是要通过.
㈩ 手机12306如何快速抢到票
抢票流程:
第一步,如何设置自动刷票??
在“车票查询”页面上,12306订票助手增加了许多功能选项,最突出的就是自动刷票。输入车次等基本信息之后,就可设定自动查询周期了,如每6秒一次,刷不出票誓不罢休。
第二步,如何设置有票及时提醒?
当刷票成功,除了页面会显示“已经有票了!”,还可以启动桌面通知,弹出对话框,提醒用户可以订票了!最贴心的是,还有声音提醒,有票不错过。
快速抢票的秘籍:
很多人询问抢票秘籍。其实秘籍就是眼疾手快!
一定要注意以下几点:
1、注意放票时间!不同线路的放票时间是以始发站为依据的,在订票前,请务必在铁道部的预售期公告页面12306/mormhweb/zxdt/tlxw_tdbtz26.html找到你的车次的始发站的放票时间(可以Ctrl+F搜索),提前进入刷票。注意!不是正点。放票时间不是整点一般。比如说10点放票,应提前二十分钟刷票,登录比较困难时需要提前四十分钟提前登录。不确定时,越早越好。一般放票会在整点的前后十分钟内。
2、速度要快!一旦放票立刻预定,建议将目标车次加到助手的自动预定列表,这样助手会在第一时间帮你自动预定。
3、进入后反应要快!不要看多余的信息,直接勾人,选席别,确认车次后立刻填写验证码,助手会帮你自动提交!
4、多手准备。当排队时间较长(长于20分钟)时,强烈建议你用事先注册的小号提前登录进去再行排队。当车次比较紧张时,请务必再请朋友代为拨打电话订票。
5、付款及时。付款需要在45分钟之内完成,请务必及时付款。在支付系统出问题时,可能会出现支付失败,能再次付款时,请再次付款,保证付款成功即可,多付的款项在铁道部对账后会退回给你。提交订单后,页面出现错误时,请务必多刷新确认状态,不要让任何一张票溜走。到站是小站,或发站是小站时,不妨多买几个站,因为不同站的票量是不一样的。
第一波没有抢到时,注意余票和回票。如果第一波放票没有抢到,不要灰心,放票是分时间分阶段的,耐心等待,总会有票(至少是个希望)。