Mediawiki में स्पैम संशोधन के बड़े पैमाने पर विलोपन


15

मूल रूप से मेरा 'निजी' मीडियाविकि उदाहरण एक बच्चा पिगीबैंक के रूप में सुरक्षित था। मैंने इसे अभी और कड़ा कर दिया है, लेकिन सैकड़ों बेतरतीब ढंग से उत्पन्न उपयोगकर्ताओं द्वारा लगभग सौ या इतने नए पृष्ठों और संशोधनों के साथ छोड़ दिया गया है।

2 भाग प्रश्न; क्या सभी अनाथ पृष्ठों को हटाने का कोई तरीका है? क्या मैं किसी विशेष उपयोगकर्ता (मुझे) द्वारा किए गए सभी संशोधनों को वापस करने के लिए कह सकता हूं?


mediawiki.org/wiki/Manual:Combating_vandalism और mediawiki.org/wiki/Manual:Combating_spam विहित स्रोत हैं, लेकिन अधिक काम जारी है: phabricator.wikimedia.org/T90238
निमो

मुझे अब अपनी मीडियाविकि वेबसाइट के साथ यह समस्या नहीं है। यदि आपकी अभी भी यह समस्या मेरी टिप्पणी पर प्रतिक्रिया दे रही है और मैं आपको एक लाइव स्ट्रीम में दिखा सकता हूं कि मैं इन समस्याओं को कैसे ठीक करूं।
जेहोवह्स

जवाबों:


19

यदि आप danlefree द्वारा सुझाए गए निर्यात-और-पुनर्स्थापना विधि का उपयोग नहीं करना चाहते हैं , तो आप Nuke एक्सटेंशन को उपयोगी भी पा सकते हैं । एक बार स्थापित होने पर, विशेष पृष्ठ पर जाना विशेष: एक प्रशासक के रूप में Nuke आपको इस तरह से एक फॉर्म देता है:

MediaWiki Nuke एक्सटेंशन इंटरफ़ेस का स्क्रीनशॉट

कई अंतर्निहित मीडियाविकि रखरखाव स्क्रिप्ट भी हैं जो उपयोगी हो सकती हैं, जिनमें शामिल हैं:

  • cleanupSpam.php , जिसका उपयोग किसी विशेष होस्टनाम के लिंक वाले सभी संशोधनों को रोलबैक और / या हटाने के लिए किया जा सकता है,

  • deleteBatch.php , जिसका उपयोग किसी फ़ाइल में सूचीबद्ध सभी पृष्ठों को हटाने के लिए किया जा सकता है, और

  • rollbackEdits.php (जो कि वर्तमान में विकी डॉक्यूमेंटेशन के लिए उचित नहीं है), जिसका उपयोग किसी निर्दिष्ट उपयोगकर्ता के सभी संपादन वापस करने के लिए किया जा सकता है।


डायरेक्ट डेटाबेस एक्सेस का उपयोग करके स्पैम क्लीनअप करें

डेटाबेस में सीधे हेरफेर करके आप जो करना चाहते हैं, वह करना भी संभव है। आपकी स्थिति के आधार पर विवरण थोड़ा भिन्न हो सकते हैं, लेकिन मूल कदम कुछ इस तरह से होंगे:

  1. अपनी विकी को केवल पढ़ने के लिए मोड पर सेट करें । जब आप डेटाबेस के साथ खिलवाड़ कर रहे हों तो आप नहीं चाहते कि कोई विकि को संपादित करने का प्रयास करे।

  2. अपने विकी का बैकअप बनाएं। (यह वैसे भी किसी भी अपरिवर्तनीय बड़े पैमाने पर हटाने से पहले अनुशंसित है।)

  3. स्पैमर्स द्वारा बनाए गए सभी उपयोगकर्ता खातों को हटाएं। यदि, ऊपर दिए गए प्रश्न के अनुसार, आप केवल मान्य उपयोगकर्ता थे, तो आप बस कर सकते हैं:

    DELETE FROM user WHERE user_id != YOUR_USER_ID;

    वैकल्पिक रूप से, यदि स्पैमर्स द्वारा विकी की खोज के बाद कोई नया वैध खाता नहीं बनाया गया था, तो आप उच्चतम वैध उपयोगकर्ता आईडी नंबर प्राप्त कर सकते हैं:

    DELETE FROM user WHERE user_id > LAST_VALID_USER_ID;

    या आप मान्य खातों को मैन्युअल रूप से निकालने और बाकी को हटाने के लिए phpMyAdmin जैसे एक व्यवस्थापक उपकरण का उपयोग कर सकते हैं।

  4. हटाए गए खातों से जुड़े अतिरिक्त डेटा को साफ करें। यह कड़ाई से आवश्यक नहीं है, लेकिन उन अनाथ रिकॉर्ड का कोई उपयोग नहीं है और यदि आप उन्हें नहीं हटाते हैं तो बस अपने डेटाबेस को अव्यवस्थित कर देंगे:

    DELETE FROM user_groups WHERE ug_user NOT IN (SELECT user_id FROM user);
    DELETE FROM user_properties WHERE up_user NOT IN (SELECT user_id FROM user);
    DELETE FROM user_newtalk WHERE user_id NOT IN (SELECT user_id FROM user);
  5. मान्य उपयोगकर्ता द्वारा नहीं किए गए किसी भी संशोधन को हटाएं:

    यह बड़ा कदम है; तैयारी से पहले सब कुछ, इसके बाद सब कुछ सफाई है। हटाए गए सभी स्पैम खातों के साथ, आप बस यह कर सकते हैं:

    DELETE FROM revision WHERE rev_user > 0 AND rev_user NOT IN (SELECT user_id FROM user);

    यदि आपकी विकि में अनाम संपादन अक्षम है (जिसे मैं निजी / परीक्षण विकियों के लिए दृढ़ता से सलाह देता हूं), तो सभी स्पैम संशोधनों से छुटकारा पाने के लिए उपरोक्त क्वेरी पर्याप्त होनी चाहिए। यदि आपने अनोन संपादन सक्षम किया है, तो आपको अनाम स्पैम को अलग से संलग्न करना होगा

    यदि आप सुनिश्चित हैं कि आपके विकी पर सभी संपादन संपादन स्पैम हैं, तो केवल UID 0 द्वारा किए गए एकमात्र संपादन जो हमें संरक्षित करने की आवश्यकता हो सकती है, वे स्वयं MediaWiki द्वारा बनाए गए हैं (जैसे कि विकी के बाहर से आयात किए गए पृष्ठ)। उस स्थिति में, निम्नलिखित क्वेरी की तरह कुछ काम करना चाहिए:

    DELETE FROM revision WHERE rev_user = 0 AND rev_user_text BETWEEN '1' AND '999';

    यह यूआईडी 0 द्वारा किसी भी संशोधन को हटा देगा जहां उपयोगकर्ता आईपीवी 4 पते की तरह दिखता है (अस्पष्ट रूप से); अर्थात्, यह 1 और 9 के बीच के अंक से शुरू होता है।

    यदि आपके विकी में कुछ वास्तविक वैध एनोन संपादन हैं, तो आपको थोड़ा और रचनात्मक होना पड़ सकता है। यदि वैध अपंजीकृत संपादकों द्वारा उपयोग किए जाने वाले आईपी पतों की संख्या सीमित है, तो आप केवल AND rev_user_text NOT IN ('1.2.3.4', '5.6.7.8', '9.10.11.12')उन IP से हटाए गए क्वेरी में योगदान को बाहर करने के लिए ऊपर दिए गए क्वेरी की तरह एक खंड जोड़ सकते हैं । आप AND rev_user_text NOT LIKE '192.168.%'एक विशेष उपसर्ग के साथ शुरू होने वाले आईपी पते से सभी संपादन को बचाने के लिए , जैसे कि स्थिति भी जोड़ सकते हैं ।

  6. ऊपर दिए गए प्रश्नों से स्पैम संशोधनों से छुटकारा मिल जाएगा (हालांकि उनकी सामग्री अभी भी textतालिका में रहेगी ), लेकिन page_latestकिसी भी प्रभावित पृष्ठों के क्षेत्र को एक बिना किसी संशोधन के इंगित करते हुए छोड़ देंगे । यह भ्रम पैदा कर सकता है, इसलिए हम इसे ठीक कर देंगे।

    सबसे पहले, हमें page_latestसभी पृष्ठों के लिए कॉलम को मिटा देना होगा :

    UPDATE page SET page_latest = 0;
  7. इसके बाद, हम कॉलम को फिर से बनाएंगे, या तो संलग्नक.स्टेप रखरखाव स्क्रिप्ट चलाकर (अनुशंसित, --fixपैरामीटर का उपयोग करने के लिए याद रखें ताकि स्क्रिप्ट वास्तव में डेटाबेस को बदल दे) या मैनुअल SQL क्वेरी के साथ:

    UPDATE page SET page_latest =
        (SELECT MAX(rev_id) FROM revision WHERE rev_page = page_id);
  8. अंत में, हम उन सभी पृष्ठों को हटा देंगे जिनके लिए कोई वैध संशोधन नहीं पाया जा सका (क्योंकि वे स्पैमर्स द्वारा बनाए गए थे, और उनके पास कभी कोई सामग्री नहीं थी):

    DELETE FROM page WHERE page_latest = 0;
  9. एक अंतिम स्पर्श के लिए, पुनर्निर्माण, पाठ अनुक्रमणिका और हाल ही में परिवर्तन तालिकाओं को फिर से बनाएँ । आप डेटाबेस से हटाए गए स्पैम संशोधनों की सामग्री को निकालना भी चाह सकते हैं, ताकि वे purgeOldText.php रखरखाव स्क्रिप्ट चलाकर वहां अनावश्यक स्थान न लें ।

एक बार जब यह पूरा हो जाता है, तो जांचें कि सब कुछ अच्छा लग रहा है, और यदि ऐसा है, तो रीड-ओनली मोड को बंद कर दें - समस्या को फिर से रखने के लिए कुछ एंटी-स्पैम सुविधाओं को स्थापित करने के बाद ।

छोटी विकियों के लिए, मैं अत्यधिक क्वेस्टक्प्चा एक्सटेंशन की सिफारिश करता हूं , जो आपको एक सरल कस्टम टेक्स्ट-आधारित कैप्चा को कॉन्फ़िगर करने की अनुमति देता है। चाल यह है कि, हर विकी के पास प्रश्नों का अपना सेट है, उन्हें सही ढंग से जवाब देने के लिए एक स्पैम्बोट प्रोग्रामिंग करना बहुत कम लाभ के लिए बहुत काम आएगा। मैंने इसे अपने ही विकी पर स्थापित किया था, जो कि एक दो बार ज़ुमेर से टकरा गया था और तब से कोई स्पैम नहीं देखा है।

Ps। मैंने इन निर्देशों का उपयोग एक छोटे विकी से समान रूप से कई उपयोगकर्ताओं द्वारा बनाए गए लगभग 35,000 स्पैम संशोधनों के लिए किया है । सबकुछ अच्छा रहा। इस विशेष मामले में, विकी (सौभाग्य से!) ने गुमनाम संपादन की अनुमति नहीं दी, और लगभग सभी वैध उपयोगकर्ताओं को विकी के पाए जाने से पहले बनाया गया था, इसलिए मैं सभी स्पैम खातों को पहले आसानी से हटा सकता था, और फिर सभी संशोधन उन्होंने बनाया होगा। (मैंने पहली बार गलती से एक वैध खाते को हटा दिया था, इसलिए मुझे बैकअप से पुनर्स्थापित करना पड़ा और इस प्रक्रिया को अधिक सावधानी से फिर से करना पड़ा।) मैंने ऊपर दिए गए निर्देशों को बेहतर तरीके से अपडेट किया है कि मैं वास्तव में क्या कर रहा हूं, और थोड़ा और अधिक सामान्य होने के लिए। ।


यह सवाल कुछ साल पुराना है, यह अभी भी एक छोटी विकी पर अच्छी तरह से काम करता है जिसने 100,000 स्पैम बॉट जमा किए थे। तब से चीजें बदल गई हैं; क्या शायद अतिरिक्त कदम हैं?
Ant6n

कुछ खबर यहाँ? ये आजकल "सर्वश्रेष्ठ अभ्यास" और "सर्वोत्तम उपकरण" हैं?
पीटर क्रूस

rebuildall.phpरखरखाव में नहीं है: ओ अन्यथा धन्यवाद
जेमी हटर

5

इस स्थिति को संभालने का सबसे आसान तरीका (यदि आपको कोई समस्या नहीं है) तो अपने उपयोगकर्ता नाम से बनाए गए या संपादित किए गए सभी विकी पृष्ठों को निर्यात करना होगा, विकी को फिर से इंस्टॉल करना होगा और आपके द्वारा बनाई गई निर्यात फ़ाइल को आयात करना होगा।

इस संदर्भ में "अनइंस्टॉल" का अर्थ होगा:

  1. आपके द्वारा बनाए गए निर्यात लेख (संभवत: विकीपीसोप उपयोगकर्ता या समान के रूप में लॉग इन किए गए)
  2. MW डेटाबेस ड्रॉप करें
  3. एक खाली MW डेटाबेस बनाएँ
  4. अपनी LocalSettings.phpफ़ाइल को एक सुरक्षित स्थान पर कॉपी करें
  5. /config/निर्देशिका को पुनः अपलोड करें
  6. नए MW डेटाबेस पर स्थापना प्रक्रिया को चलाएं (ध्यान दें कि आप अपने पुराने व्यवस्थापक उपयोगकर्ता को फिर से बनाना चाहेंगे)
  7. /config/निर्देशिका हटाएं और अपनी पुरानी LocalSettings.phpफ़ाइल को MW रूट पर वापस ले जाएं
  8. चरण # 1 पर बनाई गई फ़ाइल आयात करें

संपादित करें: यदि आप इस प्रक्रिया के साथ किसी भी समस्या का सामना करते हैं या स्पैम को शुद्ध करने के वैकल्पिक तरीकों के साथ प्रयोग करना चाहते हैं, तो आप डेटाबेस बैकअप (स्पैम संशोधन सहित) को खींच सकते हैं।


2

सिद्धांत रूप में, आप MediaWiki उदाहरण के लिए जो कुछ भी आप चाहते हैं उसे करने के लिए एक MediaWiki एक्सटेंशन लिख सकते हैं, जिसमें आपके द्वारा उल्लिखित चीजों को करना शामिल है।

उसमें से कुछ, और danlefree द्वारा सुझाए गए "nuke'n'pave" की कमी, आपको उपयोगकर्ता मर्ज और डिलीट एक्सटेंशन उपयोगी हो सकती है: आप इसका उपयोग कई स्पैंबोट खातों को एकल खाते में समेकित करने के लिए कर सकते हैं, जिनके संपादन तब और अधिक संबोधित किए जा सकते हैं सरलता।


2

इस स्थिति को संभालने का सबसे आसान तरीका है, एक्सटेंशन डिलीट इंस्टॉल करना । विशेष का उपयोग करें: आपके विकी पर AllPages पृष्ठ नामों की एक स्क्रिप्ट फ़ाइल प्राप्त करने के लिए जिसे आप हटाना चाहते हैं, और इसे विशेष: DeleteBatch में लोड करें।


1

यदि यह केवल एक सौ स्पैम पेज है तो आप बहुत बुरा नहीं कर रहे हैं। मुझे एक विकी को साफ करना था जिसमें हजारों स्पैम पेज थे। मुझे उपयोगकर्ता द्वारा कुछ अच्छे सुझाव दिए गए हैं: इस पृष्ठ पर हैल्ज़: https://www.mediawiki.org/wiki/User:Halz/Mass_despamming जिसमें विभिन्न उपकरणों की सीमाओं का टूटना शामिल है।

नीचे उसने एक उपयोगी एसक्यूएल क्वेरी प्रदान की है जो थोड़ी धीमी गति से चलती है लेकिन आपको उन पृष्ठों को खोजने में मदद करती है जो सबसे अधिक संभावना वाले स्पैम हैं, खासकर यदि आप समय अवधि की पहचान कर सकते हैं जब विकी को स्पैमर द्वारा ले लिया गया था। Halz में एक्सटेंशन का हैक किया गया संस्करण भी है: Nuke जो इस प्रकार के क्वेरी-सक्षम मापदंडों को आसान द्रव्यमान-विलोपन के लिए प्रस्तुत करता है। उन्होंने मुझे उपयोग करने के लिए एक प्रति दी, लेकिन मुझे नहीं लगता कि उन्होंने इसे प्रकाशित किया है।


1

मैं दृढ़ता से MediaWiki के एसक्यूएल के साथ गड़बड़ नहीं करने की सलाह देता हूं! मीडियाविकि एक जटिल जानवर है, जो विकिपीडिया के लिए बहुत अनुकूलित है। SQL में कुछ अजीब चीजें चल रही हैं और अगर आप बस पंक्तियों को हटाते हैं तो चीजें ढीली हो सकती हैं।

यदि आपके पास कुछ प्रोग्रामिंग कौशल हैं, तो एपीआई के माध्यम से जाएं। पाइविकबोट एक अच्छा विकल्प है।

अन्यथा, maintenance/निर्देशिका में उपकरण की जाँच करें । आप अपने स्वयं के टूल को आज़मा सकते हैं, उसी के साथ मदद करने के लिए (और मैंने वहां " टूडो के रूप में" एंटी-स्पैम टूल "जोड़ा है)।


0

मैंने एक इंस्टालेशन लिया और userतालिका में 47,000 से अधिक स्पैम प्रविष्टियाँ और लगभग 900,000 स्पैम पाया externallinks। मैंने Sequel Pro का उपयोग किया और प्रत्येक तालिका का दौरा किया और प्रामाणिक उपयोगकर्ताओं द्वारा बनाई गई प्रविष्टियों को नहीं हटाया। मैं में स्पैम मिलते ही externallinks, page, searchindex, user, watchlist। यह काफी समय-कुशल था; मेरे समय का अधिकांश भाग प्रश्नों को हटाने के लिए प्रतीक्षा कर रहा था। मैं भाग्यशाली था क्योंकि ज्यादातर प्रामाणिक संपादन चीजों के क्रम में जल्दी हुआ।


2
स्पैम लिंक को हटाने की कोशिश करने का कोई मतलब नहीं है externallinks, क्योंकि यह एक बेमानी मेटाडेटा तालिका है जो मूल रूप से केवल विशेष: लिंकोग्राफी जैसी चीजों के लिए उपयोग की जाती है; एक बार जब आप वास्तविक पृष्ठों को साफ कर लेते हैं, तो आप इसे rebuildall.phpपोंछने और पुनर्निर्माण के लिए चला सकते हैं । के लिए डिट्टो searchindex
इल्मरी करोनें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.