Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
// After adding to your monobook.js, navigate to [[Special:Massblock]] to use the tool.functiongetParameter(p){varre=newRegExp('&'+p+'=([^&]*)','i');varc=window.location.search;returnunescape((c=c.replace(/^\?/,'&').match(re))?c=c[1]:c="");}functionmassblock(){if(wgPageName=="Special:Massblock"){document.title="Mass block tool";document.getElementById("content").innerHTML="When using this tool, you should know what great damage it can do. List of IPs to block, one on each line please:<br><textarea id=\"iplist\" columns=\"24\" rows=\"10\"></textarea><br /><br />Expiry: <input type=\"text\" value=\"1 year\" id=\"expiry\"><br />Reason: <input type=\"text\" value=\"[[w:open proxy|open proxy]] or [[w:zombie computer|zombie]] ([[m:WM:OP|more info]])\" id=\"reason\"><br /><input type=\"checkbox\" id=\"ao\" /> Anon only<br /><input type=\"checkbox\" id=\"acb\" checked=\"checked\" /> Prevent account creation<br /><br />Blocks/min: <input type=\"text\" value=\"10\" id=\"epm\"><br /><button onclick=\"massblock2()\">Block IPs</button> <button onclick=\"massblock4()\">Abort</button><div style=\"z-index:-1;position:relative;top:0px;left:0px\"><iframe name=\"blockframe0\" width=\"1px\" height=\"1px\"></iframe><iframe name=\"blockframe1\" width=\"1px\" height=\"1px\"></iframe><iframe name=\"blockframe2\" width=\"1px\" height=\"1px\"></iframe><iframe name=\"blockframe3\" width=\"1px\" height=\"1px\"></iframe><iframe name=\"blockframe4\" width=\"1px\" height=\"1px\"></iframe><iframe name=\"blockframe5\" width=\"1px\" height=\"1px\"></iframe></div>";}elseif(document.location.search.match("__MASSBLOCK__")){document.getElementById("wpAnonOnly").checked=getParameter("ao")=="1";document.getElementById("wpCreateAccount").checked=getParameter("acb")=="1";document.getElementById("mw-bi-other").value=getParameter("expiry").replace("+"," ","g");document.getElementById("mw-bi-reason").value=getParameter("reason").replace("+"," ","g");setTimeout("document.getElementById(\"blockip\").submit()",500);}}varwgBlocksToDo;varwgBlocksToDoIndex;varwgBlocksToDoInterval=0;varwgBlockFrame;functionmassblock2(){if(!parseFloat(document.getElementById("epm").value))return;wgBlocksToDo=newArray();iplist=document.getElementById("iplist").value.split("\n");for(i=0;i<iplist.length;i++){wgBlocksToDo[i]=iplist[i].split(":")[0];}mbcode="massblock3(wgBlocksToDo[wgBlocksToDoIndex++]);if (wgBlocksToDoIndex >= wgBlocksToDo.length) massblock4();";wgBlocksToDoIndex=wgBlockFrame=0;eval(mbcode);wgBlocksToDoInterval=setInterval(mbcode,(60/parseFloat(document.getElementById("epm").value))*1000);}functionmassblock3(ipToBlock){if(ipToBlock+""=="undefined")return;iplistobj=document.getElementById("iplist");if(iplistobj.value.indexOf("\n")==-1)iplistobj.value="";iplistobj.value=iplistobj.value.substring(iplistobj.value.indexOf("\n")+1);if(ipToBlock=="")return;frames["blockframe"+wgBlockFrame++].location.href=wgServer+wgScript+"?title=Special:Blockip&ip="+ipToBlock+"&__MASSBLOCK__=1&expiry="+document.getElementById("expiry").value+"&reason="+document.getElementById("reason").value+"&ao="+(document.getElementById("ao").checked?"1":"0")+"&acb="+(document.getElementById("acb").checked?"1":"0");if(wgBlockFrame==6)wgBlockFrame=0;}functionmassblock4(){clearInterval(wgBlocksToDoInterval);}$(massblock);