防刷票机制研究和.NET HttpRequest Proxy
最近应朋友之约 测试他做的投票网站 防刷票机制能力如何,下面有一些心得和体会。
朋友网站用PHP写的,走的是HttpRequest,他一开始认为IP认证应该就差不多了。但说实话这种很low,手动更换代理服务器手动刷都可以。但程序员的手就是程序,于是,
首先先 百度到 一些 免费代理服务器,非常多网站分享这些。按一定格式来储存到TXT文件。
第二步使用Fiddler来进行截取消息,拿到其http request header和body:
第三步使用.NET HTTPREQUEST。逻辑是遍历代理txt里代理,伪造 fiddler监听到的request 消息(当然其中一些cookie和其他的细节需要改变根据不同情况讨论)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | _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这行,技术是根本,但商业运作和思维方式也是非常重要的。一个程序员假如只会编程,那就是工程师。假如程序员学了经济和管理,那也许就有机会成为袖珍版比尔盖茨。
自己技术累积创造出自己的核心价值产品,然后商业运作进行市场化,这才是将价值转化为价钱的道路吧。
自己也会走上这条路,技术上的累积和经济行业商业化的认知。越往后搞技术的纯粹性感觉就会越低,所以想告戒现在仍在努力的自己:
且行且珍惜
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述