关于助力砍价及微信公众号评论刷点赞及精选文章留言评论区点赞刷赞方法

关于助力砍价及微信公众号评论刷点赞及精选文章留言评论区点赞刷赞方法,越来越多的人在平常生活中使用微信,以微信为载体的许多功能就被开发和使用了起来,比如——微信投票。于是乎,微信上兴起了各种投票,从小学生到gov部门的投票活动都有,,刷票交易也越来越火。刷票单纯在请求的技术手段上,都是正常的访问请求,基本是没法识别的,但它真的像吃瓜群众一样说的没法认出来吗?未必!

    1.水军为了做更多生意自曝身份,在微信昵称上用了显而易见的刷票词语,比如用“票”筛选投票数据,就得到了大量的刷票信息,见图:
关于助力砍价及微信公众号评论刷点赞及精选文章留言评论区点赞刷赞方法_第1张图片

   这样,只要通过一定的规则来匹配投票人的微信昵称,判断出投票人是否是刷票的,如果是进入黑名单。如果一个被投票的有大量黑名单的人给他投票,那么他就有花钱买票嫌疑。


  2.每天投票量统计分析,如果是持续几天的投票。我们设想被投票人每天都在努力地拉票,从开始到结束应该是一个影响力越来越大或者影响力在结束的时候弱一点,所以每天的投票量统计曲线是先抑后扬或呈正态分布。把每个选 手的每天投票量曲线做出来,和其他人不一样的就一眼看出来了。


  3.时段投票量统计分析,这个应该比较容易理解,投票时间应该符合一般人的作息时间,如果在凌晨一、两点某个选手出现大量的投票,而他白天投票量反正少,这就很难用正常投票解释了。


  4.投票数爆发点与超越关系的分析。买票是需要成本的,被投票人买票的话当然是想用最少的成本取得第一。如果他被别人超越了的话,不想让自己先期投入变成“沉没成本”,只能加钱再买票再次超越别人。所以,如果一个选手多次被别人超越后投票数立马上升,特别是上升的票数都差不多(想象一下每次都是一百一百地买票),那就基本是刷票了。



  5. 多人刷票的情况。这种情况下就有点好玩了,发展的结果是:

         a.谁也不服谁,杠上了,超越关系明显。最后钱多的2,3个人超过其他人好多倍的票;

         b.为了节约成本,保持第二或第三,在最后时段为了夺冠冲刺刷票,产生了一个非常异常的投票量曲线。


    谁最清楚哪个人是刷票水军呢?应该是疼xun。如果是专门做投票系统,积累了大量数据的话,是可以建立模型识别是刷票行为的(至于为了点击量是否愿意做这个,或者做了这个不启用就不得而知了),小公司的话也可以用第1点做简单地判断,另外可以加验证码,增加投票时间操作,提高刷票水军的时间成本,另外验证码看多了眼睛也会花的偷笑。


延伸阅读:

前言:前面两篇已经很大程度上解放了人力,但我想别人的刷票软件是怎么制作出来的呢,肯定有办法让程序自动发包。由此,利用C#写了个小程序,自动POST数据到服务器处理程序,但这只是一个半成品,由于今天投票网站已经关闭了,无法测试实用性,就此罢手,作以记录,有相同经历的同鞋们,可以试一下看,如果能试出来正确的方法,记得分享给我哦,谢啦。


相关文章:

1、《刷票大战(一)——突破IP限制》
2、《刷票大战(二)——自动填充功能实现》
3、《刷票大战(三)——C#自动POST数据》


本篇完成两个功能:

1、根据动态验证码地址生成验证码图片并显示。

2、向指定处理网站POST数据。

软件截图:



一、生成验证码图片并显示代码

由于C#代码难度不大,这里就不再细讲了,仅贴出代码,最后给出源码,大家可以参考;

[csharp] view plain copy
  1. private void button1_Click(object sender, EventArgs e)  
  2. {  
  3.     System.Net.ServicePointManager.Expect100Continue = false;  
  4.     Uri uri = new Uri("http://edu.sqzycc.com/inc/checkcode.asp");  
  5.   
  6.     HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);  
  7.     HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
  8.     Stream resStream = response.GetResponseStream();//得到验证码数据流  
  9.     Bitmap sourcebm = new Bitmap(resStream);//初始化Bitmap图片  
  10.     //sourcebm.Save(@"C:\test.gif", ImageFormat.Gif);//可以保存到本地  
  11.     this.pictureBox1.Image = sourcebm;  
  12.   
  13.   
  14. }  

二、向服务器处理程序POST数据

[csharp] view plain copy
  1. private void button2_Click(object sender, EventArgs e)  
  2. {  
  3.     System.Net.ServicePointManager.Expect100Continue = false;  
  4.     //string strsubmit = "YES";  
  5.     ASCIIEncoding encoding = new ASCIIEncoding();  
  6.   
  7.     string data2 = this.textBox1.Text;  
  8.     string postData = "pr_id=1&hxr=26&hxr=30&hxr=33&hxr=39&hxr=53&hxr=54&hxr=66&hxr=69&hxr=70&hxr=81&code=" + data2 + "&cid=411402198807885982&x=9&y=5";  
  9.     this.label1.Text = postData;  
  10.     byte[] data = encoding.GetBytes(postData);  
  11.   
  12.     // Prepare web request...  
  13.     HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://edu.sqzycc.com/do.asp?action=post");  
  14.   
  15.     myRequest.Method = "POST";  
  16.     myRequest.ContentType = "application/x-www-form-urlencoded";  
  17.     myRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";  
  18.     myRequest.ContentLength = data.Length;  
  19.     Stream newStream = null;  
  20.     try  
  21.     {  
  22.         newStream = myRequest.GetRequestStream();  
  23.   
  24.     }  
  25.     catch (Exception ex)  
  26.     {  
  27.   
  28.         this.label2.Text = ex.Message;  
  29.         return;  
  30.     }  
  31.   
  32.   
  33.     // Send the data.  
  34.     newStream.Write(data, 0, data.Length);  
  35.     newStream.Close();  
  36.   
  37.   
  38.     // Get response  
  39.     HttpWebResponse httpWebResponse = null;  
  40.     try  
  41.     {  
  42.         httpWebResponse = (HttpWebResponse)myRequest.GetResponse();  
  43.     }  
  44.     catch (Exception ex)  
  45.     {  
  46.         this.label2.Text = ex.Message;  
  47.         return;  
  48.     }  
  49.   
  50.     Stream responseStream = httpWebResponse.GetResponseStream();  
  51.   
  52.     //这段用来获取返回信息的编码方式,以防乱码  
  53.     Encoding MyEncoding = Encoding.Default;  
  54.     // 如果要下载的页面经过压缩,则先解压  
  55.     if (httpWebResponse.ContentEncoding.ToLower().IndexOf("gzip") >= 0)  
  56.     {  
  57.         responseStream = new GZipStream(responseStream, CompressionMode.Decompress);  
  58.     }  
  59.   
  60.     if (MyEncoding == null)  
  61.     {  
  62.         MyEncoding = Encoding.Default;  
  63.     }  
  64.   
  65.     StreamReader reader = new StreamReader(responseStream, MyEncoding);  
  66.     string content = reader.ReadToEnd();  
  67.     this.label2.Text = content;  
  68.   
  69. }  


写于最后,至于如何得知后台处理程序的地址的,可以在IE中使用HttpWatch抓包实现,也可以在chrome中使用“开发者工具”下的Network标签

当选中“preserve log”时,该程序就会持序记录网络行为。(源码在最后)


三、关于验证码自动识别

关于验证码自动识别的问题,昨天我稍微研究了一下,主要用到Tesseract-OCR,这个东东就可以做到图片自动识别,但我试了下,一般而言,识别率不太高;如果针对特定网站做验证识别的话,可能要对Tesseract进行数据训练,以提高准确率。

对于程序自动识别网站验证码的一点心得:

1、首先将根据验证码地址生成图片保存在本地。

2、然后使用Tesseract识别。

这里有几篇文章,大家可做参考:

《Tesseract学习(三)》:在VC++中调用Tesseract库

《Tesseract学习(四)》:在C#中调用Tesseract库

《Tesseract-OCR安装使用训练》

《使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果》

《Tesseract-OCR 字符识别---样本训练 [转]》

 《使用Tesseract-OCR在loadrunner中识别验证码》

 《tesseract-ocr》  tesseract-ocr源码地址

 


你可能感兴趣的:(关于助力砍价及微信公众号评论刷点赞及精选文章留言评论区点赞刷赞方法)