Mediawiki大众用户删除/合并/阻止

时间:2012-05-22 16:49:23

标签: wiki mediawiki spam spam-prevention

我的wiki上有500个左右的垃圾邮件程序和大约5个实际注册用户。我用nuke删除了他们的页面,但他们只是继续重新发布。我使用reCaptcha控制了spambot注册。现在,我只需要一种方法一次删除/阻止/合并约500个用户。

2 个答案:

答案 0 :(得分:7)

您可以手动删除user表中的帐户,或者至少使用以下查询禁用其身份验证信息:

UPDATE /*_*/user SET
  user_password    = '',
  user_newpassword = '',
  user_email       = '',
  user_token       = ''
WHERE
  /* condition to select the users you want to nuke */

(将/*_*/替换为$wgDBprefix,如果有的话。哦,并先做备份。)

清除user_passworduser_newpassword字段会阻止用户登录。同时清除user_email会阻止他们通过电子邮件请求新密码,并清除{{1}删除他们可能拥有的任何活动会话。


更新:自从我第一次发布此消息后,我就有了从MediaWiki安装中清理大量垃圾邮件用户和内容的经验。我已经记录了我使用的方法(基本上包括首先从数据库中删除用户,然后在this answer on Webmasters Stack Exchange中删除所有现在的孤立修订,最后运行rebuildall.php来修复链接表)。


或者,您可能还会发现Extension:RegexBlock有用:

  

“RegexBlock是一个扩展,它添加了一个特殊页面,其中包含使用正则表达式阻止,查看和解锁用户名和IP地址的界面。”

答案 1 :(得分:2)

在接受的答案中应用解决方案存在风险。该方法可能会损坏您的数据库!它不完全删除用户,无所事事以保持参照完整性,并且几乎肯定会导致显示错误。

Here提供了一个更好的解决方案(先决条件是您已经安装了User merge extension):

  

我有一个尴尬的方式通过一个完成批量合并   变通。希望有人会发现它有用! (必须有一点   电子表格中的字符串连接技巧;或者可以使用python   或类似的脚本;或使用批量替换的文本编辑器   功能)

     
      
  1. 准备所有SPAMuserID的列表,将它们存储在电子表格或文本文件中。列表可能是   从用户创建日志准备。如果你有   dB访问,Wiki_user表可以导入本地列表。

  2.   
  3. 用于提交合并& amp;删除用户表单(通过单击按钮)应转换为get方法。这个   会给我们一个很长的网址。见第二条评论(Matthew Simoneau撰写)   日期为2009年1月13日)   http://www.mathworks.com/matlabcentral/newsreader/view_thread/242300   对于该方法。   生成的URL字符串应如下所示:

         
        

    http://(您的Wiki域名)/ Special:UserMerge?olduser =(OldUserNameHere)& newuser =(NewUserNameHere)& deleteuser = 1& token = 0d30d8b4033a9a523b9574ccf73abad8%2B \

      
  4.   
  5. 现在,将此网址划分为四个部分:

  6.   
 A: http: //(Your Wiki domain)/Special:UserMerge?olduser= 

 B: (OldUserNameHere) 

 C: &newuser=(NewUserNameHere)&deleteuser=1 

 D: &token=0d30d8b4033a9a523b9574ccf73abad8%2B\
  
      
  1. 现在使用文本编辑器或电子表格,为每个垃圾邮件用户ID添加A部分和后缀,每个部分包含C部分和D部分。部分C将包括   NewUser(这是一个专门创建的单个虚拟用户ID)。 D部分,   令牌字符串是一个与会话相关的令牌,将被更改   每个会话的用户。所以每次新的时候你都需要获得一个新的令牌   会议/批次工作是必需的。

  2.   
  3. 通过上面的步骤,您应该获得一长串URL,每个URL都可以为一个用户执行合并和删除操作。我们现在可以创建一个   简单的HTML文件,查看它并使用像DownThemAll这样的批量下载程序   在Firefox中。   再加两件" linktext的"到每一行   始末。还可以在顶部和中间添加   底部并将文件保存为(例如:) userlist.html

  4.   
  5. 在Firefox中打开文件,使用DownThemAll插件并下载所有文件!实际上,您正在访问合并和删除页面   每个用户并单击按钮!

  6.         

    虽然一旦你这么做,这可能看起来是一件冗长而棘手的工作   按照这种方法,你可以删除成千上万的用户   很多人工努力。

         

    您可以通过打开一些来验证操作是否顺利   下载的html文件(或查看最近的更改)   另一个窗口)。

         

    一个优点是它不直接编辑   MySQL页面。它也不需要直接访问数据库。

我对引用的文本进行了一些重写,因为原始文本包含一些缺陷。