什么是网络水军???
网络水军是指在网络中针对特定内容发布特定信息的、被雇佣的网络写手。网络水军通常简称水军,又名网络枪手,他们通常活跃在电子商务网站、论坛、微博等社交网络平台中。他们通过伪装成普通网民或消费者,通过发布、回复和传播博文等对正常用户产生影响。
水军灰产业:刷播放量,刷流量,刷弹幕,刷评价,刷点赞...
水军的分类:人肉水军, 机器水军
点击量达到488亿???
1.机器水军原理分析
软件控制鼠标鼠标点击,实现自动刷XXX
使用win32接口,控制按键事件。
使用win32接口,控制剪贴板。
没错!就这么简单,说干就干!
2.代码实现
#include <stdio.h>
#include <Windows.h>
#define FILE_NAME "dm.txt"
#define LINE_COUNT 1024
#define TIME_SPAN 6000
// 把指定的内容,拷贝到剪贴板
bool copy2Bord(const char *data, int len) {
// 套路!!!
// 1. 打开剪贴板
if (OpenClipboard(NULL)) {
// 2. 清空剪贴板
EmptyClipboard();
// 申请一块内存 1000
// GlobalAlloc返回的是内存资源的句柄
HGLOBAL clipBuffer = GlobalAlloc(
GMEM_DDESHARE, //用于不同程序间交换数据用的
len + 1);
// 锁定这块内存,返回这个内存的起始地址
char *buff =(char*)GlobalLock(clipBuffer);
// 字符串拷贝, memcpy, strcpy
strcpy(buff, data);
// 解锁指定的内存
GlobalUnlock(clipBuffer);
// 写到剪贴板
SetClipboardData(CF_TEXT, clipBuffer);
// 关闭剪贴板
CloseClipboard();
return true;
}
else {
return false;
}
}
// 发送弹幕
void sendDM() {
// 从文件中读取弹幕信息
FILE *fp; //是一个文件指针,用来读写文件的
fp = fopen(FILE_NAME, "r");
if (fp == NULL) {
printf("打开文件:%s 失败", FILE_NAME);
return;
}
char buff[LINE_COUNT];
// 从文件读一行
// 从fp指向的文件中,读取一行,保存到buff
// fgets读一行,会包含末尾的回车符!
while (fgets(buff, sizeof(buff), fp)) { //20万
// 发弹幕
// buff -> 剪贴板 -> ctrl + v 回车
// 把buff中的内容拷贝到剪贴板
while (!copy2Bord(buff, strlen(buff) - 1)) {}
// 鼠标左键单击一次
mouse_event(MOUSEEVENTF_LEFTDOWN |
MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
//Sleep(20);
// ctrl键按下
keybd_event(
VK_CONTROL, // 虚拟按键值 ctrl
0, //扫描码, 一般都取0
0, //0:按下 KEYEVENTF_KEYUP:抬起
0); //一般取0
keybd_event('V', 0, 0, 0); //V键按下
keybd_event('V', 0, KEYEVENTF_KEYUP, 0); //V键抬起
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); //Ctrl抬起
keybd_event(VK_RETURN, 0, 0, 0); //回车键按下
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); 回车键抬起
memset(buff, 0, sizeof(buff));
Sleep(TIME_SPAN);
}
fclose(fp);
}
int main() {
printf("准备好了吗? \n");
system("pause");
printf("5秒后开始\n");
Sleep(5000);
while (1) {
sendDM();
}
return 0;
}
项目拓展
实现QQ机器人,而且摆脱腾讯的检测。
原理:使用opencv实现图像识别,结合win32的按键、鼠标自动操作。
视频教程:OpenCV开发环境的搭建
项目实战:B站 刷 弹幕程序