关于12306第三方软件检测研究

转载请注明出处:http://blog.csdn.net/tang9140/article/details/42869269


首先申明下,本文章纯作为个人喜好的技术性研究,请不要用于非法操作盈取不正当利益,你懂的。

问题引出

大概在2014年12月的17、18号,大量针对12306的刷票软件出现了非法请求或‘使用第三方购票软件’提示,并且验证码识别出错。后面得知12306为了对恶意抢票软件、插件进行遏制与防控,通过手段能识别出抢票软件和用户购票的行为差别。

那么问题来了。。。,我就很好奇,他们通过什么手段做到的呢。

补充下,我之前是有做过JAVA版的抢票软件,仅做学习用途,没其它目的。在12306加了第三方软件检测后,我的刷票软件同样出现了‘非法请求’提示,连登录都进不去。于是引发了我的思考。

抢票软件本质是什么?

我个人认为抢票软件无非是用机器人(实际上所谓的机器人就是一个软件,这里只是形象表述)代替实体人去购买车票。大家都知道机器反应快,因此在同时开抢的前提下,肯定是机器比实体人快,这也是为什么黄牛党能买到车票,而你买不到车票的原因。继续往下思考,为什么机器人能够代替实体人去进行买票的一系列操作?这就引出了下一个问题。

用户在浏览器上购买车票的一系列操作,从技术角度看,本质上发生了什么?

大家都知道,12306网站提供的是基于B/S架构的WEB服务,是建立在http协议之上的服务。http协议是典型的请求-应答模式的协议,是无状态的协议。实际上用户在浏览器上的所有操作,最终都是依托浏览器发送请求到服务端,服务端接收到请求后进行相应的业务处理并将响应结果返回到浏览器端,浏览器再显示给用户。更具体点说,浏览器接收用户的各种事件(例如鼠标单击事件,键盘输入事件)后,然后在后台发送http请求到服务端,同时浏览器后台会接收到服务端的响应内容并展示为HTML页面。

更一般化,对于服务器来说,只要收到的请求是符合HTTP协议的就会进行处理,它不关心请求是通过浏览器发送过来的还是刷票软件发送过来的(浏览器本身也是一个软件,一般操作系统都自带浏览器)。从上面分析可以看出,只要第三方软件去完全模拟浏览器发送符合规范的HTTP请求,WEB服务器就会当作合法的请求并进行处理。那么问题又来了,为什么刷票软件会出现“非法请求”提示呢,这不跟你刚才的分析有矛盾吗?这个嘛,其实不矛盾。请注意我刚才说的是“完全模拟浏览器”,之前作为学习版的抢票软件并没有严格按照浏览器方式去发送HTTP请求,这也就导致12306能通过一些技术手段检测出非法的请求。那么,引出了我们的终极问题

12306怎么进行技术检测的,怎么区别正常请求跟非法请求?

在回答这个问题前,大家先要了解下HTTP协议。HTTP请求消息分为四部分:请求行、请求头、空行、可选的请求消息体;共有八种请求方法,最常用的就两种:GET请求和POST请求。GET请求将参数带在URL后面(没有消息体),而POST请求将参数带在消息体中。请求头中可能包含Cookie信息等。回到正题,12306对于非法请求检测无非对三方面进行检查,即请求头、Cookie、请求参数。

12306检测三方面:

1、请求头

在模拟HTTP请求时,需要注意请求头的顺序。经过本人测试&#x

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值