Pada dasarnya contoh mediawiki 'pribadi' saya adalah seaman babi celengan. Saya telah memperketatnya sekarang, tetapi saya memiliki sekitar seratus halaman baru dan revisi yang dihasilkan oleh ratusan pengguna yang dibuat secara acak.
2 bagian pertanyaan; Apakah ada cara untuk menghapus semua halaman yatim? Dapatkah saya mengatakan untuk membatalkan semua revisi TIDAK yang dilakukan oleh pengguna tertentu (saya)?
Jawaban:
Jika Anda tidak ingin menggunakan metode ekspor-dan-instal ulang yang disarankan oleh danlefree , Anda mungkin juga menemukan ekstensi Nuke bermanfaat. Setelah terinstal, kunjungi halaman khusus Special: Nuke sebagai administrator memberi Anda formulir seperti ini:
Ada juga beberapa skrip pemeliharaan MediaWiki bawaan yang dapat berguna, termasuk:
cleanupSpam.php , yang dapat digunakan untuk mengembalikan dan / atau menghapus semua revisi yang berisi tautan ke nama host tertentu,
deleteBatch.php , yang dapat digunakan untuk menghapus semua halaman yang tercantum dalam file, dan
rollbackEdits.php (yang saat ini tampaknya tidak memiliki dokumentasi on-wiki yang tepat), yang dapat digunakan untuk memutar kembali semua pengeditan pengguna yang ditentukan.
Pembersihan spam menggunakan akses basis data langsung
Dimungkinkan juga untuk melakukan apa yang Anda inginkan dengan secara langsung memanipulasi basis data. Detail di sana dapat sedikit berbeda tergantung pada situasi Anda, tetapi langkah-langkah dasarnya akan seperti ini:
Atur wiki Anda ke mode hanya baca . Anda tidak ingin seseorang mencoba mengedit wiki saat Anda mengacaukan basis data.
Buat cadangan untuk wiki Anda. (Ini sangat disarankan sebelum penghapusan massal yang tidak dapat dibatalkan.)
Hapus semua akun pengguna yang dibuat oleh spammer. Jika, seperti pada pertanyaan di atas, Anda adalah satu-satunya pengguna yang valid, Anda bisa melakukan:
Atau, jika tidak ada akun valid yang baru dibuat setelah spammer menemukan wiki, Anda dapat menemukan nomor ID pengguna tertinggi yang valid dan lakukan:
Atau Anda dapat menggunakan alat admin seperti phpMyAdmin untuk secara manual memilih akun yang valid dan menghapus sisanya.
Bersihkan data tambahan yang terkait dengan akun yang dihapus. Ini tidak sepenuhnya diperlukan, tetapi catatan yatim itu tidak digunakan dan hanya akan mengacaukan basis data Anda jika Anda tidak menghapusnya:
Hapus semua revisi yang tidak dilakukan oleh pengguna yang valid:
Ini adalah langkah besar; semuanya sebelum persiapan, semuanya setelah pembersihan. Dengan semua akun spam dihapus, Anda bisa melakukan:
Jika wiki Anda telah menonaktifkan penyuntingan anonim (yang saya sangat sarankan untuk wiki pribadi / uji), pertanyaan di atas harus cukup untuk menyingkirkan semua revisi spam. Namun, jika Anda mengaktifkan penyuntingan langsung, Anda harus menghapus spam anonim secara terpisah.
Jika Anda yakin bahwa semua suntingan pada wiki Anda adalah spam, satu-satunya suntingan yang dibuat oleh UID 0 yang mungkin perlu kami pertahankan adalah yang dibuat oleh MediaWiki sendiri (seperti halaman yang diimpor dari luar wiki). Dalam hal itu, sesuatu seperti kueri berikut harus berfungsi:
Ini akan menghapus revisi apa pun oleh UID 0 di mana nama pengguna terlihat (samar-samar) seperti alamat IPv4; yaitu dimulai dengan angka antara 1 dan 9.
Jika wiki Anda memiliki beberapa suntingan langsung yang sah, Anda mungkin harus sedikit lebih kreatif. Jika jumlah alamat IP yang digunakan oleh editor tidak terdaftar yang sah terbatas, Anda bisa menambahkan klausa seperti
AND rev_user_text NOT IN ('1.2.3.4', '5.6.7.8', '9.10.11.12')
pada kueri di atas untuk mengecualikan kontribusi oleh IP tersebut dari penghapusan. Anda juga dapat menambahkan kondisi seperti, misalnya,AND rev_user_text NOT LIKE '192.168.%'
untuk menyimpan semua pengeditan dari alamat IP yang diawali dengan awalan tertentu.Kueri di atas akan menyingkirkan revisi spam (meskipun kontennya akan tetap ada di
text
tabel), tetapi akan meninggalkanpage_latest
bidang halaman yang terpengaruh yang mengarah ke revisi yang tidak ada. Ini dapat menyebabkan kebingungan, jadi sebaiknya kita perbaiki.Pertama, kita perlu menghapus
page_latest
kolom untuk semua halaman:Selanjutnya, kita akan membangun kembali kolom, baik dengan menjalankan skrip pemeliharaan attachLatest.php (disarankan; ingatlah untuk menggunakan
--fix
parameter sehingga skrip benar-benar mengubah database) atau dengan kueri SQL manual:Terakhir, kami akan menghapus semua halaman yang tidak dapat ditemukan revisi yang valid (karena dibuat oleh pengirim spam, dan tidak pernah memiliki konten yang valid):
Untuk sentuhan terakhir, buat kembali tautan, indeks teks dan tabel perubahan terbaru dengan menjalankan skrip pemeliharaan rebuildall.php . Anda juga mungkin ingin menghapus konten revisi spam yang dihapus dari database, sehingga mereka tidak akan mengambil ruang yang tidak perlu di sana, dengan menjalankan skrip pemeliharaan purgeOldText.php .
Setelah semuanya selesai, periksa apakah semuanya terlihat baik, dan jika demikian, matikan mode read-only - semoga setelah menginstal beberapa fitur anti-spam untuk mencegah masalah terulang kembali.
Untuk wiki kecil, saya sangat merekomendasikan ekstensi QuestyCaptcha , yang memungkinkan Anda untuk mengkonfigurasi CAPTCHA berbasis teks kustom sederhana. Kuncinya adalah bahwa, dengan setiap wiki memiliki set pertanyaan sendiri, memprogram spambot untuk menjawabnya dengan benar akan menjadi banyak pekerjaan untuk mendapatkan sangat sedikit. Saya menginstalnya di wiki saya sendiri setelah terkena XRumer beberapa kali, dan sejak itu tidak melihat spam.
Ps. Saya telah menggunakan instruksi ini untuk mengeluarkan sekitar 35.000 revisi spam yang dibuat oleh banyak pengguna dari wiki kecil . Semuanya baik-baik saja. Dalam kasus khusus ini, wiki (untungnya!) Tidak mengizinkan pengeditan anonim, dan hampir semua pengguna yang sah dibuat sebelum spammer menemukan wiki, jadi saya bisa dengan mudah menghapus semua akun spam terlebih dahulu, dan kemudian semua revisi mereka telah menciptakan. (Saya tidak sengaja menghapus satu akun yang sah pada awalnya, jadi saya harus memulihkan dari cadangan dan mengulang proses lebih hati-hati.) Saya telah memperbarui instruksi di atas untuk lebih mencerminkan apa yang akhirnya saya lakukan, dan menjadi sedikit lebih generik .
sumber
rebuildall.php
tidak dalam pemeliharaan: O Jika tidak, terima kasihCara termudah untuk menangani situasi ini (jika Anda tidak keberatan memiliki nuke'n'pave) adalah dengan mengekspor semua halaman wiki yang dibuat atau diedit oleh nama pengguna Anda, instal ulang wiki, dan impor file ekspor yang Anda buat.
"Instal ulang" dalam konteks ini berarti:
LocalSettings.php
file Anda ke lokasi yang aman/config/
direktori/config/
direktori dan pindahkanLocalSettings.php
file lama Anda kembali ke root MWSunting: Anda mungkin ingin menarik cadangan basis data (termasuk revisi spam) jika Anda menghadapi masalah dengan proses ini atau ingin bereksperimen dengan cara-cara alternatif untuk membersihkan spam.
sumber
Secara teori, Anda bisa menulis ekstensi MediaWiki untuk melakukan apa pun yang Anda suka ke instance MediaWiki, termasuk untuk melakukan hal-hal yang Anda sebutkan.
Singkatnya, dan kependekan dari "nuke'n'pave" yang disarankan oleh danlefree, Anda mungkin menemukan ekstensi Penggabungan dan Hapus Pengguna berguna: Anda dapat menggunakannya untuk mengkonsolidasikan beberapa akun spambot ke dalam satu akun yang pengeditannya dapat diatasi lebih lanjut dengan mudah.
sumber
Cara termudah untuk menangani situasi ini adalah menginstal ekstensi DeleteBatch . Gunakan Special: AllPages di wiki Anda untuk mendapatkan file skrip dari nama halaman yang ingin Anda hapus, dan memuatnya ke Special: DeleteBatch.
sumber
Jika hanya seratus halaman spam, Anda tidak melakukannya dengan buruk. Saya harus membersihkan wiki yang memiliki ribuan halaman spam. Saya menemukan beberapa tips bagus oleh Pengguna: Halz di halaman ini: https://www.mediawiki.org/wiki/User:Halz/Mass_despamming termasuk rincian batasan berbagai alat.
Di bagian bawah dia menyediakan kueri SQL berguna yang berjalan agak lambat tetapi membantu Anda menemukan halaman yang kemungkinan besar merupakan spam, terutama jika Anda dapat mengidentifikasi periode waktu ketika wiki diambil alih oleh spammer. Halz juga memiliki versi Ekstensi yang diretas: Nuke yang menyajikan parameter-parameter yang dapat ditanyakan ini untuk penghapusan massal secara mudah. Dia memberi saya salinan untuk digunakan, tetapi saya tidak berpikir dia menerbitkannya.
sumber
Saya sangat menyarankan untuk tidak mengacaukan SQL MediaWiki! MediaWiki adalah binatang yang kompleks, sangat dioptimalkan untuk Wikipedia. Ada beberapa hal aneh yang terjadi di SQL dan jika Anda cukup HAPUS baris hal mungkin kehilangan konsistensi.
Jika Anda memiliki beberapa keterampilan pemrograman, buka API. Pywikibot adalah pilihan yang bagus.
Jika tidak, periksa alat di
maintenance/
direktori. Anda dapat mencoba alat saya sendiri, mewsh untuk membantu dengan itu (dan saya baru saja menambahkan "alat anti-spam" sebagai todo di sana).sumber
Saya mengambil alih instalasi dan menemukan lebih dari 47.000 entri spam di
user
tabel dan hampir 900.000 spamexternallinks
. Saya menggunakan Sequel Pro dan mengunjungi setiap tabel dan menghapus entri yang tidak dibuat oleh pengguna asli. Saya menemukan spamexternallinks
,page
,searchindex
,user
,watchlist
. Itu cukup efisien waktu; sebagian besar waktu saya menunggu untuk menghapus kueri untuk dijalankan. Saya beruntung karena sebagian besar pengeditan otentik terjadi pada awal urutan.sumber
externallinks
, karena itu adalah tabel metadata redundan yang pada dasarnya hanya digunakan untuk hal-hal seperti Khusus: LinkSearch; setelah Anda membersihkan halaman yang sebenarnya, Anda bisa larirebuildall.php
untuk menghapus dan membangunnya kembali. Ditto untuksearchindex
.