BookingAssistant和chrome结合感觉不错,github地址:https://github.com/zzdhidden/12306
大致结构:
1. 以chrome的User-Scripts插件安装到chrome中,User-Scripts介绍。
2. 使用jQuery来减少代码,注意他使用了一个奇葩或者因为我孤陋寡闻所以不知道的回调函数,用以加载jQuery运行,在代码里的函数声明为 function withjQuery(callback, safe),safe默认true。
3. 主体使用function route(match, fn) 绑定在不同链接下运行的不同函数,例如登陆页面,查询页面,订单页面等,识别出当前页面后,插入一些html元素来交互。
4. 具体的语法和特殊函数的意义这里就不做更多研究了,有兴趣可以阅读代码提取一些功能来玩一玩。
安全方面:
因为某人的质疑所以还是整理下。
1. 用户的账号,密码域只用在submitForm()函数中,用于拼装jQuery.ajax的http报文。(不过12306的登陆密码是明文的…)
2. 用户身份信息,选择的表单结果同样用http报文发送,这里会把from的数据都serializes说白了就是拼到一起后放在data中。
3. 综上,别瞎操心了,12306最初就计划让你的帐号和身份信息在互联网上裸奔。
4. 其实我挺好奇SRCA根证书在整个过程中到底起了什么作用,回头问问同学。
后记:
I. 之前的明文传输的结论是错误的,因为目前12306采用https协议,而https协议是在传输层加密解密的。而SRCA证书应该正是用在这里的,详见wiki-https,所以传输上是应该安全的。
II. 此外就是要考虑会不会在本地有木马或者注入或钓鱼来获取了,这个以后有空会再琢磨。
III. 昨天订了张车票,有一些经验:
1. 提前的天数会算上今天,提前天数会有变动,注意查询。
2. 虽然是10点开始放票,我是11点才想起来可以订票了。
3. 使用chrome会坑爹的不能打开一些网银(根本就是大部分网银好不好),我解决的办法是直接打开招商银行注册了手机支付功能,会发送一个链接到手机,登陆手机浏览器网页完成验证,另外银联的功能好像不错,可惜没尝试(广告..?)。