我的wiki上有500个左右的垃圾邮件程序和大约5个实际注册用户。我用nuke删除了他们的页面,但他们只是继续重新发布。我使用reCaptcha控制了spambot注册。现在,我只需要一种方法一次删除/阻止/合并约500个用户。
答案 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_password
和user_newpassword
字段会阻止用户登录。同时清除user_email
会阻止他们通过电子邮件请求新密码,并清除{{1}删除他们可能拥有的任何活动会话。
更新:自从我第一次发布此消息后,我就有了从MediaWiki安装中清理大量垃圾邮件用户和内容的经验。我已经记录了我使用的方法(基本上包括首先从数据库中删除用户,然后在this answer on Webmasters Stack Exchange中删除所有现在的孤立修订,最后运行rebuildall.php来修复链接表)。
或者,您可能还会发现Extension:RegexBlock有用:
“RegexBlock是一个扩展,它添加了一个特殊页面,其中包含使用正则表达式阻止,查看和解锁用户名和IP地址的界面。”
答案 1 :(得分:2)
在接受的答案中应用解决方案存在风险。该方法可能会损坏您的数据库!它不完全删除用户,无所事事以保持参照完整性,并且几乎肯定会导致显示错误。
Here提供了一个更好的解决方案(先决条件是您已经安装了User merge extension):
我有一个尴尬的方式通过一个完成批量合并 变通。希望有人会发现它有用! (必须有一点 电子表格中的字符串连接技巧;或者可以使用python 或类似的脚本;或使用批量替换的文本编辑器 功能)
准备所有SPAMuserID的列表,将它们存储在电子表格或文本文件中。列表可能是 从用户创建日志准备。如果你有 dB访问,Wiki_user表可以导入本地列表。
用于提交合并& 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 \
- 醇>
现在,将此网址划分为四个部分:
A: http: //(Your Wiki domain)/Special:UserMerge?olduser=
B: (OldUserNameHere)
C: &newuser=(NewUserNameHere)&deleteuser=1
D: &token=0d30d8b4033a9a523b9574ccf73abad8%2B\
现在使用文本编辑器或电子表格,为每个垃圾邮件用户ID添加A部分和后缀,每个部分包含C部分和D部分。部分C将包括 NewUser(这是一个专门创建的单个虚拟用户ID)。 D部分, 令牌字符串是一个与会话相关的令牌,将被更改 每个会话的用户。所以每次新的时候你都需要获得一个新的令牌 会议/批次工作是必需的。
通过上面的步骤,您应该获得一长串URL,每个URL都可以为一个用户执行合并和删除操作。我们现在可以创建一个 简单的HTML文件,查看它并使用像DownThemAll这样的批量下载程序 在Firefox中。 再加两件" linktext的"到每一行 始末。还可以在顶部和中间添加 底部并将文件保存为(例如:) userlist.html
- 醇>
在Firefox中打开文件,使用DownThemAll插件并下载所有文件!实际上,您正在访问合并和删除页面 每个用户并单击按钮!
虽然一旦你这么做,这可能看起来是一件冗长而棘手的工作 按照这种方法,你可以删除成千上万的用户 很多人工努力。
您可以通过打开一些来验证操作是否顺利 下载的html文件(或查看最近的更改) 另一个窗口)。
一个优点是它不直接编辑 MySQL页面。它也不需要直接访问数据库。
我对引用的文本进行了一些重写,因为原始文本包含一些缺陷。