防刷票机制研究和.NET HttpRequest Proxy
最近应朋友之约 测试他做的投票网站 防刷票机制能力如何,下面有一些心得和体会。
朋友网站用PHP写的,走的是HttpRequest,他一开始认为IP认证应该就差不多了。但说实话这种很low,手动更换代理服务器手动刷都可以。但程序员的手就是程序,于是,
首先先 百度到 一些 免费代理服务器,非常多网站分享这些。按一定格式来储存到TXT文件。

第二步使用Fiddler来进行截取消息,拿到其http request header和body:

第三步使用.NET HTTPREQUEST。逻辑是遍历代理txt里代理,伪造 fiddler监听到的request 消息(当然其中一些cookie和其他的细节需要改变根据不同情况讨论)
_contentsList = File.ReadAllLines(@"C:\Proxy.txt");
var contents = _contentsList.ToList(); var proxy = string.Empty;
var port = 0; foreach (var item in contents)
{
new Thread(() =>
{
try
{
// 获取代理
var list = item.Split(':');
proxy = list[0];
port = Convert.ToInt32(list[1]); // 伪造消息
var request =
(HttpWebRequest)
WebRequest.Create(
@"http://XXX.COM");
request.Proxy = new WebProxy(proxy, port);
request.UserAgent = @"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0";
request.Referer = @"http://XXX.COM";
request.Method = "GET";
request.Host = @"XXX.COM";
request.Accept = @"*/*"; request.Headers.Add(@"Accept-Language", @"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
request.Headers.Add(@"Accept-Encoding", @"gzip, deflate");
request.Headers.Add(@"X-Requested-With", @"XMLHttpRequest");
var response = request.GetResponse();
Console.WriteLine(response.ToString());
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
).Start();
然后我朋友发现这样的确问题很大,于是他采用了验证码验证模式,即首先服务器会发给你验证码,你发的request的uri里参数必须要包含相同的验证码。
这种方式非常好,至少干掉了绝大多数的刷票软件。但我仍然想试验一下,这有一种battle的味道。哈哈
其实这个逻辑来说就是一来一回。给我验证码图片,我识别出来,然后再发送就好了。难度就在于验证码的OCR。
一开始我朋友验证码非常简单,就是几个数字,于是我直接使用最基础的OCR识别就干掉了。
后来他加了噪点,OK,这个也没有问题。我们降噪,然后再识别,虽然机器学习需要一段时间,但正确率还是有一些的。
最后他采用了随机产生汉字,我发现,汉字的OCR是个很麻烦的事情。这也是我下一步要研究的点,以后会出一篇关于OCR的文章。
随后他说还会加入一些cookie验证什么的,到这里我觉得我朋友的网站现在算是挺完善了。然后我就问下我老大,如果是他,他会怎么来刷票。
我老大回复非常简单,租人人工刷,随你技术怎样,我给他们两毛一票,你算算时间成本,完全划得来。
虽然这可能就是他随口一说,但我有一些感悟。
在IT这行,技术是根本,但商业运作和思维方式也是非常重要的。一个程序员假如只会编程,那就是工程师。假如程序员学了经济和管理,那也许就有机会成为袖珍版比尔盖茨。
自己技术累积创造出自己的核心价值产品,然后商业运作进行市场化,这才是将价值转化为价钱的道路吧。
自己也会走上这条路,技术上的累积和经济行业商业化的认知。越往后搞技术的纯粹性感觉就会越低,所以想告戒现在仍在努力的自己:
且行且珍惜
防刷票机制研究和.NET HttpRequest Proxy的更多相关文章
- 路由信息协议(RIP)的防环机制
防环机制 1-记数最大值(maximum hop count):定义最大跳数(最大为15跳),当跳数为16跳时,目标为不可达. 2-水平分割(split horizon):从一个接口学习到的路由不会再 ...
- 说说API的防重放机制
说说API的防重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击.重放攻击是什么呢?就是把你的请求原封不动地再发送一次,两次...n次,一般正常的请求都会通过验证进入到正常逻辑中,如果 ...
- 基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)
基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 个人技术博客:http://www.cnblogs.com/M ...
- API防重放机制
说说API的防重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击.重放攻击是什么呢?就是把你的请求原封不动地再发送一次,两次...n次,一般正常的请求都会通过验证进入到正常逻辑中,如果 ...
- php获取用户真实IP和防刷机制
一. 如何获取用户IP地址 public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv( ...
- 【OSPF】防环机制详解
我们在提到OSPF的时候,时常喜欢说的一句话就是,OSPF能够计算出无环的路由,那么OSPF究竟是如何规避路由环路的呢?OSPF与距离矢量路由协议不同,运行OSPF的路由器之间交互并不是路由信息,而是 ...
- 基于PHP给大家讲解防刷票的一些技巧
刷票行为,一直以来都是个难题,无法从根本上防止. 但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制. 基于 PHP,下面介绍防刷票的一些技巧: 1.使用CURL进行信息伪造 $ch = c ...
- cookie安全隐患及防篡改机制
Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...
- Celeste 机制研究
0. 简介.惯例.总论 Celeste (塞莱斯特) 是一个具有优秀手感的平台跳跃游戏. 虽然操作所使用的按键很少, 但是却有着复杂的组合机制. 在游戏实现上, Celeste 是一个锁定 60 帧 ...
随机推荐
- C++预定义宏
C/C++宏体中出现的#,#@,##: - #的功能是将其后面的宏参数进行字符串化操作(stringfication),就是对它所引用的宏变量通过替换后在其左右各加上一个双引号 -##被称为连接符(c ...
- 【积累篇:他山之石,把玉攻】Mime 类型列表
按照内容类型排列的 Mime 类型列表 类型/子类型 扩展名 application/envoy evy application/fractals fif application/futurespla ...
- VS 编辑器扩展辅助工具
[工具]——[扩展和更新]——[联机]输入 C# outline 2015
- Scrum项目7.0
队友: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...
- 如何用Qt做SolidWorks二次开发
这个问题困扰了我2年了,之前找到的教程都是MFC的,ATL导入向导或是通过导入类型库的方式来调用控件,我一直都搞不明白. 最近学习了ActiveQT以及通过ActiveQT控制EXCEL.Word.P ...
- 巴特沃斯(Butterworth)滤波器 (2) - 双线性变换
这里接着上篇讲一下双线性变换Bilinear Transformation,它实现了模拟信号(连续域)与数字信号(离散域)之间的转换. 双线性变换公式如下: 反推可得到: 因此可以根据连续域传递函数推 ...
- [NOIP2014]寻找道路 题解
题目大意: 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足 ...
- bzoj1503郁闷的出(cheng)纳(xu)员
好痛苦,,,WA了不知道多少遍 错的服了,,, 如果某员工的初始工资低于工资下界,他将立刻离开公司 我也不知道是我语文有问题还是题目有毒,反正这个东西好像不应该算在离开公司的总人数的答案里... 让我 ...
- bzoj1927最小费用最大流
其实本来打算做最小费用最大流的题目前先来点模板题的,,,结果看到这道题二话不说(之前打太多了)敲了一个dinic,快写完了发现不对 我当时就这表情→ =_=你TM逗我 刚要删突然感觉dinic的模 ...
- 设计模式(十二):bridge模式
刚开始看到这个模式并不是很理解,之后在网上看到别人的博客,才大致抓住了脉络. 何谓抽象和实现分离:就是将一个实际的物件跟它的所具有的功能分离.<大话设计模式>中有对手机品牌和具体的手机应用 ...