市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单。下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事。

该代码仅供参考,主要用于大家沟通交流,禁止用于商业用途。

具体代码如下,可以修改成自己的12306用户名账号:

准备工具

12306网站用户名和密码

Python

chrome浏览器及下载chromedriver

下载Python代码,位于:https://github.com/ppy2790/tickets

代码用的Python+Splinter开发,Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互。Splinter官网

http://splinter.readthedocs.io/en/latest/ 。Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。

了解原理

找到相应URL,找到控件模拟登录、查询、订票操作。关键是找到控件名称,难点是起始地不是直接输入的页面值,需要在cookie中查出。

12306查询URL:https://kyfw.12306.cn/otn/leftTicket/init

12306登录URL:https://kyfw.12306.cn/otn/login/init

我的12306URL:https://kyfw.12306.cn/otn/index/initMy12306

购票确认URL:https://kyfw.12306.cn/otn/confirmPassenger/initDc

Python代码打开URL,找到控件填充值:

找到用户名密码控件名

找到起始地控件名

确定起始地的值,方法Chrome浏览器中的“检查”功能(按F12),Network ---> Cookies中找到:

cookie中起始地的值

拷贝起始地的cookie值,我把几个常用的城市拷出来,放到了字典中:

查询车票代码:

其实,你只需要运行代码:

当然,还需要手动点一下的还是万恶的12306验证码,抢到票后确认支付就行啦。

抢票进行中

抢票成功!

python写抢火车票软件_用 Python 代码自动抢火车票相关推荐

  1. python编写抢座位软件_用Python抢到回家的车票,so easy!

    " 盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. ​ 据悉,今年春运期间,全国铁路发送旅客人次同比将增长 8.0%.达到 4.4 亿人次. ​ 20 ...

  2. python图片识别验证码软件_基于python图片识别工具(图片识别,车牌,PDF,验证码)...

    先上图  不多说. 对于一般的用户来说识别率还是能达到百分之90以上. 已经打包成exe文件.windows用户可以直接使用.要软件的加我QQ python代码: # -*- coding: UTF- ...

  3. python写一个表白程序_用Python写一个能算出自己年龄的小程序

    用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...

  4. python写游戏棋牌游戏_使用python实现简单五子棋游戏

    使用python实现简单五子棋游戏 发布时间:2020-08-29 06:12:30 来源:脚本之家 阅读:73 作者:weixin_42874933 用python实现五子棋简单人机模式的练习过程, ...

  5. 用python写跑酷游戏脚本_用python写游戏之2D跑酷游戏(二)

    这篇文章介绍2D跑酷游戏中,添加地板资源, 给主角附加重力作用,以及添加游戏控制器和游戏场景的切换. 废话不多说,直接开始. 添加地板资源 定义地板类,继承自pygame.sprite.Sprite ...

  6. python写一个笔记软件_科学网—python学习笔记(1)——创建应用 - 高雪峰的博文...

    创建应用的步骤打开命令行 进入manage.py的同级目录 命令行输入:python manage.py startapp blog 添加应用名到sittings.py中的Installed_apps ...

  7. python写一个笔记软件_程序员们都用什么记笔记软件?

    visual studio + git + github/gitlab visual studio code (简称 vscode)是一款集大成者,上天入地无所不能!比如我想让编辑器支持思维导图,只需 ...

  8. python写彩票预测软件_初学python-练习_2使用python编写彩票软件

    #!/usr/bin/python #-*- coding: UTF-8 -*- #指定编码格式,让py文件支持万国码 #设置生成票数的最大值 import sys; Maximum = sys.ma ...

  9. python邮件图片加密软件_用Python发一封图文并茂的邮件

    最近使用了不少通讯工具的接口, 比如企业微信机器人,钉钉,微信公众号的接口(未认证的订阅公众号),相对于邮件来说,它们的表现形式太弱.比如没有更丰富的版本方式.当然了,并不是说表现形式越棒就是约好的通 ...

最新文章

  1. 图像处理分类、一般流程与算法
  2. spring beans源码解读之--BeanFactory的注册
  3. 连续子数组的最大和python_连续子数组的最大和
  4. mysql提高缓存_合理配置MySQL缓存 提高缓存命中率
  5. Android上实现柱状图表
  6. (11)Spring框架----基于@AspectJ注解方式和基于XML配置方式开发AOP
  7. 从 VI 编辑器谈操作系统起源及编辑器本质
  8. 附加AdventureWorks2012数据库报错
  9. 计算机硬件的五大逻辑部分,计算机的硬件系统由五大部分组成(计算机由几部分组成)...
  10. moment.js时间操作
  11. Revit开发之内建模型
  12. 爬虫学习笔记(十八)—— 点触验证码:超级鹰、12306自动登录
  13. 有关JAVA考试中数据库的题_全国2018年4月自考互联网数据库考试真题
  14. 对于大数据的发展,主要划分为哪几大阶段?
  15. 2022年下半年网络工程师上午综合知识真题答案解析
  16. 正向价值观和负向情商
  17. 使用GD32F10x的SPI0接口读写GD25Q128
  18. Fences无法编辑删除栅栏
  19. 用R画有图例的中国地图
  20. 四川大学计算机综合实践报告,四川大学计算机操作系统第四实验报告

热门文章

  1. 《云计算(第三版)刘鹏》下载
  2. pixel什么意思_pixel是什么意思_pixel的翻译_音标_读音_用法_例句_爱词霸在线词典...
  3. Elasticsearch - 搜索引擎Lucene
  4. 完整的京东联盟自定义推广链接生产程序
  5. 信息化过程中如何把握信息安全管理的度?
  6. Linux修改显示亮度
  7. 用Easyui写一个银行个人存款计算器(纯前端页面)
  8. 淘宝禁止“好评返现”
  9. MGRE下的OSPF实验
  10. 干货 | 瀑布式项目管理怎么做?