2012-05-22 13 views
5

मेरे पास 500 या तो स्पैमबॉट हैं और मेरे विकी पर लगभग 5 वास्तविक पंजीकृत उपयोगकर्ता हैं। मैंने अपने पृष्ठों को हटाने के लिए नूक का उपयोग किया है, लेकिन वे सिर्फ reposting रहते हैं। मेरे पास reCaptcha का उपयोग कर नियंत्रण में स्पैम्बोट पंजीकरण है। अब, मुझे लगभग 500 उपयोगकर्ताओं को एक बार में हटाने/ब्लॉक/विलय करने का एक तरीका चाहिए।मीडियाविकी द्रव्यमान उपयोगकर्ता हटाएं/विलय/ब्लॉक करें

उत्तर

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 को मिटाने के लिए उन्हें ईमेल के माध्यम से एक नया पासवर्ड अनुरोध करें, को मिटाने से रोकता है user_token एक चला जाता है उनके पास सक्रिय सत्र हो सकते हैं।


अद्यतन: जब से मैं पहली बार इस पोस्ट, मैं एक MediaWiki स्थापना से स्पैम उपयोगकर्ताओं और सामग्री की बड़ी संख्या को साफ करने के आगे अनुभव प्राप्त हुआ है। मैंने उपयोग की गई विधि को दस्तावेज किया है (जिसमें मूल रूप से उपयोगकर्ताओं को डेटाबेस से हटा देना, फिर सभी अनाथ संशोधनों को मिटा देना, और आखिरकार लिंक टेबल को ठीक करने के लिए rebuildall.php चला रहा है) this answer on Webmasters Stack Exchange में।


वैकल्पिक रूप से, आप भी Extension:RegexBlock उपयोगी लग सकते:

"RegexBlock एक विस्तार है जो, अवरुद्ध देखने और उपयोगकर्ता को अनब्लॉक करने के नाम और IP पते नियमित अभिव्यक्ति का उपयोग कर के लिए इंटरफेस के साथ विशेष पृष्ठ कहते है।"

+0

बहुत बहुत धन्यवाद। उपयोगकर्ता टेबल को मैन्युअल रूप से हटाकर ठीक काम किया। मुझे खुशी है कि PHPmyAdmin का चयन सभी बटन है। 836 स्पैमबॉट और 5 असली उपयोगकर्ता थे। – user1410744

+0

एसक्यूएल कमांड के साथ खतरनाक गलतियों के जोखिम से बचने के लिए लोगों को [Deleteuser] (http://www.mediawiki.org/wiki/Extension:Deleteuser) एक्सटेंशन उपयोगी हो सकता है। – qris

2

स्वीकार्य उत्तर में समाधान लागू करने में जोखिम शामिल हैं। दृष्टिकोण आपके डेटाबेस को नुकसान पहुंचा सकता है! यह अपूर्ण रूप से उपयोगकर्ताओं को हटा देता है, संदर्भित अखंडता को संरक्षित करने के लिए कुछ नहीं कर रहा है, और लगभग निश्चित रूप से प्रदर्शन त्रुटियों का कारण बन जाएगा।

मैं थोड़ा अजीब तरह से पूरा करने के लिए थोक के माध्यम से एक काम के आसपास विलय है:

Here एक बेहतर समाधान प्रस्तुत किया है (एक शर्त है कि आप User merge extension स्थापित किया है) है। उम्मीद है कि किसी को यह उपयोगी लगेगा! (स्प्रैडशीट में एक छोटे से स्ट्रिंग संयोजन कौशल होना चाहिए, या एक एक अजगर या इसी तरह की स्क्रिप्ट का उपयोग कर सकते हैं; सुविधाओं या थोक प्रतिस्थापन के साथ एक पाठ संपादक का उपयोग)

  1. सभी SPAMuserIDs की सूची तैयार, उन्हें स्टोर स्प्रेडशीट या टेक्स्टफाइल में। सूची उपयोगकर्ता निर्माण लॉग से तैयार हो सकती है। यदि आपके पास डीबी एक्सेस है, तो Wiki_user तालिका को स्थानीय सूची में आयात किया जा सकता है।

  2. मर्ज & सबमिट करने के लिए प्रयुक्त पोस्ट विधि उपयोगकर्ता फ़ॉर्म (बटन क्लिक करके) को हटाएं विधि प्राप्त करने के लिए परिवर्तित किया जाना चाहिए। यह हमें एक लंबा यूआरएल मिलेगा।विधि के लिए दूसरी टिप्पणी (मैथ्यू सिमोनौ द्वारा दिनांक 13/जनवरी/200 9) http://www.mathworks.com/matlabcentral/newsreader/view_thread/242300 पर देखें।

    : http: // (आपका विकी डोमेन)/विशेष: UserMerge olduser = (OldUserNameHere) & NEWUSER = (NewUserNameHere) & deleteuser = 1 & टोकन = 0d30d8b4033a9a523b9574ccf73abad8 परिणामी URL स्ट्रिंग नीचे की तरह कुछ किया जाना चाहिए % 2 बी \

  3. अब, चार वर्गों में विभाजित इस URL:

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

B: (OldUserNameHere) 

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

D: &token=0d30d8b4033a9a523b9574ccf73abad8%2B\ 
  1. अब एक पाठ संपादक या स्प्रेडशीट, भाग ए और प्रत्यय भाग सी और डी भाग सी के साथ प्रत्येक NEWUSER शामिल होंगे साथ हर अनचाहा userIDs उपसर्ग का उपयोग करते हुए (जो एक विशेष रूप से बनाया एकल डमी उपयोगकर्ता आईडी है)। भाग डी, टोकन स्ट्रिंग एक सत्र-निर्भर टोकन है जो प्रति सत्रउपयोगकर्ता प्रतिस्थापित किया जाएगा। इसलिए जब भी नया सत्र/कार्य के बैच की आवश्यकता होती है तो आपको एक नया टोकन प्राप्त करने की आवश्यकता होगी।

  2. उपरोक्त चरण के साथ, आपको यूआरएल की एक लंबी सूची मिलनी चाहिए, मर्ज करने के लिए प्रत्येक अच्छा & एक उपयोगकर्ता के लिए ऑपरेशन हटाएं। अब हम सरल HTML फ़ाइल बना सकते हैं, इसे देख सकते हैं और बैच डाउनलोडर जैसे डाउनथीम फ़ायरफ़ॉक्स में उपयोग कर सकते हैं। शुरुआत और अंत पर प्रत्येक पंक्ति में "लिंकटेक्स्ट" दो और टुकड़े जोड़ें। शीर्ष पर और पर भी जोड़ें और फ़ाइल को सहेजें (उदाहरण के लिए :) userlist.html

  3. फ़ायरफ़ॉक्स में फ़ाइल खोलें, DownThemAll ऐड-ऑन का उपयोग करें और सभी फ़ाइलों को डाउनलोड करें! प्रभावी रूप से, आप मर्ज & पर जा रहे हैं प्रत्येक उपयोगकर्ता के लिए पृष्ठ हटाएं और बटन पर क्लिक करें!

इस पहली बार में एक लंबी और मुश्किल काम लग सकता है हालांकि, एक बार आप इस विधि का पालन करें , आप उपयोगकर्ताओं की हजारों ज्यादा पुस्तिका प्रयासों के बिना निकाल सकते हैं।

आप यह सत्यापित कर सकते हैं कि डाउनलोड की गई कुछ HTML फ़ाइलों को खोलकर ऑपरेशन अच्छी तरह से चल रहा है (या में हालिया परिवर्तनों को देखकर)।

एक फायदा यह है कि यह सीधे MySQL पृष्ठों को संपादित नहीं करता है। न ही इसे सीधे डेटाबेस पहुंच की आवश्यकता होती है।

मैंने उद्धृत पाठ में थोड़ा सा पुनर्लेखन किया, क्योंकि मूल पाठ में कुछ त्रुटियां हैं।

+1

दरअसल, मेरे उत्तर में दी गई क्वेरी * किसी भी * उपयोगकर्ताओं को नहीं हटाती है (यह सिर्फ उनकी लेख जानकारी अक्षम करता है ताकि वे लॉग इन नहीं कर सकें), इसलिए यह संदर्भित अखंडता को तोड़ नहीं देगा (ऐसा नहीं कि मीडियाविकि ने कभी इसके बारे में बहुत अधिक ध्यान दिया है, वैसे भी) और किसी भी प्रदर्शन के मुद्दों का कारण नहीं बनना चाहिए (आपके विशेष के रूप में छोड़कर: सूची उपयोगकर्ता अभी भी स्पैम खातों से भरे जाएंगे)। उस ने कहा, मैं अब ज्यादातर मामलों में उस विधि की सिफारिश नहीं करता; यह बहुत साफ है [केवल स्पैम उपयोगकर्ताओं और उनके योगदानों को पूरी तरह से हटाएं, और फिर डेटाबेस को ठीक करने के लिए रखरखाव स्क्रिप्ट का उपयोग करें] (http://webmasters.stackexchange.com/a/45486)। –

+0

@IlmariKaronen, लिंक के लिए धन्यवाद, एक अच्छा समाधान भी लगता है। – Ruut

संबंधित मुद्दे