被刷登录接口
自动更换ip地址的刷票软件是如何实现的?
于是我去淘宝找到一家刷票服务店,他承诺可以更换全国ip地址投票。结果确实成功了,而且速度很快(每小时5000~1万)。
我也是it从业人员,这种刷票的原理却百思不得其解。刷票公司能拥有数十万个独立ip吗?ip只能通过代理来改变,并不能伪装吧?
这么多独立ip,难道是肉鸡?老板告诉我他可以把软件一次性卖给我(价格较高我没买),这样想要多少票我都可以投。如果是肉鸡的话应该做不到吧?
这种软件是什么工作原理呢?
5 个回答
更新,来认真回答下编程实现的可能。
实际上不用第三方资源编程实现刷票还是有可能的,前提是网站的IP分析有破绽。
要想知道为什么,首先我们来看限制IP投票的机理:
有人说了,机理很简单,取客户端IP,然后记录数据库,同时累计本IP的投票次数,超过限额则不允许继续投票。
你说的很对,但是忽略了一个情况,如果一个公司只有一个网关,出口就是一个独立IP,是不是意味着无论这个公司多少人,都只能投一票?
可能这时候你还可以强辩,我给每个IP五票,所以每家公司可以投五次。
那你知不知道类似XX宽带神马的可能是一个城市只有一个/几个独立IP?
呃......
因此我们拿出RFC翻阅,终于发现原来获取客户端IP的方法并不止一个,至少有三个HTTP HEAD可以获取用户端IP,REMOTE_ADDR、HTTP_VIA、HTTP_FORWARDED_FOR,那么这三个参数有何不同呢?
REMOTE_ADDR是WEB服务器获取的用户IP值,也就是你最终的外网IP,它的坏处是,重复的太多,所以不能作为唯一判断标志。
HTTP_VIA是倒数第二个代理服务器/网关的IP
HTTP_FORWARDED_FOR是所有网关和你自己的IP列表,格式如:202.96.103.1,202.84.2.1,192.168.1.12
程序员如获至宝,就是它了,代码如下:
//先取代理IP列表
string strIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(strIP))
{
//取不到代理IP则直接从服务器变量取
strIP = Request.ServerVariables["REMOTE_ADDR"];
}
于是,你掉坑了,因为HTTP_X_FORWARDED_FOR是可以改的,最简单的方法就是如@朱海洋 所说,自己架一个本地Proxy,然后IP乱变,复杂一点就用代码实现自己填充HTTP_HEAD
以上方法未必一定能成功,取决于服务器上代码的实现,如果人家铁了心就是要歧视没有公网IP的用户你也没辙。
=============
想想光教刷票不教防不地道,其实也很简单:REMOTE_ADDR限制1000个(可以根据网站访问量调整),每日清零;HTTP_X_FORWARDED_FOR(为空不计入)&& REMOTE_ADDR限制一次,不清零。
=============
给你几个可能答案:
内置了大量代理的软件,这些代理可能是他们自己运营的,或者是通过肉鸡架设的,或者网上找来的。
见过能同时插大量手机sim卡的卡槽么?短信刷票都是用这个的。
他们发布了某款免费软件,可以后台执行特定的http请求指令。
他们破解了某个用户数比较多的软件的服务器,可以控制客户端随意执行特定http请求。
他们手上有流量站,嵌入个代码不是很难,访问用户就不小心投了票。
利用互联网广告在线投放系统,把投票链接作为广告投放出去。
众包给五毛党,一票五毛。
我也不知道他们用哪个,反正都可以。
另外,人家不必把肉鸡的产权给你,只给使用权就好,75年。
1.IP限制+cookie判断。刷票者能通过adsl不断换IP,但总归是在同一台电脑上,虽然能清理cookie,但是至少让他们的操作变得麻烦了。
2.验证码+验证问题。验证码一定要搞牛逼点,不能被机器识别了。同时一定要加验证问题,可以自己写,我大概写了100多个问题,随机取,偶尔再去添加几个。这样很大程度上降低了刷票行为。基本只能由人工刷票了。
3.人工分析IP记录。存在刷票行为的记录,IP都是一个段内的,我是直接把刷票记录删掉。
4.再牛逼点就是手机短信验证了。这成本就大了。我没用。