
最近,春运期间12306网站的购票软件已成为人们关注的焦点. 关于谣传铁道部要求工业和信息化部要求主要浏览器制造商停止开发12306售票刷卡工具,搜狗浏览器官员表示,到目前为止,搜狗尚未获得任何相关部门的“停止”通知. 或收到“面试”. 搜狗12306特别版浏览器和搜狗浏览器12306票务插件已投入使用,不受影响. 请随时下载和使用(下载链接: ).
Sogou 12306特殊版本浏览器具有原始的“定时检票”功能,可以在发行票时(即票数最大时)大大提高用户预订的成功率,它可以让12306服务器“减少负担”,安全可靠. 为什么这么说接下来,请查看搜狗12306特别版浏览器“抢票”功能的详细技术分析报告.
搜狗12306特别版浏览器“抢票”功能的技术分析
在查看大多数人不了解的代码分析之前,让我们首先简单地了解一下Sogou 12306特别版浏览器的时间捕获功能的三个优点. 知道了优点,我们就知道了代码的含义.
优势1: 对于用户,“票证获取”功能可以在票证发行时立即开始获取票证. 此时,当票数最大时,与“自动刷票”功能相比,可以大大提高预订成功率;
优势2: 对于12306网站,“定时抢票”功能可以减少12306网站上的负载,这是一种礼貌的方式.
优势3: 对于其他获取票证的浏览器,“票证获取”功能当前不可用. 搜狗正在充分考虑“如何大大提高用户的机票预订成功率”和“降低此功能,仅在网站负载为12306的情况下才启用.
代码分析:
通过校准时间,防踢出和在释放票证时立即抓住票证的三个步骤,它可以帮助用户在每次票证释放时预订票证. 与剩余机票的退款相比,机票量最大,因此用户成功预订机票的机会也最大.
1. 校准时间:
用户计算机上的本地时间可能不准确,因此每当用户登录时,将请求服务器时间,并且服务器时间将为标准时间.
(逻辑: 加载页面后,向远程服务器发送请求以获取标准服务器时间. 请求地址为: ''+ Date.now(),并且时间戳记添加到末尾地址,以确保该请求不会由于浏览器的缓存策略而受到影响,因此每个请求都是一个全新的请求,并且可以获得最新的标准时间,当获得标准时间时,它将被保存以供以后使用校准时间. )

Sogou 12306特别版浏览器将校准每次抢票之前的时间
代码:
(function(w,d){
var getRemoteTime = function(){//获取标准时间(由jsonp获得)
![]()
var脚本= d.createElement(``脚本'');
script.src =''''+ Date.now();
d.body.appendChild(script);
};
var standardtime = function(timestamp){//获取标准时间后,通知页面并保存标准时间
matchPort.postMessage({command: ''ready'',remoteTime: timestamp});
};
w.standardtime = standardtime;
var matchPort;
sogouExplorer.extension.onConnect.addListener(function(port){//当加载12306登录页面或查询页面时,启动查询标准时间的请求
if(port.name ===''remoteTime''){
matchPort =端口;
port.onMessage.addListener(function(msg){
if(mand ===''get''){
getRemoteTime();
}
});

}
});
}(窗口,文档));
……
var now = new Date(Date.now()-utility.diffTime),//根据当前本地时间和时差计算的当前服务器时间
hour = now.getHours(),
min = now.getMinutes(),
sec = now.getSeconds();
padding_time = diff(countdown_time,{//计算当前服务器时间与最终时间之间的时差,格式为* hour * minute * second
小时: 小时,
min: 分钟
秒: 秒
});
};
2. 反踢
当客户端浏览器很长时间没有操作时,12306网站可能会认为对话已结束并且用户将被踢出. 这将严重延迟用户购买机票的时间. 为了防止这种情况的发生并减轻12306网站的负担,搜狗的“ 12306特别版浏览器”会定期对12306网站说: “嗨,我仍然,请不要踢出去. ” <
(逻辑: 定期发送一个空请求,请求地址为“ + Date.now(),并且还添加了时间戳,以防止由于浏览器缓存策略而将请求发送到12306服务器. )

代码(位于12306-webkit.js中):
var intervalRequest = function(){
var requestUrl =''; t =''+ Date.now();
var img =新图片;
img.src = requestUrl; //发起一个空请求
setTimeout(intervalRequest,interval);
};
intervalRequest();
3. 放行门票即刻获取门票
一旦释放票证,便开始抓取票证. 由于与服务器时间同步,因此搜狗将尽快发送请求. 对于以秒计算的购票流程,毫无疑问,预订成功的机会更高.
与其他浏览器的“自动刷票”功能相比,“定时抓票”功能如下:
门票将于13:00:00秒释放. 如果其他吸引票务的浏览器在12:59:59秒刷新了页面,则其下一次刷新时间将是13:00:05(6秒符合每次刷新12306网站的频率),但是搜狗的“计时获取”功能可以在13:00开始准时抢票. 宝贵的5秒钟可以显着提高用户预订的成功率.
(逻辑: 倒计时结束时,先前保存的出发和目的地信息将回填到输入框中,然后将触发左侧“开始滑动”按钮的功能,并一直尝试直到出现是直到门票. )
代码:
.addEndHandler(function(){//倒计时时间到了,开始刷票
first_ticket_btn_status =''已停止'';
first_ticket_pingback = true;

$(``#first-ticket-btn''). removeClass(``正在运行'').addClass(``已停止'');
countdown = null;
hideFirstTicketInfo();
$ tickettime_options.attr(``disabled'',false);
$ tickettime_options.val(''''). change();
$ toolbar_startdate.attr(``disabled'',false);
//以编程方式填写先前保存的相关信息,以准备刷票
$(``#fromStationText''). val(fromStationText4FirstTicket);
$(``#fromStation''). val(fromStation4FirstTicket);
$(``#toStationText''). val(toStationText4FirstTicket);
$(``#toStation''). val(toStation4FirstTicket);
$(``#startdatepicker''). val(startdate4FirstTicket);
if(auto_refresh_btn_status ===``已停止''){
$(``#auto-refresh-btn''). click(); //触发回扣功能
}
})
.start();
摘要
对于12306网站来说,它是世界上即时点击量最多的网站,但不具备淘宝的强大承载能力,它完全依靠原始的手动售票方法,即使您给了一天时间,也不一定拿到你的票.
搜狗对抓票技术进行了很多优化,并专门启动了“抓票”功能,以确保用户在票被释放后立即开始抓票. 与一般的票务获取插件的“自动票务获取”功能相比,优点是票务获取的成功率大大提高,并且12306服务器的负载大大降低,实现了两全其美. 搜狗将继续在12306特别版浏览器的技术维护方面做得很好,并将福音带给更多的本地网民. ■
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-300428-1.html
另外的都不能用