Doğrudan veritabanını manipüle ederek istediğinizi yapmak da mümkündür. Durumunuza bağlı olarak ayrıntılar biraz değişebilir, ancak temel adımlar şöyle bir şey olur:
Wiki'nizi salt okunur moda ayarlayın . Sen do not birisi veritabanı ile çalışma yaparken ediyoruz Messing wiki düzenleme denemek istiyorum.
Wiki'nizin bir yedeğini alın. (Geri dönüşü olmayan toplu silme işlemlerinden önce bu önerilir.)
Spam gönderenler tarafından oluşturulan tüm kullanıcı hesaplarını silin. Yukarıdaki soruda olduğu gibi, tek geçerli kullanıcı sizseniz, şunları yapabilirsiniz:
DELETE FROM user WHERE user_id != YOUR_USER_ID;
Alternatif olarak, spam gönderenler wiki'yi keşfettikten sonra yeni bir geçerli hesap oluşturulmamışsa, en yüksek geçerli kullanıcı kimlik numarasını bulabilir ve şunları yapabilirsiniz:
DELETE FROM user WHERE user_id > LAST_VALID_USER_ID;
Ya da geçerli hesapları seçmek ve geri kalanını silmek için phpMyAdmin gibi bir yönetici aracı kullanabilirsiniz.
Silinen hesaplarla ilişkili fazladan verileri temizleyin. Bu kesinlikle gerekli değildir, ancak bu yetim olmayan kayıtların bir faydası yoktur ve bunları silmediğinizde veritabanınızı dağıtacaktır:
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);
Geçerli bir kullanıcı tarafından yapılmayan düzeltmeleri silin:
Bu büyük adım; hazırlıktan önceki her şey, temizlendikten sonraki her şey. Tüm spam hesapları silindiğinde şunları yapabilirsiniz:
DELETE FROM revision WHERE rev_user > 0 AND rev_user NOT IN (SELECT user_id FROM user);
Wiki'niz anonim düzenlemeyi devre dışı bıraktıysa (özel / test wiki'leri için şiddetle tavsiye ederim), yukarıdaki sorgu tüm spam düzeltmelerinden kurtulmak için yeterli olmalıdır. Bununla birlikte, anon düzenlemesini etkinleştirdiyseniz, anonim spam'ı ayrı olarak tıklatmanız gerekir .
Wiki'nizdeki tüm anon düzenlemelerinin spam olduğundan eminseniz, UID 0 tarafından korunması gereken tek düzenlemeler MediaWiki'nin kendisi tarafından yapılanlardır (wiki dışından içe aktarılan sayfalar gibi). Bu durumda, aşağıdaki sorgu gibi bir şey çalışmalıdır:
DELETE FROM revision WHERE rev_user = 0 AND rev_user_text BETWEEN '1' AND '999';
Bu, kullanıcı adının bir IPv4 adresi gibi göründüğü (belirsiz) UID 0 tarafından yapılan tüm düzeltmeleri silecektir; yani 1 ile 9 arasında bir rakamla başlar.
Wiki'nizde bazı gerçek yasal anon düzenlemeleri varsa, biraz daha yaratıcı olmanız gerekebilir. Yasal kayıt dışı editörler tarafından kullanılan IP adreslerinin sayısı sınırlıysa, AND rev_user_text NOT IN ('1.2.3.4', '5.6.7.8', '9.10.11.12')
bu IP'lerin katkılarını silme işleminden hariç tutmak için yukarıdaki sorguya benzer bir cümle ekleyebilirsiniz . AND rev_user_text NOT LIKE '192.168.%'
Belirli bir önekle başlayan IP adreslerindeki tüm düzenlemeleri kaydetmek için , örneğin, koşullar da ekleyebilirsiniz .
Yukarıdaki sorgular spam düzeltmelerinden kurtulacak (içeriği hala text
tabloda kalacak olsa da ), page_latest
etkilenen sayfaların alanını var olmayan bir düzeltmeye işaret edecek şekilde bırakacaktır . Bu karışıklığa neden olabilir, bu yüzden düzeltsek iyi olur.
İlk olarak, page_latest
tüm sayfalar için sütunu silmemiz gerekir :
UPDATE page SET page_latest = 0;
Daha sonra, attachLatest.php bakım komut dosyasını çalıştırarak (önerilen; --fix
komut dosyasının veritabanını gerçekten değiştirmesi için parametreyi kullanmayı unutmayın ) veya manuel bir SQL sorgusuyla sütunu yeniden oluşturacağız :
UPDATE page SET page_latest =
(SELECT MAX(rev_id) FROM revision WHERE rev_page = page_id);
Son olarak, geçerli bir düzeltme bulunamayan tüm sayfaları sileceğiz (spam gönderenler tarafından oluşturuldukları ve hiçbir zaman geçerli içeriğe sahip olmadıkları için):
DELETE FROM page WHERE page_latest = 0;
Son dokunuş için, rebuildall.php bakım komut dosyasını çalıştırarak bağlantıları, metin dizinini ve son değişiklik tablolarını yeniden oluşturun . PurgeOldText.php bakım komut dosyasını çalıştırarak silinen spam düzeltmelerinin içeriğini veritabanından kaldırmak isteyebilirsiniz, böylece burada gereksiz yer kaplamazlar .
Her şey bittiğinde, her şeyin iyi göründüğünü kontrol edin ve öyleyse, salt okunur modu kapatın - umarım sorunun tekrarlanmasını önlemek için bazı anti-spam özellikleri yükledikten sonra .
Küçük wikiler için, basit bir özel metin tabanlı CAPTCHA yapılandırmanıza izin veren QuestyCaptcha uzantısını şiddetle tavsiye ederim . İşin püf noktası, her wiki'nin kendi soru setiyle, bir spambotu doğru cevaplamak için programlamak çok az kazanç için çok iş olacaktır. XRumer tarafından birkaç kez vurulduktan sonra kendi wiki'ime yükledim ve o zamandan beri spam görmedim.