【脚本共享】CSDN版主批量删帖工具。

如果你不是版主,那么这个工具对你作用不大,请绕路。

使用方法:
1、复制如下HTML代码到记事本中;
2、保存文件,编码为“UTF8”,扩展名为“.HTA”;
3、在IE中用版主身份登录;
4、双击文件运行该程序;
5、将要删除的帖子链接复制到"需要删除的链接:"文本框中,以回车分隔;
6、点击“开始删除”。
  1. <html>
  2. <head>
  3.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4.     <title>CSDN批量删帖--清洁工2008版</title>
  5. </head>
  6. <body>
  7. <script type="text/javascript">
  8. /*--
  9. 设计:ZswangY37
  10. 日期:2008年10月18日
  11. 博客:http://blog.csdn.net/zswang
  12. --*/
  13. $ = document.getElementById;
  14. var ForAppending = 8; // 追加模式
  15. var ForReading = 1; // 读取模式
  16. var ForWriting = 2; // 写入模式
  17. /// <summary>
  18. /// 将字符串追加到文本文件最后
  19. /// </summary>
  20. /// <param name="filename">文件名</param>
  21. /// <param name="text">所要追加的字符串</param>
  22. /// <returns>返回追加是否成功</returns>
  23. function AppendFileText(filename, text)
  24. {
  25.     var fso = new ActiveXObject("Scripting.FileSystemObject"); // 文件系统
  26.     var istream = fso.OpenTextFile(filename, ForAppending, true);
  27.     if (!istream) return;
  28.     try {
  29.         istream.write(text);
  30.         istream.Close();
  31.         return true;
  32.     } catch (e) {
  33.         return false;
  34.     } finally {
  35.         istream = null;
  36.         fso = null;
  37.     }
  38. }
  39. /// <summary>
  40. /// 追加日志
  41. /// </summary>
  42. /// <param name="text">日志文本</param>
  43. function AppendLog(text) {
  44.     $("TextareaLog").value += text;
  45.     AppendFileText("log.txt", text);
  46. }
  47. /// <summary>
  48. /// 分析帖子内容
  49. /// </summary>
  50. /// <param name="topicText">帖子HTML文本</param>
  51. /// <returns>返回帖子信息</returns>
  52. function TopicInfo(topicText){
  53.     topicTexttopicText = topicText.replace(//r/n/g, " ");
  54.     var re = //<span/s*csdnid=/"isCheckOut/"/s*class=/"color_red/"/>(.*?)/<//span/>/g;
  55.     if (re.exec(topicText)) this.isCheckOut = RegExp.$1; // 是否已经结贴
  56.     
  57.     var re = //<meta/s*csdnid=/"sectionId/"/s*content=/"(.*?)/"(/s*//)*/>/g;
  58.     if (re.exec(topicText)) this.forumId = RegExp.$1; // 版块ID
  59.     
  60.     var re = //<meta/s*id=/"topicViewUrl/"/s*csdnid=/"topicViewUrl/"/s*content=/"(.*?)/"(/s*//)*/>/g;
  61.     if (re.exec(topicText)) this.topicUrl = RegExp.$1; // 帖子链接
  62.     
  63.     var re = /http:topic.csdn.net//u///d+///d+//([0-9a-z/-]+).html/g;
  64.     if (re.exec(topicText)) this.topicId = RegExp.$1; // 帖子链接
  65.     var re = //<meta/s*csdnid=/"description/"/s*content=/"(.*?)/"/s*name=/"description/"(/s*//)*/>/g;
  66.     if (re.exec(topicText)) this.description = RegExp.$1; // 帖子主题
  67.     
  68.     var re = //<var/s*id=/"point/"/s*csdnid=/"topicPoint/"/>(.*?)/<//var/>/g;
  69.     if (re.exec(topicText)) this.point = RegExp.$1; // 帖子点数
  70.     var re = //<var/s*csdnid=/"replyCount/">(.*?)/<//var/>/g;
  71.     if (re.exec(topicText)) this.replyCount = RegExp.$1; // 回复次数
  72.     
  73.     var re = //<a/s*href=/"http/:hi.csdn.net//(.*?)/"/s*.*?/>/g;
  74.     if (re.exec(topicText)) this.username = RegExp.$1; // 楼主
  75.     
  76.     var re = //<var/s*csdnid=/"topicPostDate/">(.*?)/<//var/>/g;
  77.     if (re.exec(topicText)) this.topicPostDate = RegExp.$1; // 发帖时间
  78. }
  79. /// <summary>
  80. /// 获取链接的文本内容
  81. /// </summary>
  82. /// <param name="url">页面链接地址</param>
  83. /// <returns>返回页面HTML文本</returns>
  84. function GetUrlText(url) {
  85.     var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  86.     try {
  87.         xmlhttp.open("get", url, false);
  88.         xmlhttp.send();
  89.         return xmlhttp.responseText;
  90.     } catch (e) {
  91.         return "";
  92.     } finally {
  93.         xmlhttp = null;
  94.     }
  95. }
  96. /// <summary>
  97. /// 分析删除提交信息
  98. /// </summary>
  99. /// <param name="htmlText">页面文本</param>
  100. /// <returns>返回删除提交信息对象</returns>
  101. function DeleteInfo(htmlText) {
  102.     htmlTexthtmlText = htmlText.replace(//r/n/g, " ");
  103.     var re = /<input/s+type=/"hidden/"/s+name=/"__VIEWSTATE/"/s+id=/"__VIEWSTATE/"/s+value=/"(.*?)/"/s+//>/g;
  104.     if (re.exec(htmlText)) this.viewState = RegExp.$1;
  105.     var re = /<input/s+type=/"hidden/"/s+name=/"__EVENTVALIDATION/"/s+id=/"__EVENTVALIDATION/"/s+value=/"(.*?)/"/s+//>/g;
  106.     if (re.exec(htmlText)) this.eventValidation = RegExp.$1;
  107. }
  108. /// <summary>
  109. /// 分析提交返回信息
  110. /// </summary>
  111. /// <param name="htmlText">页面文本</param>
  112. /// <returns>返回提交返回信息对象</returns>
  113. function ResultInfo(htmlText) {
  114.     htmlTexthtmlText = htmlText.replace(//r/n/g, " ");
  115.     var re = /<div/s+class="csdnTipContent">/s*<span/s+class="(.*?)">(.*?)<//span>/s*<//div>/ig;
  116.     if (re.exec(htmlText)) {
  117.         this.state = RegExp.$1;
  118.         this.info = RegExp.$2;
  119.     }
  120. }
  121. /// <summary>
  122. /// 提交删帖请求
  123. /// </summary>
  124. /// <param name="url">处理删帖的链接</param>
  125. /// <param name="deleteInfo">删帖相关参数</param>
  126. /// <returns>返回提交页面文本</returns>
  127. function PostRequest(url, deleteInfo) 
  128. {
  129.     var data = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=" + encodeURIComponent(deleteInfo.viewState) + 
  130.         "&reasonGroup=2&ctl00%24ContentPlaceHolder1%24tb_Reason=" + encodeURIComponent($("TextReason").value) + 
  131.         "&ctl00%24ContentPlaceHolder1%24bt_Submit=%E7%A1%AE%E5%AE%9A&" + 
  132.         "__EVENTVALIDATION=" + encodeURIComponent(deleteInfo.eventValidation);
  133.     var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  134.     try {
  135.         xmlhttp.open("Post", url, false); 
  136.         xmlhttp.setRequestHeader("Referer", url); 
  137.         xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
  138.         xmlhttp.setRequestHeader("Accept-Encoding", "gzip,deflate"); 
  139.         xmlhttp.setRequestHeader("Content-Length", data.length); 
  140.         xmlhttp.send(data); 
  141.         return xmlhttp.responseText;
  142.     } catch (e) {
  143.         return e.message;
  144.     } finally {
  145.         xmlhttp = null;
  146.     }
  147. function ButtonStartClick() {
  148.     var urls = $("TextareaUrls").value.split(//r/n/); // 论坛列表
  149.     for (var i = 0; i < urls.length; i++) {
  150.         var topicInfo = new TopicInfo(GetUrlText(urls[i]));
  151.         if (typeof topicInfo.forumId == "string")
  152.         {
  153.             var deleteUrl = "http://forum.csdn.net/PointForum/Manage/DeleteTopic.aspx?forumId=" + 
  154.                 topicInfo.forumId + "&topicId=" + topicInfo.topicId + "/r/n";
  155.             var deleteInfo = new DeleteInfo(GetUrlText(deleteUrl));
  156.             if (typeof deleteInfo.viewState == "string")
  157.             {
  158.                 var resultInfo = new ResultInfo(PostRequest(deleteUrl, deleteInfo));
  159.                 AppendLog(topicInfo.topicUrl + " -- (" + resultInfo.info + ")/r/n");
  160.             }
  161.         }
  162.         else $("TextareaLog").value += urls[i] + " -- (无效的帖子)/r/n";
  163.     }
  164. }
  165. function ButtonAnalyseClick() {
  166.     var text = $("TextareaText").value;
  167.     texttext = text.replace(//r/n/g, " ");
  168.     var matchs = text.match(/http:topic.csdn.net//u///d+///d+//[0-9a-z/-]+.html/g);
  169.     for (var i = 0; matchs && i < matchs.length; i++) {
  170.         $("TextareaUrls").value += matchs[i] + "/r/n";
  171.     }
  172. }
  173. </script>
  174. <table style="width:100%;height:100%;">
  175.     <tr style="height:10%">
  176.         <td>
  177.             <div>
  178.                 原因:<input type="input" value="非法帖子" id="TextReason"/>
  179.                 <input type="button" value="分析链接" onclick="ButtonAnalyseClick();" id="ButtonAnalyse" />
  180.                 <input type="button" value="开始删除" onclick="ButtonStartClick();" id="ButtonStart" />
  181.             </div>
  182.             <div>
  183.             </div>
  184.         </td>
  185.     </tr>
  186.     <tr>
  187.         <td>
  188.             原始文本:
  189.             <textarea id="TextareaText" style="width:100%; height:100%"></textarea>
  190.         </td>
  191.     </tr>
  192.     <tr>
  193.         <td>
  194.             需要删除的链接:
  195.             <textarea id="TextareaUrls" style="width:100%; height:100%"></textarea>
  196.         </td>
  197.     </tr>
  198.     <tr>
  199.         <td>
  200.             处理的日志:
  201.             <textarea id="TextareaLog" style="width:100%; height:100%"></textarea>
  202.         </td>
  203.     </tr>
  204. </table>
  205. </body>
  206. </html>


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值