如果你不是版主,那么这个工具对你作用不大,请绕路。
使用方法:
1、复制如下HTML代码到记事本中;
2、保存文件,编码为“UTF8”,扩展名为“.HTA”;
3、在IE中用版主身份登录;
4、双击文件运行该程序;
5、将要删除的帖子链接复制到"需要删除的链接:"文本框中,以回车分隔;
6、点击“开始删除”。
使用方法:
1、复制如下HTML代码到记事本中;
2、保存文件,编码为“UTF8”,扩展名为“.HTA”;
3、在IE中用版主身份登录;
4、双击文件运行该程序;
5、将要删除的帖子链接复制到"需要删除的链接:"文本框中,以回车分隔;
6、点击“开始删除”。
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>CSDN批量删帖--清洁工2008版</title>
- </head>
- <body>
- <script type="text/javascript">
- /*--
- 设计:ZswangY37
- 日期:2008年10月18日
- 博客:http://blog.csdn.net/zswang
- --*/
- $ = document.getElementById;
- var ForAppending = 8; // 追加模式
- var ForReading = 1; // 读取模式
- var ForWriting = 2; // 写入模式
- /// <summary>
- /// 将字符串追加到文本文件最后
- /// </summary>
- /// <param name="filename">文件名</param>
- /// <param name="text">所要追加的字符串</param>
- /// <returns>返回追加是否成功</returns>
- function AppendFileText(filename, text)
- {
- var fso = new ActiveXObject("Scripting.FileSystemObject"); // 文件系统
- var istream = fso.OpenTextFile(filename, ForAppending, true);
- if (!istream) return;
- try {
- istream.write(text);
- istream.Close();
- return true;
- } catch (e) {
- return false;
- } finally {
- istream = null;
- fso = null;
- }
- }
- /// <summary>
- /// 追加日志
- /// </summary>
- /// <param name="text">日志文本</param>
- function AppendLog(text) {
- $("TextareaLog").value += text;
- AppendFileText("log.txt", text);
- }
- /// <summary>
- /// 分析帖子内容
- /// </summary>
- /// <param name="topicText">帖子HTML文本</param>
- /// <returns>返回帖子信息</returns>
- function TopicInfo(topicText){
- topicTexttopicText = topicText.replace(//r/n/g, " ");
- var re = //<span/s*csdnid=/"isCheckOut/"/s*class=/"color_red/"/>(.*?)/<//span/>/g;
- if (re.exec(topicText)) this.isCheckOut = RegExp.$1; // 是否已经结贴
- var re = //<meta/s*csdnid=/"sectionId/"/s*content=/"(.*?)/"(/s*//)*/>/g;
- if (re.exec(topicText)) this.forumId = RegExp.$1; // 版块ID
- var re = //<meta/s*id=/"topicViewUrl/"/s*csdnid=/"topicViewUrl/"/s*content=/"(.*?)/"(/s*//)*/>/g;
- if (re.exec(topicText)) this.topicUrl = RegExp.$1; // 帖子链接
- var re = /http:topic.csdn.net//u///d+///d+//([0-9a-z/-]+).html/g;
- if (re.exec(topicText)) this.topicId = RegExp.$1; // 帖子链接
- var re = //<meta/s*csdnid=/"description/"/s*content=/"(.*?)/"/s*name=/"description/"(/s*//)*/>/g;
- if (re.exec(topicText)) this.description = RegExp.$1; // 帖子主题
- var re = //<var/s*id=/"point/"/s*csdnid=/"topicPoint/"/>(.*?)/<//var/>/g;
- if (re.exec(topicText)) this.point = RegExp.$1; // 帖子点数
- var re = //<var/s*csdnid=/"replyCount/">(.*?)/<//var/>/g;
- if (re.exec(topicText)) this.replyCount = RegExp.$1; // 回复次数
- var re = //<a/s*href=/"http/:hi.csdn.net//(.*?)/"/s*.*?/>/g;
- if (re.exec(topicText)) this.username = RegExp.$1; // 楼主
- var re = //<var/s*csdnid=/"topicPostDate/">(.*?)/<//var/>/g;
- if (re.exec(topicText)) this.topicPostDate = RegExp.$1; // 发帖时间
- }
- /// <summary>
- /// 获取链接的文本内容
- /// </summary>
- /// <param name="url">页面链接地址</param>
- /// <returns>返回页面HTML文本</returns>
- function GetUrlText(url) {
- var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
- try {
- xmlhttp.open("get", url, false);
- xmlhttp.send();
- return xmlhttp.responseText;
- } catch (e) {
- return "";
- } finally {
- xmlhttp = null;
- }
- }
- /// <summary>
- /// 分析删除提交信息
- /// </summary>
- /// <param name="htmlText">页面文本</param>
- /// <returns>返回删除提交信息对象</returns>
- function DeleteInfo(htmlText) {
- htmlTexthtmlText = htmlText.replace(//r/n/g, " ");
- var re = /<input/s+type=/"hidden/"/s+name=/"__VIEWSTATE/"/s+id=/"__VIEWSTATE/"/s+value=/"(.*?)/"/s+//>/g;
- if (re.exec(htmlText)) this.viewState = RegExp.$1;
- var re = /<input/s+type=/"hidden/"/s+name=/"__EVENTVALIDATION/"/s+id=/"__EVENTVALIDATION/"/s+value=/"(.*?)/"/s+//>/g;
- if (re.exec(htmlText)) this.eventValidation = RegExp.$1;
- }
- /// <summary>
- /// 分析提交返回信息
- /// </summary>
- /// <param name="htmlText">页面文本</param>
- /// <returns>返回提交返回信息对象</returns>
- function ResultInfo(htmlText) {
- htmlTexthtmlText = htmlText.replace(//r/n/g, " ");
- var re = /<div/s+class="csdnTipContent">/s*<span/s+class="(.*?)">(.*?)<//span>/s*<//div>/ig;
- if (re.exec(htmlText)) {
- this.state = RegExp.$1;
- this.info = RegExp.$2;
- }
- }
- /// <summary>
- /// 提交删帖请求
- /// </summary>
- /// <param name="url">处理删帖的链接</param>
- /// <param name="deleteInfo">删帖相关参数</param>
- /// <returns>返回提交页面文本</returns>
- function PostRequest(url, deleteInfo)
- {
- var data = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=" + encodeURIComponent(deleteInfo.viewState) +
- "&reasonGroup=2&ctl00%24ContentPlaceHolder1%24tb_Reason=" + encodeURIComponent($("TextReason").value) +
- "&ctl00%24ContentPlaceHolder1%24bt_Submit=%E7%A1%AE%E5%AE%9A&" +
- "__EVENTVALIDATION=" + encodeURIComponent(deleteInfo.eventValidation);
- var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
- try {
- xmlhttp.open("Post", url, false);
- xmlhttp.setRequestHeader("Referer", url);
- xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- xmlhttp.setRequestHeader("Accept-Encoding", "gzip,deflate");
- xmlhttp.setRequestHeader("Content-Length", data.length);
- xmlhttp.send(data);
- return xmlhttp.responseText;
- } catch (e) {
- return e.message;
- } finally {
- xmlhttp = null;
- }
- }
- function ButtonStartClick() {
- var urls = $("TextareaUrls").value.split(//r/n/); // 论坛列表
- for (var i = 0; i < urls.length; i++) {
- var topicInfo = new TopicInfo(GetUrlText(urls[i]));
- if (typeof topicInfo.forumId == "string")
- {
- var deleteUrl = "http://forum.csdn.net/PointForum/Manage/DeleteTopic.aspx?forumId=" +
- topicInfo.forumId + "&topicId=" + topicInfo.topicId + "/r/n";
- var deleteInfo = new DeleteInfo(GetUrlText(deleteUrl));
- if (typeof deleteInfo.viewState == "string")
- {
- var resultInfo = new ResultInfo(PostRequest(deleteUrl, deleteInfo));
- AppendLog(topicInfo.topicUrl + " -- (" + resultInfo.info + ")/r/n");
- }
- }
- else $("TextareaLog").value += urls[i] + " -- (无效的帖子)/r/n";
- }
- }
- function ButtonAnalyseClick() {
- var text = $("TextareaText").value;
- texttext = text.replace(//r/n/g, " ");
- var matchs = text.match(/http:topic.csdn.net//u///d+///d+//[0-9a-z/-]+.html/g);
- for (var i = 0; matchs && i < matchs.length; i++) {
- $("TextareaUrls").value += matchs[i] + "/r/n";
- }
- }
- </script>
- <table style="width:100%;height:100%;">
- <tr style="height:10%">
- <td>
- <div>
- 原因:<input type="input" value="非法帖子" id="TextReason"/>
- <input type="button" value="分析链接" onclick="ButtonAnalyseClick();" id="ButtonAnalyse" />
- <input type="button" value="开始删除" onclick="ButtonStartClick();" id="ButtonStart" />
- </div>
- <div>
- </div>
- </td>
- </tr>
- <tr>
- <td>
- 原始文本:
- <textarea id="TextareaText" style="width:100%; height:100%"></textarea>
- </td>
- </tr>
- <tr>
- <td>
- 需要删除的链接:
- <textarea id="TextareaUrls" style="width:100%; height:100%"></textarea>
- </td>
- </tr>
- <tr>
- <td>
- 处理的日志:
- <textarea id="TextareaLog" style="width:100%; height:100%"></textarea>
- </td>
- </tr>
- </table>
- </body>
- </html>