作者 | 非主流
出品 | Python大本营
又是一年春运,又到了拼手速、拼人品的时刻。
然而随着抢票软件的日益流行,拼加速包已经成为新的流行趋势。不过花钱买来的加速包真的有用吗?
《工人日报》撰文称,「由于抢票加速信息不透明、不对称,所谓的预估抢票成功率往往不靠谱,只是软件运营商的自说自话,进而借势忽悠消费者掏腰包碰运气。对于抢票加速的性质,法律尚未明确,但有法律界人士认为,抢票加速与买票插队一样,本质上和传统的倒卖车票行为没有区别,只不过是利用了互联网的智能手段。抢票加速不仅可能损害抢票者的合法权益,对其他购票者也不公平。」
抢到票收钱,抢不到退款,反正就是不保证买到票,对商家来说绝对是稳赚不赔的生意,有人将之称为“智能黄牛”。
作为程序员,如何用科技的手段抢到回家的票?近日,Python大本营在 GitHub 上发现了一个开源项目——「12306 购票小助手」,思路图如下所示。
现在,我们就来一起看看这个项目吧。
项目简介
Python版本支持
2.7.10 - 2.7.15
依赖库
依赖若快 若快注册地址:http://www.ruokuai.com/client/index?6726 推荐用若快,打码兔平台已经关闭
项目依赖包 requirements.txt
安装方法 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
项目使用说明
需要配置邮箱,可以配置可以不配置,配置邮箱的格式在yaml里面可以看到ex
提交订单验证码哪里依赖打码兔,所以如果是订票遇到验证码的时候,没有打码兔是过不了的,不推荐手动,手动太慢
配置yaml文件的时候,需注意空格和遵循yaml语法格式
项目开始
服务器启动:
1、修改config/ticket_config.yaml文件,按照提示更改自己想要的信息
2、运行根目录sudo python run.py,即可开始
由于新增对时功能,请务必用sudo,sudo,sudo 执行,否则会报权限错误,windows打开ide或者cmd请用管理员身份执行python run.py,不需要加sudo
如果你的服务器安装了docker,那么就可以docker启动
1、docker build -t dockerticket
2、docker run -d --name 12306-ticket dockerticket
目录对应说明
agency - cdn代理
config - 项目配置
damatuCode - 打码兔接口
init - 项目主运行目录
myException - 异常
myUrllib - urllib库
使用帮助
测试邮箱是否可用
测试下单接口是否可用,有两个下单接口,随便用哪个都ok
如果下载验证码过期或者下载失败的问题,应该是12306封ip的策略,多重试几次,12306现在封服务器(阿里云和腾讯云)ip比较严重,尽量不要放在服务器里面
传送门:
https://github.com/testerSunshine/12306
关于作者
不过,这个程序真的 work 吗?
Python大本营第一时间联系到了该项目作者,并对其进行了简短采访。该作者表示,自己已经成功抢到了票,有图为证。
Q:简单介绍下自己?
答:擅长 Java、Python,喜欢做一些网页爬虫类的事情(可视化数据),写一些小脚本提升自己的工作效率。
Q:是什么时候开始这个项目的?为什么要做这个项目?
答:去年的时候,为了回家的时候给自己买票。
Q:现在有很多的抢票软件都需要加速包,真的有用吗?
答:抢票软件其实都没有 12306 官方的好,加速包大家千万别相信,其实没啥用,骗钱的。
Q:会做一个 GUI 界面方便普通用户吗?
答:应该不会,能找到这个项目的基本都是程序猿,相信他们的实力(哈哈), 但是还是希望大家都支持 12306 手机 App 手动抢票。
Q:这个项目火了之后,心态上有什么变化?
答:其实一开始没有想到会这么多人一起用,就是感觉责任重大了。
Q:平常都是怎么学习的?做开源项目对你有什么意义?
答:都是去一些开源网站学习,Github 或者 CSDN 之类。喜欢把项目分享给大家一起学习,一同进步。
虽然作者开源的本意是好的,但任何技术都有被滥用的可能。作者在声明中也强调该项目仅作为学习交流使用,勿作为商业用途。
当然,任何程序都不可能解决买票难的问题。祝愿大家都能在北上广深买得起房,再也不用为春节抢票而烦恼。
【完】
热 文 推 荐
☞超过 C++、压制 Java 与 C,Python 拔得 TIOBE 年度编程语言!
☞Java JDK 收费,Android 也坐不住了,程序员们该咋办?
print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"
点击“阅读原文”,打开 CSDN App 阅读更贴心!