**重要说明:由于12306网站已经全面切换为新版,此版本应用实现已经失效.由于年末较忙暂无更新计划,请另行选择其他最新主流订票助手. ****
开源Java Swing C/S版本12306订票助手
开源代码:
https://github.com/xautlx/12306-hunter
http://git.oschina.net/xautlx/hunter-12306
本程序完全开放源代码,仅作为技术学习研究交流之用,不得用于任何商业用途;作者不承担任何由此带来的直接或间接责任
基于HttpClient、Multiple Thread、File I/O等主要技术的Java Swing桌面应用,至于说用途就不多说了,你懂的; 虽然说功能上没有办法和目前类似主流的浏览器插件相提并论,但是由于采用直接的HTTP请求模式,我相信效率上一定会更高。 天下武功,唯快不破
整个程序参考了一个名为mygod-go- home的项目,其中还包括一些自动化识别验证码的尝试,在此对于作者的开源共享表示感谢,但是不知道什么原因目前已经很久没有更新发布了。 原来程序可能是考虑太多太全整个代码结构看起来比较费劲,把其中一些请求参数定义组装和响应解析等体力代码引用过来,然后加入自己的想法设计从而有了这个程序工程。
题外话: 对于这样每到逢年过节炒的火热的订票助手,各大浏览器的插件以及12306之间的恩怨纠葛、道德讨论等我觉得已经够多了,我只能说这就是一个在无聊以及无奈的环境下的产物。 我们还是以技术的角度去看待它,自从有了12306.cn,作为标准程序员闲的没事就有了新的乐趣练练手,既然拥有这样的技术,并且能让技能为我所用,何乐而不为呢。说不定哪天就被XXX封杀潜规则了,谁知道呢,权当娱乐而已!
简单方式是直接点击页面 (https://github.com/xautlx/12306-hunter) 右下方的“Download ZIP”,以zip压缩文件方式下载整个项目工程,然后解压缩到本地任何目录即可。
当然如果你熟悉GitHub的使用或希望随时update最新代码或修改提交pull request,可通过GitHub支持的git、svn等多种方式check out整个工程代码和执行文件。
程序采用Java语言编写实现,因此需要安装Java运行环境。理论上Java 5,6,7 版本皆可运行。
如果系统已安装过Java运行环境,则直接执行startup.bat即可。
当然如果不懂Java也没关系,请自行访问Oracle下载安装Java运行环境:
http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
选择“Accept License Agreement”,然后点击相应系统版本下载安装即可(可能需要重启系统),之后执行startup.bat即可。
本项目本身是一个完整的Eclipse工程,基本Maven依赖管理,熟悉对应开发过程及有兴趣开发调试程序的,可在导入开发工具,以Java应用程序方式执行TicketMainFrame即可。
Swing界面开发采用Eclipse WindowBuilder自动生成框架代码,可自行安装插件以可视化模式查看设计实现。
如果有任何问题或建议反馈,请到 https://github.com/xautlx/12306-hunter/issues 提交Issue; 对于程序本身的不足或下面提到的优化点,欢迎有兴趣的朋友本着交流学习为目的的代码改进优化并直接提交Pull Request。
如果有任何问题或建议反馈,请到 https://github.com/xautlx/12306-hunter/issues 提交Issue;
对于程序本身的不足或下面提到的优化点,欢迎有兴趣的朋友本着交流学习为目的的代码改进优化并直接提交Pull Request。
参考上述截图,对于UI界面功能从上至下大致说明如下:
目前程序除了基于乘车起始站对车次做基本校验外,其余基本没有更仔细严格的校验,使用时请自行按照官方网站给的有效数据格式填写,也欢迎补充提交完善校验逻辑代码共同完善程序。
TODD:考虑加入配置文件概念,如可以定制化请求间隔时间(目前代码层面固定的0.5秒)等
每个登录账号可从【左至右优先级】设定5个【车次和席别】(一个车次可以以不同席别添加多次) , 程序订票规原则是尽量先定优先级高的票,实在没票了才委屈求全定后续优先级低的票; 简单说就是程序不是按照优先级一个个顺序循环尝试订票,而是始终先不断尝试订优先级高的票,直到系统返回已经没票了才会转入下一车次席别。
因此请合理设置各账号车次席别顺序和组合方式,因为各登录账号订票线程互相独立运行,各自都随时有可能按照上述的订票原则订到指定优先级的车次和席别的票,设定不合理就会导致优先抢到“不抢手”的票了,再想回头想抢中意的票估计就来不及了。 当然也不用考虑太复杂,每个登录账号和车次席别自动发现有票时,会自动弹出下单验证码输入对话框,如果感觉不是自己中意的票可以点击取消即可从而自动再继续尝试刷票,避免不必要的误伤了。