最近老板的老婆在参加一项什么“指尖博物馆”的评选,因此老板每天在群里给我们发链接让我们投票。我们兢兢业业每天一投,甚至还相互提醒,完全把这个当成事业在努力。结果,对面直接不按常理出牌,一夜就刷了300票,我们一早来,发现这个数据,面面相觑:这绝对是刷票了吧!
这就是现在网络投票的现状,可能一开始开启网络刷票的人并没有想到会变成这样。本以为这将是民意的体现,具有公平、公正、透明的特质。而且它不需要场地、设备、人力,更不需要大量资金,极大地节省了人力成本。最重要的是,它能通过网络迅速传播活动信息、扩大影响规模,最后的数据一导出,妥妥一大亮点。
事与愿违,网络投票中的刷票行为,让这原本可以最大体现民意的设置,成了黑灰产牟利的“利器”。“某某评选开始啦,请动动你的手指为我们投上宝贵的一票”“本次评选活动对我们很重要,我们需要您的支持,鞠躬感谢”……每次朋友圈看到这样的话,我都心有戚戚:发了也没用呀,对面可能直接机器刷票了!
网络刷票的两种形式
网络刷票背后有一群分工明确的黑灰产业。所谓黑灰产是指利用计算机、网络等手段,基于各类漏洞,通过恶意程序、木马病毒、网络、电信等形式,以非法盈利为目的规模化、组织化、分工明确的群体组织。
网络刷票形式,主要有人工刷票与机器刷票两种。
人工刷票:就是一些空闲时间多的人士,以帮助参赛选手投票来获得“佣金”为主要工作。这些人多数为兼职投票手,外界称之为投票水军。
技术刷票:通过抓包工具分析提交投票时所产生的数据,然后使用脚本程序批量提交数据的刷票方式。
通过分析可以发现,网络刷票黑灰产揽客主要分为三步:第一步,在网上搜索这类评选活动,通过冒充主办方或媒体等方式,拨打参选对象单位公开的办公电话,索要参选者私人联系方式。第二步,抛诱饵强卖。会以“专业低价、保证安全”、“先刷后付”等话术来诱骗参选人交钱刷票,不管参选人是否同意,团伙都会假意进行少量刷票,为下一步诈骗进行铺垫。第三步,威胁+诈骗。即便参选者交了一部分的预付金,诈骗团伙也不会再帮你刷票了。而是以此为要挟不断加价,等到活动快结束时,再以冲击排名为由诈骗一笔。
此外,为了吸引参与者自发的去拉票刷票,商家往往会将投票配合奖励去吸引投票用户。由此经引起“羊毛党”注意,出现组队集团化刷票薅礼品的现象。
如何防止网络刷票
毫无疑问,网络刷票对于发起者(商家)、参与者、投票用户这三方来说,都是会造成损失的。我们需要采取一定的措施来防止黑灰产进行刷票。
比较简单的方式有以下集中:
1. 验证码: 在投票页面中加入验证码功能,通过输入验证码来确认投票者是真实的人类用户,而不是机器人或其他自动程序。这里可以使用顶象的免费验证码,因此就不展开叙述了。
2. IP地址限制: 通过限制相同IP地址的投票次数,可以防止同一IP地址的用户对同一选项进行多次投票。P地址限制可以通过服务器端脚本语言(如PHP、Python等)或者Web服务器(如Apache、Nginx等)来实现。
<?php
// 获取投票者的IP地址
$ip = $_SERVER['REMOTE_ADDR'];
// 设置IP地址的投票次数上限为10次
$vote_limit = 10;
// 判断IP地址的投票次数是否已经超过上限
if(get_votes_count($ip) >= $vote_limit){
// 如果超过了上限,提示投票失败
echo "投票失败,您已经超过投票次数限制!";
}else{
// 如果没有超过上限,进行投票操作
do_vote();
// 记录投票记录
record_vote($ip);
// 提示投票成功
echo "投票成功,谢谢您的支持!";
}
// 获取指定IP地址的投票次数
function get_votes_count($ip){
// 连接数据库
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
// 查询指定IP地址的投票次数
$result = mysqli_query($conn, "SELECT COUNT(*) AS count FROM votes WHERE ip='$ip'");
// 获取投票次数
$row = mysqli_fetch_assoc($result);
$count = $row['count'];
// 关闭数据库连接
mysqli_close($conn);
return $count;
}
// 记录投票记录
function record_vote($ip){
// 连接数据库
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
// 插入投票记录
mysqli_query($conn, "INSERT INTO votes (ip) VALUES ('$ip')");
// 关闭数据库连接
mysqli_close($conn);
}
// 进行投票操作
function do_vote(){
// TODO:进行投票操作
}
?>
3. Cookie限制: 通过在用户浏览器中设置Cookie,可以限制同一浏览器的用户对同一选项进行多次投票。
<?php
// 获取投票者的Cookie
$cookie_name = "voted";
$voted = isset($_COOKIE[$cookie_name]) ? $_COOKIE[$cookie_name] : 0;
// 设置Cookie的过期时间为1天
$expire_time = time() + 86400;
// 判断投票者是否已经投过票
if($voted){
// 如果已经投过票,提示投票失败
echo "投票失败,您已经投过票!";
}else{
// 如果还没有投票,进行投票操作
do_vote();
// 设置投票者的Cookie
setcookie($cookie_name, 1, $expire_time);
// 提示投票成功
echo "投票成功,谢谢您的支持!";
}
// 进行投票操作
function do_vote(){
// TODO:进行投票操作
}
?>
另外,在用户打开页面时,Cookie已经配置在用户浏览器中了,因为示例代码中的setcookie()函数会在服务器响应中设置Cookie并发送给客户端浏览器,当用户打开页面时,浏览器会检查本地是否存在该网站的Cookie,并将其附加在该请求中一同发送给服务器,以便服务器识别该用户的身份,或者保存一些用户相关的数据。因此,在示例代码中,当用户访问该网站时,Cookie已经生效并配置在用户浏览器中了。
4. 人工审核: 对投票结果进行人工审核,通过人工审核来确认投票者的身份和投票行为的真实性。但是,该方法需要投入较大的人力和时间成本,不适合大规模的投票活动。
结语
在2021年1月8日,国家互联网信息办公室公布《互联网信息服务管理办法(修订草案征求意见稿)》。对互联网信息发布、保存及个人信息安全保护等方面作出规定,并对日益泛滥的刷票、刷量、刷评论及制作虚假账号给出了处罚细则。其中特别第二十五条特提到,任何组织和个人不得以营利为目的或为获取其他非法利益,实施下列行为,扰乱网络秩序:
(一)明知是虚假信息而发布或者有偿提供信息发布服务的;
(二)为他人有偿提供删除、屏蔽、替换、下沉信息服务的;
(三)大量倒卖、注册并提供互联网信息服务账号,被用于违法犯罪的;
(四)从事虚假点击、投票、评价、交易等活动,破坏互联网诚信体系的。
希望在此基础上,网络刷票情况能够得到一定的缓解。
以上。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。