2006年4月
CSDN全自动灌水机
老见有人在CSDN上“哦”个不停,怀疑是用的Robot,在WSH中试了下可以用ActiveX,所以写了这么个东西,替我去接分 :D
把以下代码存为以“.js”为扩展名的文件,比如douche.js,然后在命令行下执行如下命令就可以了:
E:/kit/cscript douche.js //Nologo
平时工作常用PHP,所以用JS模拟了几个PHP的数组函数,附在了后面,这里用到了就随手写的,估计效率不高。
过段时间发布我的 IM 工具“QQQ”的源代码,造福全人类 :D

//----------------------------------------------
/*
*    douche.js
*    向 CSDN论坛 "http://community.csdn.net/" 灌水
*    Author:
*        高压锅 <Loadingao@msn.com>
*        www.gaoyaguo.com
*    Date: 2006.04.06
*    Version: 0.1
*/
//----------------------------------------------

var strDomain = "http://community.csdn.net"; // CSDN论坛的域名
var strPathBoard = "/Expert/ForumList.asp?typenum=1&roomid=1404"; // 欲灌版块的绝对路径
var strMyId = ""; // 此处为我的userID
var strCookie = ""; // 此处是我在CSDN登录后的Cookie值
var strUrlReply = "http://community.csdn.net/Expert/reply.asp"; // 灌水时form的action的地址
var msg = "%B6%A5%D2%BB%CF%C2%0D%0A%26random%3D"+Math.random(); // 要灌的水

var rejectUserNames = ['']; // 不灌该userName列表内的人的帖子
var rejectUserIds = ['']; // 不灌该userID列表内的人的帖子

var p = 1; // 从第1页开始
var arrReplyed = []; // 已灌过的ID列表
var arrRetry = []; // 被拒需要重试
var arrCurList = []; // 从getList()取得的当前ID列表
var countRefuse = 0; // 连续N次被拒之后休息一下的次数

while (1) {
    if (p == 11) p = 1;
    var htmlBoardList = getList(p);
    var match;
    var re = /<a/shref=/"//Expert//TopicView1/.asp/?id=(/d+?)/"/g;
    while ((match = re.exec(htmlBoardList)) != null) {
        arrCurList.push(match[1]);
    }
    arrCurList = array_diff(arrCurList, arrReplyed);
    arrCurList = array_merge(arrCurList, arrRetry);
    arrRetry = [];
    WScript.Echo(arrCurList);
    if (arrCurList.length == 0) {
        p = 1;
        WScript.Echo("没有新贴,休息6秒,重新开始");
        WScript.Sleep(6000);
        continue;
    }
    WScript.Echo("-=-=-=-=-=-第"+p+"页开始-=-=-=-=-=-");
    for (var i = 0; i < arrCurList.length; i++) {
        if (countRefuse == 3) {
            WScript.Echo("连续被拒3次,休息30秒");
            WScript.Sleep(10000);
            countRefuse = 0;
        }
        var strTopicId = arrCurList[i];

if (in_array(strTopicId, arrReplyed)) {
            continue;
        }

if (!checkIsReply(strTopicId)) {
            if (sendReply(strTopicId)) {
                WScript.Echo(strTopicId+": 成功");
                arrReplyed.push(strTopicId);
                countRefuse = 0;
            } else {
                WScript.Echo(strTopicId+": 被拒");
                arrRetry.push(strTopicId);
                countRefuse++;
            }
        } else {
            WScript.Echo(strTopicId+": 先前已回复过");
            arrReplyed.push(strTopicId);
        }
    }
    WScript.Echo("-=-=-=-=-=-第"+p+"页完成-=-=-=-=-=-");
    //p++; // 此开关 打开的话连续灌10页,关闭的话只灌第1页
}

/* --------------------------------------- function ---------------------------------------------- */

function getList(p) {
    if (typeof p == "undefined") p = 1;
    var url = strDomain+strPathBoard+"&whichpage="+p+"&random="+Math.random();
    try {
        var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        xmlHttp.open("GET", url, false);
        xmlHttp.setRequestHeader("Accept", "*/*");
        xmlHttp.setRequestHeader("Accept-Encoding", "gzip, deflate");
        xmlHttp.setRequestHeader("Accept-Language", "zh-cn");
        xmlHttp.setRequestHeader("Connection", "Keep-Alive");
        xmlHttp.setRequestHeader("Pragma", "no-cache");
        xmlHttp.setRequestHeader("Cache-Control", "no-cache");
        xmlHttp.setRequestHeader("Cookie", strCookie);
        xmlHttp.setRequestHeader("Host", "community.csdn.net");
        xmlHttp.setRequestHeader("Referer", "http://community.csdn.net/Tree/tree.htm");
        xmlHttp.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322; InfoPath.1)");
        xmlHttp.send(null);
    } catch (e) {
        WScript.Echo("HTTP异常,10秒钟后重试");
        WScript.Sleep(10000);
        return 1;
    }
    return xmlHttp.responseText;
}

function checkIsReply(strTopicId) {
    try {
        var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        var strUrlTopic = strDomain+"/Expert/TopicView2.asp?id="+strTopicId;
        xmlHttp.open("GET", strUrlTopic, false);
        xmlHttp.setRequestHeader("Accept", "*/*");
        xmlHttp.setRequestHeader("Accept-Encoding", "gzip, deflate");
        xmlHttp.setRequestHeader("Accept-Language", "zh-cn");
        xmlHttp.setRequestHeader("Connection", "Keep-Alive");
        xmlHttp.setRequestHeader("Pragma", "no-cache");
        xmlHttp.setRequestHeader("Cache-Control", "no-cache");
        xmlHttp.setRequestHeader("Cookie", strCookie);
        xmlHttp.setRequestHeader("Host", "community.csdn.net");
        xmlHttp.setRequestHeader("Referer", "http://community.csdn.net/Tree/tree.htm");
        xmlHttp.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322; InfoPath.1)");
        xmlHttp.send(null);
    } catch(e) {
        WScript.Echo("HTTP异常,10秒钟后重试");
        WScript.Sleep(10000);
        return 1;
    }
    try {
        var TopicName = xmlHttp.responseXML.documentElement.getElementsByTagName("Issue")[0].getElementsByTagName("TopicName")[0].text;
        if (/公务.*?/d{4}-/d{1,2}-/d{1,2}/g.test(TopicName)) {
            WScript.Echo(strTopicId+":<公务贴,略过>");
            return 1;
        }
        var intPoint = xmlHttp.responseXML.documentElement.getElementsByTagName("Issue")[0].getElementsByTagName("Point")[0].text;
        if (parseInt(intPoint) == 0) {
            WScript.Echo(strTopicId+":<0分贴,略过>");
            return 1;
        }
        var strPostUserName = xmlHttp.responseXML.documentElement.getElementsByTagName("Issue")[0].getElementsByTagName("PostUserName")[0].text;
        var strPostUserId = xmlHttp.responseXML.documentElement.getElementsByTagName("Issue")[0].getElementsByTagName("PostUserId")[0].text;
        if (in_array(strPostUserName, rejectUserNames) || in_array(strPostUserId, rejectUserIds)) {
            WScript.Echo(strTopicId+":<回避该用户>");
            return 1;
        }
        var Topics = xmlHttp.responseXML.documentElement.getElementsByTagName("Replys")[0];
        if (Topics.childNodes.length == 0) {
            WScript.Echo(strTopicId+":<沙发,快抢!>");
            return 0;
        }
        var countReply = 0;
        for (var i = 0; i < Topics.childNodes.length; i++) {
            if (Topics.childNodes.item(i).getElementsByTagName("PostUserId")[0].text == strMyId) {
                countReply++;
                break;
            }
        }
    } catch(e) {
        WScript.Echo("XML异常,10秒钟后重试");
        WScript.Sleep(10000);
        return 1;
    }
    return countReply;
}

// 发送回复
function sendReply(strTopicId) {
    try {
        var strPost = "Topicid="+strTopicId+"&xmlReply="+encodeURIComponent("aaaaa")+"&csdnname="+"&csdnpassword="+"&ReplyContent="+msg;
        var xmlHttpPost = new ActiveXObject("Microsoft.XMLHTTP");
        xmlHttpPost.open("POST", strUrlReply, false);
        xmlHttpPost.setRequestHeader("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
        xmlHttpPost.setRequestHeader("Accept-Encoding", "gzip, deflate");
        xmlHttpPost.setRequestHeader("Accept-Language", "zh-cn");
        xmlHttpPost.setRequestHeader("Cache-Control", "no-cache");
        xmlHttpPost.setRequestHeader("Connection", "Keep-Alive");
        xmlHttpPost.setRequestHeader("Content-Length", "72");
        xmlHttpPost.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlHttpPost.setRequestHeader("Cookie", strCookie);
        xmlHttpPost.setRequestHeader("Host", "community.csdn.net");
        xmlHttpPost.setRequestHeader("Referer", "http://community.csdn.net/Expert/xsl/Reply_Xml.asp?Topicid="+strTopicId);
        xmlHttpPost.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322; InfoPath.1)");
        xmlHttpPost.send(strPost);
    } catch (e) {
        WScript.Echo("HTTP异常,10秒钟后重试");
        WScript.Sleep(10000);
        return 1;
    }
    return !/<html><body><br><br><font color=red>.*?<//font><br><//body><//html>/.test(xmlHttpPost.responseText);
}

/*
某值是否在某数组中
*/
function in_array(d, arr) {
    for (var i in arr) {
        if (arr[i] == d) return true;
    }
    return false;
}

// 合并数组,后面的覆盖前面的
// 依赖 in_array()
function array_merge(arr1, arr2) {
    var arr = arr1;
    for (var i in arr2) {
        if (!in_array(arr2[i], arr)) arr.push(arr2[i]);
    }
    return arr;
}

// 计算数组的差集
// 返回一个数组,该数组为在 array1 中但是不在 array2 中的值
// 依赖 in_array()
function array_diff(arr1, arr2) {
    var arr = [];
    for (var i in arr1) {
        if (!in_array(arr1[i], arr2)) arr.push(arr1[i]);
    }
    return arr;
}

JS模拟的PHP数组类函数:

/*
某值是否在某数组中
*/
function in_array(d, arr) {
    for (var i in arr) {
        if (arr[i] == d) return true;
    }
    return false;
}

// 合并数组,后面的覆盖前面的
// 依赖 in_array()
function array_merge(arr1, arr2) {
    var arr = arr1;
    for (var i in arr2) {
        if (!in_array(arr2[i], arr)) arr.push(arr2[i]);
    }
    return arr;
}

// 计算数组的差集
// 返回一个数组,该数组为在 array1 中但是不在 array2 中的值
// 依赖 in_array()
function array_diff(arr1, arr2) {
    var arr = [];
    for (var i in arr1) {
        if (!in_array(arr1[i], arr2)) arr.push(arr1[i]);
    }
    return arr;
}

// 移除数组中重复的值
// 返回一个数组
// 依赖 in_array()
function array_unique(arr) {
    var ret = [];
    for (var i in arr) {
        if (!in_array(arr[i], ret)) ret.push(arr[i]);
    }
    return ret;
}

function array_keys(arr) {
    var ret = [];
    for (var i in arr) {
        ret.push(i);
    }
    return ret;
}

function aray_values(arr) {
    var ret = [];
    for (var i in arr) {
        ret.push(arr[i]);
    }
    return ret;
}

function array_reverse(arr) {
    var ret = [];
    for (var i in arr) {
        ret.unshift(arr[i]);
    }
    return ret;
}

function array_map(strAction, arr) {
    for (var i in arr) {
        arr[i] = eval(strAction+"("+arr[i]+")");
    }
    return arr;
}

CSDN全自动灌水机相关推荐

  1. 隐士打造CSDN相册灌水机 (1)

    CSDN的相册发照片实在是简陋,一个iframe,还在iframe里面露点了,露点照参见http://blog.csdn.net/nethermit/archive/2007/01/12/148152 ...

  2. 论坛灌水机 Delphi代码

    本来以为网页里的edit,memo等都和程式里的相同,能够用句柄来控制,但后来才明白,他是不存在句柄的! 查了好久,前几天看到一个关于QQ自动申请的例子.主要就是控制网页各种操作的!总结了一下,做出一 ...

  3. QQ聊天灌水机简要分析

    QQ聊天灌水机简要分析 Writter: SkyJacker Date:2007-02-05 Http://blog.csdn.net/skyjacker 1.获取聊天窗口    FindWindow ...

  4. 论坛灌水机与注册机问题

    话题起头比较大,说明一下,写这篇的起因,论坛最近经常被新用户发布一些不相关的帖子,也没有一定的规律, 而基本都是新注册的用户,还都绑定手机的,起初我们用的是短信验证码,查了一下几天注册的手机号全都是批 ...

  5. VeryCD灌水机演示代码(附另外一个发贴机代码)

    VeryCD那个铜光盘才能进候补区的规定很烦人,必须得灌水才能升级,可是又懒得灌,于是写了一个灌水脚本,有人问我要,就干脆发出来共享一下吧. ` 使用方法: 1.把username和passwd改成相 ...

  6. 一路问情热门论坛自动灌水机 v2007 免费

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  7. CSDN自动回复灌水乐园帖子-httpClient篇

    package com.ws; import java.io.IOException; import java.util.ArrayList; import java.util.List; //1.首 ...

  8. 同学用javascript写好了论坛自动灌水机。

    先前的版本比较弱,只能够回复同一句话,现在已经加上了随机回复,呵呵. 虽然是对某个论坛写的,只要是没有使用图形验证码和一些动态参数的, 就都可以使用这种方式来灌水.针对csdn写一个也很不难. 还没有 ...

  9. 对射光电传感器在全自动灌装流水线中的应用

    全自动液体灌装机能实现自动进料.自动进瓶.自动卡位.自动定量灌装.自动出瓶等功能,是灌装肥料.兽药.农药及其他液体的首选机器. 大深传感器作为光电传感器的研发.生产厂家,在全自动液体灌装机的传感器应用 ...

最新文章

  1. mysql 单实例部署_Mysql 数据库单机多实例部署手记
  2. 16.oauth2 + oidc 实现 client部分
  3. Lambda表达式详解【一】
  4. 编程书籍阅读随谈(第四篇)
  5. Spring @Autowired 注释
  6. java8 迭代set集合_JavaSE(八)集合之Set
  7. MySQL学习笔记—复制表
  8. 分页——SQL Server 对比 MySQL
  9. Python——上下文管理器
  10. Java接口自动化之TestNG单元测试框架(一)
  11. Java视频教程免费分享(网盘直接取)
  12. (附源码)计算机毕业设计ssm基于JAVA宠物店管理系统
  13. linux安装时找不到硬盘分区,在安装linux时出现找不到硬盘如何解决
  14. arduino超声波测距接线图详细_Arduino:超声波传感器+测距
  15. idea保存快捷键_windows10下idea快捷键文件
  16. 使用regexp_extract、regexp_replace函数过滤特殊字符时,不同的执行情境下(hive -e;hive -f),正则表达式的内容有变化
  17. lay-verify的失效情况
  18. netty(三) NioEventLoop再学习
  19. 视频字幕文件 SSA、ASS 参数-攻略
  20. matlab 函数 矩阵,MATLAB常用矩阵函数

热门文章

  1. 单款地图下载器如何授权
  2. Edge浏览器打开新建标签页速度很慢?如何解决?
  3. 绘制简单封闭图形并且进行填充
  4. 百度被黑了,哈哈!!
  5. 用 Python 爬取 QQ 空间说说和相册
  6. 阿里云视频直播PHP-SDK
  7. [2014/7]onscripter For windows/MAC/Linux V3中文版
  8. 支付宝生活缴费视频课程
  9. 在html中点击通讯录,通讯录2.html
  10. TYUT太原理工大学2022操作系统学习通总结