关于PHP写的投票网站之刷票终结版
告诉大家一个坏消息,还是有刷票的行为,有图有真相:

倒数第三项是时间轴,倒数第二项是IP,倒数第一项是邮箱,你们要刷票,拦都拦不住呀呀呀呀呀呀!!!!!
看看这些时间的间隔,看看这些IP的地址,哎,再看看邮箱,全163的,再也不爱了。
再来看看这些软件,有图有真相:

还有神马人工输入验证码的,自动输入验证码的,哎,被秒杀了瞬间。。。。
继上篇刷票风云的随笔之后,我还是决定用每个学生登录教务处的密码尝试一下,虽然这个我在开学的时候做微信开发的时候弄过。
首先要做的是登录学校教务处网站,然后打开sharkwire,取得传过去的信息,这些图我就明天上传补上,现在是用的同学电脑。
获取到传过去的数据之后,我们就可以copy一下,用curl这个PHP中的API,创造个cookie传过去。
//第一步:提交数据,生成cookie,将cookie保存在临时目录下
//在指定目录中建立一个具有唯一文件名的文件。如果该目录不存在,tempnam() 会在系统临时目录中生成一个文件,并返回其文件名
$cookie_file=tempnam('./temp','cookie');
$ch=curl_init();
$login_url="网址";
$curlPost="uname=账号&upwd=密码&usertypex=%B9%DC%C0%ED%D4%B1";
curl_setopt($ch,CURLOPT_URL,$login_url);
//启用时会将头文件的信息作为数据流输出
curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;MS IE 9.0; Windows NT 6.1; WOW 64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.0.30729; BRI/2; MASM; .NET4.0C; .NET4.0E; InfoPath.3; Media Center PC 6.0; SE 2.X MeTaSr 1.0)');
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_MAXREDIRS,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);
//设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content_login=curl_exec($ch);
//print_r($content_login);
var_dump($cookie_file);
curl_close($ch);
测试什么都没有显示,因为:
$content_login=curl_exec($ch);
//print_r($content_login);
后面会解释,继续:
$ch2=curl_init();
$login_url2=网址2";
curl_setopt($ch2,CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;MS IE 9.0; Windows NT 6.1; WOW 64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.0.30729; BRI/2; MASM; .NET4.0C; .NET4.0E; InfoPath.3; Media Center PC 6.0; SE 2.X MeTaSr 1.0)');
curl_setopt($ch2,CURLOPT_HEADER,0);
curl_setopt($ch2,CURLOPT_URL,$login_url2);
curl_setopt($ch2,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch2,CURLOPT_CONNECTTIMEOUT,120); curl_setopt($ch2,CURLOPT_AUTOREFERER,1);
curl_setopt($ch2,CURLOPT_POST,1); curl_setopt($ch2,CURLOPT_POSTFIELDS,$curlPost);
curl_setopt($ch2,CURLOPT_REFERER,"来源");
//设置连接结束后保存cookie信息的文件
curl_setopt($ch2,CURLOPT_COOKIEFILE,$cookie_file);
$content_login=curl_exec($ch2);
//$content_login='1';
print_r($content_login);
//curl_exec($ch);
curl_close($ch2);
在这里,用到的是同一个cookie,这样服务器就可以直接识别了。
$content_login=curl_exec($ch2);
这是获取到网页上的内容。
print_r($content_login);
这是将获取到的内容打印出来,如果你细心,你可以发现前面有:
$content_login='1';
这么一句话被我注释掉了,这是我检测是否能修改数据用的,当初在获取课表的时候就不能修改获得的数据,也不知道是为何,但是在这里可以。
如果账号密码错了,就会按网站那样弹出个对话框显示账号密码错误,这样,只要再数据表里面再添加一项student_id便可以了,一个账号只能用一次。
真心希望这次能真正的制止住刷票,我已经心疲力尽了。
也谢谢网友们,蘑菇街的验证码真心好,我也弄出来了,明天与大家分享,但是刷票器有个功能是手工输入验证码,这又没辙了,所以放弃验证码了。
我要被那些人骂死了。
转载请注明出处:http://www.cnblogs.com/yydcdut/p/3472248.html
关于PHP写的投票网站之刷票终结版的更多相关文章
- 关于PHP写的投票网站之刷票风云
最近学校导航站找我让我给他们做一个投票系统的网站,我一口答应了,他们只是要求不准刷票情况出现,我也一口答应了..我答应的太干脆了. 然后我便开始做这个网站,网站做出来没花太多时间,并且我是用IP来判断 ...
- 利用django创建一个投票网站(五)
创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测 ...
- 利用django创建一个投票网站(二)
创建你的第一个 Django 项目, 第二部分 这一篇从第一部分(zh)结尾的地方继续讲起.本节我们将继续写 Web 投票应用,并主要关注 Django 提供的自动生成的管理页面(admin site ...
- 利用django创建一个投票网站(一)
这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...
- IIS写权限漏洞和XFF刷票原理
IIS写权限漏洞 PUT写入漏洞 此漏洞主要是因为服务器开启了webdav的组件导致的 1.扫描漏洞,yes,可以PUT: 2.用老兵的工具上传一句话文件test.txt,然后move改名为shell ...
- redis 实例2 构建文章投票网站后端
redis 实例2 构建文章投票网站后端 1.限制条件 一.如果网站获得200张支持票,那么这篇文章被设置成有趣的文章 二.如果网站发布的文章中有一定数量被认定为有趣的文章,那么这些文章需要被设置 ...
- Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)
Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔) Louis Rosenfeld(路易斯·罗森菲尔德) ...
- PC网站转换成手机版
博客地址:https://www.cnblogs.com/zxtceq/p/5714606.html 一天完成把PC网站改为自适应!原来这么简单! http://www.webkaka.com/blo ...
- 基于Html5的爱情主题网站–表白神器(第二版)
第二版在第一版的基础上增加了一个动态3D的白云效果背景,鼠标悬浮在页面上云朵会向屏幕Z轴方向运动,在第一人称视角看来向着云朵方向前进的,由此形成一个伪3D效果.有点绕,直接看demo就能理解了.3D白 ...
随机推荐
- “通用类型系统”(CTS)
一.什么是“通用类型系统”(CTS) 描述类型的定义和行为 二.CTS规范 一个类型可以包含零个或者多个成员1,成员①字段(Field)作为对象状态一部分的数据变量.字段根据名称和类型来区分②方法(M ...
- python io 模块之 open() 方法(好久没写博客了)
io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True),打开file ...
- [ 原创 ]学习笔记-Android中隐式Intent 的使用
Android中Intent的使用分为显示Intent和隐式Intent 之前已经介绍过显示Intent的用法了,今天来介绍一下隐式Intent的用法. 当我们在使用一款软件时,如果需要从该软件内部开 ...
- input用类写的方法
- WinForm 数据库无限填充树目录 treeView
我自己想的是处理数据库每一条数据,然后来插入子节点的子节点. 奈何没有插入子节点的子节点的办法,百度来百度去,一看全都是递归. 本来我是绝望的, 但是没办法,老板的需求不能驳回啊,于是就来ctrl c ...
- bestcoder#23 1002 Sequence II 树状数组+DP
Sequence II Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Python学习笔记(二):条件控制语句与循环语句及常用函数的用法
总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...
- Maven根据不同环境打包不同配置文件
开发项目时会遇到这个问题:开发环境,测试环境,生产环境的配置文件不同,打包时经常要手动更改配置文件,更改的少还可以接受,但是如果需要更多个配置文件,手动的方法就显得非常笨重了. 下面介绍一种方法,利用 ...
- [Node.js]DNS模块
摘要 nds模块是node.js用于解析域名的模块,对域名的解析非常快捷方便. DNS 引入dns模块 //引入dns模块 var dns=require("dns"); 方法 序 ...
- Extjs NumberField 开始值 不能大于 结束值
Ext.apply(Ext.form.VTypes,{ numberrange: function(val, field) { var num = parseFloat(val); if (field ...