// ==UserScript==
// @name 吧主之怒
// @namespace https://greasyfork.org/zh-CN/users/3846-kassent
// @version 1.1
// @description 对贴子最后回复人进行封禁,拉黑操作,主要用于爆吧情况,封禁拉黑一条龙服务。
// @include http://tieba.baidu.com/f?*
// @copyright 2014+, Kassent
// @grant none
// ==/UserScript==
//========用户设置部分================
var bantime = 10;//封禁天数,大吧可以1或10天,小吧只能一天。默认大吧十天,小吧一天。大吧可以修改其为一天。
var PageSum = 5;//获取页数,客户端贴吧页面的页数,每页50个贴子。
var maxlevel = 10;//对低于 x 级的ID进行操作
var isbanId = 1, //是否封禁ID,0为否,1为是
isdeleteItem = 0, //是否删除贴子,0为否,1为是,此功能暂时不可用。
isaddBlackList = 1; //是否拉黑ID,0为否,1为是
//=========以下部分不要随意修改===========
var reg=/^[a-z0-9.]*$/gi;
var pattern=/\d+/g;
var fid=PageData.forum.forum_id;
var bar_name =PageData.forum.forum_name;
var tbs=PageData.tbs;
var BDUSS = "";
var power;
var LastReplyerList = new Array();
var TrueLastReplyerList = new Array();
var LinkList = new Array();
var DeleteList = new Array();
var BanList = new Array();
var BlackList = new Array();
document.addEventListener('DOMContentLoaded', createButton, false);
function createButton() {
var controlBtn = document.createElement('div');
controlBtn.id = "startBanID";
controlBtn.onclick = function(){if(confirm('确定要执行吗?')==true){confirmPower();if(power!=0){getLinkList(PageSum);}}};
controlBtn.setAttribute("style","position: fixed; bottom: 35px; right: 25px;z-index: 99999999999;background: #009dd1; opacity: 1;color:#fff;font-size: 9pt;cursor: pointer;text-align: center;color:#fff;padding: 6px 8px");
controlBtn.appendChild(document.createTextNode('吧主之怒'));
document.body.appendChild(controlBtn);
}
$.ajaxSetup({async: false });
var hexcase=0;var b64pad="";function hex_md5(s){return rstr2hex(rstr_md5(str2rstr_utf8(s)));}function b64_md5(s){return rstr2b64(rstr_md5(str2rstr_utf8(s)));}function any_md5(s,e){return rstr2any(rstr_md5(str2rstr_utf8(s)),e);}function hex_hmac_md5(k,d){return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)));}function b64_hmac_md5(k,d){return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)));}function any_hmac_md5(k,d,e){return rstr2any(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)),e);}function md5_vm_test(){return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72";}function rstr_md5(s){return binl2rstr(binl_md5(rstr2binl(s),s.length*8));}function rstr_hmac_md5(key,data){var bkey=rstr2binl(key);if(bkey.length>16)bkey=binl_md5(bkey,key.length*8);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}var hash=binl_md5(ipad.concat(rstr2binl(data)),512+data.length*8);return binl2rstr(binl_md5(opad.concat(hash),512+128));}function rstr2hex(input){try{hexcase}catch(e){hexcase=0;}var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var output="";var x;for(var i=0;i<input.length;i++){x=input.charCodeAt(i);output+=hex_tab.charAt((x>>>4)&0x0F)+hex_tab.charAt(x&0x0F);}return output;}function rstr2b64(input){try{b64pad}catch(e){b64pad='';}var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var output="";var len=input.length;for(var i=0;i<len;i+=3){var triplet=(input.charCodeAt(i)<<16)|(i+1<len?input.charCodeAt(i+1)<<8:0)|(i+2<len?input.charCodeAt(i+2):0);for(var j=0;j<4;j++){if(i*8+j*6>input.length*8)output+=b64pad;else output+=tab.charAt((triplet>>>6*(3-j))&0x3F);}}return output;}function rstr2any(input,encoding){var divisor=encoding.length;var i,j,q,x,quotient;var dividend=Array(Math.ceil(input.length/2));for(i=0;i<dividend.length;i++){dividend[i]=(input.charCodeAt(i*2)<<8)|input.charCodeAt(i*2+1);}var full_length=Math.ceil(input.length*8/(Math.log(encoding.length)/Math.log(2)));var remainders=Array(full_length);for(j=0;j<full_length;j++){quotient=Array();x=0;for(i=0;i<dividend.length;i++){x=(x<<16)+dividend[i];q=Math.floor(x/divisor);x-=q*divisor;if(quotient.length>0||q>0)quotient[quotient.length]=q;}remainders[j]=x;dividend=quotient;}var output="";for(i=remainders.length-1;i>=0;i--)output+=encoding.charAt(remainders[i]);return output;}function str2rstr_utf8(input){var output="";var i=-1;var x,y;while(++i<input.length){x=input.charCodeAt(i);y=i+1<input.length?input.charCodeAt(i+1):0;if(0xD800<=x&&x<=0xDBFF&&0xDC00<=y&&y<=0xDFFF){x=0x10000+((x&0x03FF)<<10)+(y&0x03FF);i++;}if(x<=0x7F)output+=String.fromCharCode(x);else if(x<=0x7FF)output+=String.fromCharCode(0xC0|((x>>>6)&0x1F),0x80|(x&0x3F));else if(x<=0xFFFF)output+=String.fromCharCode(0xE0|((x>>>12)&0x0F),0x80|((x>>>6)&0x3F),0x80|(x&0x3F));else if(x<=0x1FFFFF)output+=String.fromCharCode(0xF0|((x>>>18)&0x07),0x80|((x>>>12)&0x3F),0x80|((x>>>6)&0x3F),0x80|(x&0x3F));}return output;}function str2rstr_utf16le(input){var output="";for(var i=0;i<input.length;i++)output+=String.fromCharCode(input.charCodeAt(i)&0xFF,(input.charCodeAt(i)>>>8)&0xFF);return output;}function str2rstr_utf16be(input){var output="";for(var i=0;i<input.length;i++)output+=String.fromCharCode((input.charCodeAt(i)>>>8)&0xFF,input.charCodeAt(i)&0xFF);return output;}function rstr2binl(input){var output=Array(input.length>>2);for(var i=0;i<output.length;i++)output[i]=0;for(var i=0;i<input.length*8;i+=8)output[i>>5]|=(input.charCodeAt(i/8)&0xFF)<<(i%32);return output;}function binl2rstr(input){var output="";for(var i=0;i<input.length*32;i+=8)output+=String.fromCharCode((input[i>>5]>>>(i%32))&0xFF);return output;}function binl_md5(x,len){x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}return Array(a,b,c,d);}function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}function md5_ff(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}function md5_gg(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t);}function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t);}function safe_add(x,y){var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}function bit_rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt));}
function getPostData(data){
var a = {
"BDUSS":BDUSS,
"_client_id":"wappc_1391906375532_83",
"_client_type":"2",
"_client_version":"4.5.3",
"_phone_imei":"862663020162818"
};
data = $.extend(a,data);
return data;
}
function decodeURI_post(postData) {
var SIGN_KEY = "tiebaclient!!!";
var s = "";
for (var i in postData) {
s += i + "=" + postData[i];
}
var sign = hex_md5(decodeURIComponent(s) + SIGN_KEY);
var data = "";
for (var i in postData) {
data += "&" + i + "=" + postData[i];
}
data += "&sign=" + sign;
return data.replace("&", "");
}
function compareObject(obj1,obj2){
if(obj1.id<obj2.id){return -1;}
else if(obj1.id>obj2.id){return 1;}
else{return 0;}
}
function uniqueArray(arr){
var temp = new Array();
arr.sort(compareObject);
for(i = 0; i < arr.length - 1; i++) {
if(arr[i].id == arr[i+1].id) {
continue;
}
temp[temp.length]=arr[i];
}
return temp;
}
function getLinkList(PageSum){
$.ajaxSetup({async: false });
var check_list = 0,page_num;
for(var i=0;i<PageSum;i++){
page_num = i + 1;
var PostData = getPostData({
"from":"tiebawap_bottom",
"kw":bar_name,
"net_type":"3",
"pn":page_num,
"st_type":"tb_forumlist"
});
$.post('/c/f/frs/page', decodeURI_post(PostData), function (msg) {
var tlist = msg.thread_list;
for(var i=0;i<tlist.length;i++){
//if(tlist[i].is_goog==1||tlist[i].is_top==1)continue; //排除精品贴和置顶贴
LinkList.push(tlist[i].tid);
TrueLastReplyerList.push(tlist[i].last_replyer);
}
check_list = tlist.length;
},"json");
console.log("第"+ page_num +"页贴子获取完毕");
if(check_list<50)break;
}
console.log("共" + page_num + "页贴子列表获取完毕");
console.log("共获取到" + LinkList.length + "个贴子");
console.log("开始获取最后回复人信息并进行操作");
getList();
}
function getList(){
var id_num = LinkList.length;
var sum = 0;
for(var i=0;i<id_num;i++){
var PostObData = getPostData({
"back":"0",
"kz":LinkList[i],
"last":"1",
"net_type":"3",
"q_type":"2",
"r":"1",
"rn":"30",
"with_floor":"1"
});
$.post('/c/f/pb/page', decodeURI_post(PostObData), function (msg){
if(msg.error_code!=0){console.log("获取失败,未知错误,或贴子已被删除");}
else{
var LastReplyer = msg.post_list[0].author;
var Content = msg.post_list[0].content;
var pid = msg.post_list[0].id;
LastReplyerList.push(LastReplyer);
if(LastReplyer.is_like==0||LastReplyer.level_id<=maxlevel)
{
console.log("最后回复人ID:" + LastReplyer.id + '\t' + "用户名:" + LastReplyer.name + '\t' + "是否关注本吧:" + LastReplyer.is_like + '\t' + "等级:" + LastReplyer.level_id + '\t' + "头衔:" + LastReplyer.level_name + '\t' +"执行!");
BanList.push(LastReplyer);
BlackList.push(LastReplyer);
var itemobj = {
"tid":LinkList[i],
"pid":pid
};
DeleteList.push(itemobj);
}else{console.log("最后回复人ID:" + LastReplyer.id + '\t' + "用户名:" + LastReplyer.name + '\t' + "是否关注本吧:" + LastReplyer.is_like + '\t' + "等级:" + LastReplyer.level_id + '\t' + "头衔:" + LastReplyer.level_name + '\t' +"跳过!");}}
sum++;
if(sum==LinkList.length){
BanList = uniqueArray(BanList);
BlackList = uniqueArray(BlackList);
console.log("数组去重完毕,开始执行封禁拉黑操作");
}
},'json');
}
chooseWay();
}
function banID(name){
if(power == 1&&bantime ==10){bantime = 1;}
var json = {
"cm":"filter_forum_user",
"ban_days":bantime,
"user_name":name,
"word":PageData.forum.name,
"fid":PageData.forum.forum_id,
"tbs":PageData.tbs,
"ie": "utf-8"
};
$.post("/bawu/cm",json,function(e){
if(e.error.errno==0){console.log(name + " 已被封禁" + bantime +"天");}
else{console.log(name + "封禁失败,未知错误");}
},'json');
}
function deleteItem(tid,pid){
var json = {
"commit_fr":"pb",
"fid":fid,
"ie":"utf-8",
"is_finf":false,
"is_vipdel":"0",
"kw":bar_name,
"pid":pid,
"tbs":tbs,
"tid":tid
};
$.post("http://tieba.baidu.com/f/commit/post/delete",json,function(responses)
{
var status = JSON.parse(responses).err_code;
if(!status){console.log("贴子已删除!");}else{console.log("删帖失败,未知错误");}
});
}
function addBlackList(id,name){
var json = {
"tbs":tbs,
"user_id":id,
"word":bar_name,
"ie":"utf-8",
};
$.post("http://tieba.baidu.com/bawu2/platform/addBlack",json,function(data){
var mess = JSON.parse(data).errno;
if(mess==0){
console.log(name + " 成功拉黑");}
else{console.log("拉黑失败,未知错误");}
});
}
function chooseWay(){
var t,i,len;
if(isbanId==1&&power!=0){
for(i=0,len=BanList.length;i<len;i++){
banID(BanList[i].name);
}
}
if(isaddBlackList==1&&power==2){
for(i=0,len=BlackList.length;i<len;i++){
addBlackList(BlackList[i].id,BlackList[i].name);
}
}
if(isdeleteItem==1&&power!=0){
for(i=0,len=DeleteList.length;i<len;i++){
clearTimeout(t);
setTimeout(deleteItem(DeleteList[i].tid,DeleteList[i].pid), 1000);
}
}
LinkList.length = DeleteList.length = BanList.length = BlackList.length = LastReplyerList.length = TrueLastReplyerList.length = 0;
console.log("执行完毕!");
}
function confirmPower(){
try{
var isbawu = PageData.user.power.bawu;
var isxiaoba = PageData.user.power.is_assist;
}catch(ex){
var isbawu = PageData.power.can_filter_id;
var isxiaoba = !PageData.power.can_add_manager_team;
}
if(!isbawu){power = 0;console.log("该帐号非吧务无权限");}
else if(isxiaoba){power = 1;console.log("该帐号拥有小吧主权限")}
else{power = 2;console.log("该帐号拥有吧主权限")}
}