Python版实现12306抢票功能,真的能帮你抢到春运回家的票吗?

背景

每逢佳节倍思亲,年关将近,思乡的情绪是不是愈发强烈了,筒子们是不是又要准备开始抢票了,还是在找黄牛吗?但是,今年在考虑是否能抢到票以外,还需要考虑是否能回得去,没错,因为疫情,需要全国人民同心协力抗疫,咱不能给祖国妈妈添麻烦,只希望皆大欢喜吧!

黄牛

它凭什么,厉害得能’脱泥而出’抢到票,它是12306的内部人员?还是他家的亲戚?而且还那么牛逼哄哄的要价,春节要加价100元/张,让原本已经200元的票价就上涨70%,有什么办法解决这一现象吗?有些也是通过买人家工具的VIP功能(据说是按年续费的比较划算),还有其他交通app的vip加价功能,嗯,作者是没成功过!还几乎跟黄牛一个价,还不如给黄牛省心。

自动抢票脚本

作为半个程序员的作者,有点’水土’不服,也尝试过自己写脚本来解决,但是有一年直接被那个图片验证码给打败,也就不了了之了,而在前不久又看到了别人特别推崇的抢票脚本,在github开源了,一看吓一跳,star那么高比作者的35星强的不是一个量级,最后作者也耐不住好奇心拿来一试深浅。

克隆代码到本地

git clone https://github.com/testerSunshine/12306

首先阅读README.md配置好python运行环境,该有的功能呢先不要偷工减料,按要求完成。

修改配置文件:TickerConfig

  • 自动打码,设置为2
AUTO_CODE_TYPE = 2 # 听他的吧,否则就是执行不下去了,即使是2也不影响;
  • 没必要发送邮箱,设置False
EMAIL_CONF = {"IS_MAIL": False,"email": "","notice_email_list": "","username": "","password": "","host": "smtp.qq.com",
}
  • 不配置selenium环境,设置COOKIE_TYPE=3
# 如果COOKIE_TYPE=3, 则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值
RAIL_EXPIRATION = ""
RAIL_DEVICEID = ""
    • 值去哪里找?浏览器访问:https://www.12306.cn;打开F12–cookies右侧栏就能找到了⬇⬇⬇

在这里插入图片描述

  • 关注微信提醒:SERVER_CHAN_CONF,可有可无
# 前往 http://sc.ftqq.com/3.version 扫码绑定获取 SECRET
SERVER_CHAN_CONF = {"is_server_chan": True,"secret": "SCT76378TuaIlPCkz8OkWcUJwvlJoAe7Q"
}

在这里插入图片描述

  • 其他配置项保持默认,只替换乘车日期、预售时间、乘车人、班次信息即可。

开始运行:python run.py r

如果开启代理,先将ip加到proxy_list执行:python run.py c

  • 哦豁,执行结果出票失败了,这是不可能的,帐号本地测试能登录提交订单,不应该存在失败;
    在这里插入图片描述
  • 那么只能找源码调试了:inter/SubmitOrderRequest文件.submitOrderRequest类.sendSubmitOrderRequest方法
def sendSubmitOrderRequest(self):"""提交车次预定的请求参数,注意参数顺序注意这里为了防止secretStr被urllib.parse过度编码,在这里进行一次解码否则调用HttpTester类的post方法将会将secretStr编码成为无效码,造成提交预定请求失败:param secretStr: 提交车次加密:return:"""submit_station_url = self.session.urls["submit_station_url"]submitResult = self.session.httpClint.send(submit_station_url, self.data_apr())# print(submitResult) # 调试if 'data' in submitResult and submitResult['data']:if submitResult['data'] == "N":coi = checkOrderInfo(self.session, self.train_no, self.set_type, self.passengerTicketStrList,self.oldPassengerStr,self.train_date, self.ticke_peoples)coi.sendCheckOrderInfo()else:print (u'出票失败')elif 'messages' in submitResult and submitResult['messages']:raise ticketIsExitsException(submitResult['messages'][0])

分析源码

提交订单请求的时候,在第二个if条件时直接跳过,走到else就over了,根本就没检查订单,所以作者在外层print(submitResult)看看这个结果的data是啥?

  • ?excuse me,竟然是“0”,不是“N”
{'validateMessagesShowId': '_validatorMessage', 'status': True, 'httpstatus': 200, 'data': '0', 'messages': [], 'validateMessages': {}}
  • 怀疑:帐号肯定能正常查询余票并下单成功的,不可能存在购买不了,所以猜测是12306返回参数改变了,让脚本没有走订票逻辑(毕竟是两年前的代码),所以改源码,让第二个if等于"0",记得是字符串哦。
if submitResult['data'] == "0": # 原来的右边条件是:"N"
  • 再次执行,结果如下,订票成功!

在这里插入图片描述

  • 于是赶紧跑去12306的app查验,果然有未支付的订单,真是太厉害了。
    在这里插入图片描述

拭目以待

本地运行代码调试成功,只待明日查看结果,是否会订票成功,不然还是摆脱不了找黄牛的命运!!!

只希望疫情得以控制,否则就算是有票,根据严重情况,都有可能把线路都停运了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35219.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫音乐犯法么_Python爬虫实战之爬取QQ音乐数据!QQ音乐限制太多了

def open_url(url): pass def find_attribute(url): pass def main: pass 复制网页链接 复制网页链接将链接用列表进行保存下来。如果想要同一时间获取多个网页里面的数据,自行书写for循环遍历列表即可。以下只以一个网页进行讲解。 def main: # 用列表进行存储网页链接 url =…

Python爬虫 | 写在系列博客的第一篇,爬虫到底犯法吗?看完再开始爬虫!!!

一、 什么样的爬虫是非法的? 爬虫不能涉及个人隐私! 如果爬虫程序采集到公民的姓名、身份证件号码、通信通讯联系方式、住址、账号密码、财产状况、行踪轨迹等个人信息,并将之用于非法途径的,则肯定构成非法获取公民个人信息的违…

学习ChatGPT,AI绘画引入人类反馈会怎样?

来源:机器之心 本文约2400字,建议阅读5分钟本文介绍了研究人员在文本到图像模型中引入人类反馈。 NLP 领域使用的技术不断地向其他领域扩展,如 CV 和多模态,鸿沟正在被打破。本文中谷歌研究院和加州伯克利的研究人员在文本到图像模…

(十三)AI作画、AI绘画、AIGC本地大模型

(十三)AI作画、AI绘画、AIGC本地大模型 AI作画近期很火,涌现出了很多AIGC(AI内容生成)的网站、平台,但这些平台都是使用的云上的算力,基本都有使用的各种限制等。 一、本代码自动将大模型下载本地,可以无-限-使-用。但是对硬件的…

健身房会员管理系统

开发工具(eclipse/idea/vscode等):idea 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字):涉及到的技术 SpringBoot Mybatis Thymeleaf mysql题目描述:健身房管理系统是对健身房会员,员工的管…

健身房管理系统分析

主要功能: 1、经理权限&#xff1a; <1>会员的添加和移除&#xff1b; <2>会员基本情况的查询功能&#xff1b; <3>会员的消费记录查询功能&#xff1b; <4>会员续卡功能&#xff1b; <5>教练的在职和当班情况&#xff1b; <6>教练的排班…

让 ChatGPT 来担任这个召之即来挥之即去的私人健身教练

健身教练 和ChatGPT聊天可以运用在各种正式、非正式&#xff0c;工作、休闲场合&#xff0c;让我们再来看一个场景&#xff0c;也是年轻人群体中非常热门的话题&#xff1a;健身。健身已经是年轻人最流行的活动&#xff0c;既可以是私密的个人健身&#xff0c;也可以是呼朋唤友…

chatgpt赋能python:如何使用Python快速打包iOS应用程序

如何使用Python快速打包iOS应用程序 如果你是iOS应用程序开发者&#xff0c;那么你一定知道打包iOS应用程序的繁琐和耗时。在iOS应用商店上发布应用程序需要遵守特定的规则&#xff0c;并且必须打包成IPA文件。如果你想在你的开发流程中更快地打包应用程序&#xff0c;那么你可…

腾讯云控制台详细介绍及使用教程

腾讯云控制台是用户通过网页端管理和使用云产品的入口&#xff0c;用户通过控制台对腾讯云产品和服务进行选购、查看、使用等各种操作。掌握了控制台的使用就是操作腾讯云产品的第一步。 一、控制台总览页 在控制台总览页&#xff0c;查看所有腾讯云产品入口、使用文档入口、在…

使用腾讯云轻量应用服务器搭建网站教程(也太简单了)

码笔记一直想搭建个人网站博客&#xff0c;腾讯云轻量应用服务器还不错&#xff0c;公网带宽也够用&#xff0c;想着用搞台轻量服务器搭建个网站&#xff0c;没想到通过应用镜像&#xff0c;也太简单了&#xff0c;把全部教程分享给大家&#xff1a; 本文是以轻量应用服务器上…

登陆注册实现腾讯云短信验证功能

目前比较流行的短信登陆注册&#xff0c;因为腾讯提供的sdk每月有100条免费短信&#xff0c;下面博主将和大家分享实现的过程&#xff01; 第一步 腾讯云短信功能注册&#xff1a; 然后配置短信签名和短信正文来确认发送短信的默认格式 需要注意的是&#xff0c;两个花括号为…

腾讯云SSL证书配置(nginx)

申请SSL证书 下载证书 下载完证书之后解压&#xff0c;因为腾讯云选择的是nginx服务器&#xff0c;所以我们只需要下载nginx并解压。 配置Nginx服务器 我们需要把刚才解压的nginx证书文件拷贝到nginx的conf路径下面—也就是服务器中/etc/nginx/conf路径下面的。 ssl_cert…

腾讯云弹性MapReduce

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、弹性MapReduce产品架构二、弹性MapReduce 应用功能三、弹性MapReduce优势四、弹性MapReduce试用场景总结 前言 腾讯云弹性MapReduce是结合云技术和 Hadoop、…

Xshell远程连接腾讯云服务器(Xshell无法使用密码登录)

1.新建 填写云服务器IP地址后选择连接 输入root 如果上方密码处为灰色无法点击&#xff0c;则通过云服务器网页登录终端 输入命令cd /etc/ssh命令进入文件夹修改sshd_config&#xff08;注意&#xff01;不要与ssh_config混淆&#xff09; 输入命令vim sshd_config对该配置…

腾讯云域名购买和域名解析教程

一. 域名购买操作步骤 1. 登录 腾讯云 域名注册 2. 选择合适的域名&#xff0c;添加到购物车&#xff0c;然后支付。 二. 添加解析操作步骤 步骤1&#xff1a;添加记录 1. 登录 腾讯云 DNS 解析控制台。 2. 在 “域名解析列表” 中&#xff0c;可查看全部已添加的域名。如下…

Java后端利用腾讯云短信服务发短信

利用手机验证码进行注册或进行下一步操作已经是非常普遍的&#xff0c;这篇文章就教你如何是用腾讯云短信服务发送手机验证码。 文章目录 一、前提条件 二、代码实现 1.引入依赖 2.Java代码实现 3.代码改进 4.实现效果 三&#xff0c;关于项目中验证码验证逻辑分享 1.…

腾讯云完整建站过程

整个网站的建立其实是很简单的,总共包含如下几个步骤: 第一步&#xff1a;购买自己的云域名,首推腾讯云域名,学生党优惠力度很大 第二步&#xff1a;购买自己的云空间,我也是在腾讯云上购买的轻量级云服务器 第三步&#xff1a;将域名和云空间绑定起来,也就是域名的解析 第四步…

腾讯云服务器入门使用流程 新手必看教程

一、根据个人需要选择云服务器配置, 打开首页》云服务器,选好cpu、内存、带宽,地域,这几个是主要的。其他都可以默认选择。 二、登陆控制台 1、登陆账号之后,在首页右上角,点击控制台 进去看到服务界面,控制台比较容易看懂。搜索你需要的云产品 2、以云服务器为例,…

腾讯云GPU云服务器配置初体验

一、故事背景 GPU 云服务器&#xff08;GPU Cloud Computing&#xff09;是基于 GPU 的快速、稳定、弹性的计算服务&#xff0c;因此&#xff0c;可以广泛应用到深度学习训练/推理、图形图像处理以及科学计算等场景中。 GPU 云服务器提供和标准 CVM 云服务器一致的方便快捷的管…

使用腾讯云发送短信API接口实现(完整流程)

步骤 一、开通腾讯云短信服务二、申请签名前的准备&#xff08;申请公众号&#xff09;三、创建签名和模板四、腾讯云API实现发送短信五、使用springboot进行调用六、可能会报的错误 一、开通腾讯云短信服务 在腾讯云官网找到短信服务&#xff0c;开通 二、申请签名前的准备…