Deteksi otomatis mesin forum. Deteksi otomatis mesin forum File indeks papan php

Mari kita mulai dengan kode skrip utama:

#!/usr/bin/perl

# script which-forum.pl
# (c) 2010 Alexandr A Alexeev, http://situs web/

gunakan ketat;

# baris yang dikomentari - untuk ketelitian
# jika tugasnya adalah mengumpulkan statistik mesin, biarkan apa adanya
# jika Anda membuat daftar forum - batalkan komentar

$data saya;
$data.= $_sementara(<> ) ;

# periksa berapa banyak yang Didukung oleh phpBB tanpa tautan footer
cetak "phpbb \N"
jika ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?phpbb\.com\/?"[^>]*>phpBB/i atau
# $data =~ /viewforum\.php\?[^""]*f=\d+/i atau
$data =~ /phpBB\-SEO/i atau
$data =~ /) ;
cetak "ipb \N"
jika ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?invision(?:board|power)\.com\/?[^"]*"[^>]*> [^<]*IP\.Board/i atau
$data =~ /]+href="[^"]*http:\/\/(?:www\.)?invisionboard\.com\/?"[^>]*>Papan Daya Invision/i atau
$data =~ /

/Saya atau
$data =~ /index\.php\?[^""]*showforum=\d+/i) ;
cetak "vbuletin \N"
jika ($data =~ /Didukung oleh:?[^<]+vBulletin[^<]+(?:Version)?/i atau
$data =~ /) ;
cetak "smf \N"
jika ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?simplemachines\.org\/?"[^>]*>Didukung oleh SMF/i atau
$data =~ /index\.php\?[^""]*papan=\d+\.0/i) ;
cetak "punbb \N"
jika ($data =~ /]+href="[^"]*http:\/\/(?:(?:www\.)?punbb\.org|punbb\.informer\.com)\/?"[^>]*> PunBB/i) ; #atau
# $data =~ /viewforum\.php\?[^""]*id=\d+/i);
cetak "fluxbb \N"
# if($data =~ /viewtopic\.php\?id=\d+/i atau
jika ($data =~ /]+href="http:\/\/(?:www\.)fluxbb\.org\/?"[^>]*>FluxBB/i) ;
cetak "exbb \N"
jika ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?exbb\.org\/?"[^>]*>ExBB/i) ; # atau
# $data =~ /forums\.php\?[^""]*forum=\d+/i);
cetak "yabb \N"
jika ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?yabbforum\.com\/?"[^>]*>YaBB/i atau
$data =~ /YaBB\.pl\?[^""]*num=\d+/i ) ;
cetak "dleforum \N"
jika ($data =~ /\(Didukung oleh Forum DLE\)<\/title>/Saya atau
$data =~ /]+href="[^"]+(?:http:\/\/(?:www\.)?dle\-files\.ru|act=copyright)[^"]*">Forum DLE<\/a>/Saya) ;
cetak "papan ikon \N"
jika ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?ikonboard\.com\/?[^"]*"[^>]*>Ikonboard/i atau
$data =~ /\N"
jika ($data =~ /\N"
# if($data =~ /forums\.php\?fid=\d+/i atau
# $data =~ /topic\.php\?fid=\d+/i atau
jika ($data =~ /]+href="http:\/\/(?:www\.)?flashbb\.net\/?"[^>]*>FlashBB/i) ;
cetak "stokesit \N"
# if($data =~ /forum\.php\?f=\d+/i atau
jika ($data =~ /]+href="http:\/\/(?:www\.)?stokesit\.com\.au\/?"[^>]*>[^\/]*Stokes IT/i) ;
cetak "mimbar \N"
# if($data =~ /topic\.php\?t=\d+/i atau
jika ($data =~ /]+href=[""]?http:\/\/(?:www\.)?sopebox\.com\/?[""]?[^>]*>Podium/i) ;
cetak "usebb \N"
# if($data =~ /forum\.php\?id=\d+/i atau
jika ($data =~ /]+href="http:\/\/(?:www\.)?usebb\.net\/?"[^>]*>UseBB/i) ;
cetak "wrforum \N"
# if($data =~ /index\.php\?fid=\d+/i atau
jika ($data =~ /]+href="http:\/\/(?:www\.)?wr\-script\.ru\/?"[^>]*>WR\-Forum/i) ;
cetak "yetanotherforumnet \N"
if ($data =~ /Yet Another Forum\.net/i or
$data =~ /default\.aspx\?g=posting&t=\d+/i) ;

Skrip ini dan skrip lain yang disebutkan dalam postingan dapat ditemukan di arsip ini.

Naskah which-forum.pl memeriksa kode halaman html untuk keberadaan tanda tangan mesin forum di dalamnya. Kami menggunakan teknik serupa saat mendefinisikan WordPress dan Joomla, tetapi ada beberapa perbedaan. Pertama, skrip itu sendiri tidak memuat kode halaman, tetapi membacanya dari stdin atau file yang diteruskan sebagai argumen. Ini memungkinkan kita mengunduh halaman satu kali, misalnya menggunakan wget, lalu menjalankannya melalui beberapa parser, jika kita memiliki lebih dari satu. Kedua, dalam skrip ini, keberadaan tanda tangan adalah 100% tanda mesin. Terakhir kali, kehadiran signature hanya memberi bobot pada mesin yang sesuai dan “memenangkan” mesin dengan bobot tertinggi. Saya memutuskan bahwa dalam kasus ini, pendekatan seperti itu hanya akan memperumit kode yang tidak perlu.

Untuk menguji skrip, saya melakukan sedikit riset. Saya menyusun daftar beberapa ribu forum dan menjalankannya masing-masing melalui skrip saya, dengan demikian menentukan persentase aktivasi program dan popularitas berbagai mesin.

Untuk mendapatkan daftar forum, saya menggunakan parser Google saya. mesin pencari kirim permintaan suka

situs:forum.*.ru
situs:talk.*.ru
situs:papan.*.ru
situs:smf.*.ru
situs: phpbb.*.ru
....

dan seterusnya. Kode lengkap generator kueri yang akan Anda temukan di file gen-forumsearch-urls.pl. Selain zona .ru, .su .ua .kz dan .by juga digunakan. Sulit untuk melakukan studi seperti itu terakhir kali, karena situs WordPress dan Joomla tidak memiliki tanda tangan seperti itu di URL. Katalog seperti cmsmagazine.ru/catalogue/ tidak memberikan ukuran sampel yang memadai. Apa itu 600 situs di Drupal?

Saya harus mengakui bahwa hasil percobaan mengecewakan saya. Dari 12.590 situs yang diteliti, hanya 7.083 mesin yang berhasil diidentifikasi, yaitu hanya dalam 56% kasus. Mungkin saya tidak memperhitungkan beberapa mesin? Apakah Bitrix berdiri di separuh forum? Atau haruskah saya menghabiskan lebih banyak waktu untuk mencari tanda tangan? Secara umum, diperlukan lebih banyak penelitian di sini.

Di antara 56% mesin yang berhasil diidentifikasi, IPB (31%), phpBB (26,6%) dan vBulletin (26,5%) adalah yang paling populer, seperti yang diharapkan.

Mereka diikuti oleh SMF (5,8%) dan DLEForum (5,3%). PunBB favorit saya hanya ada di posisi ke-6 (1,64%). Saya tidak akan menyarankan untuk sangat mempercayai angka-angka ini (mereka mengatakan bahwa setiap forum ketiga di Runet bekerja di IPB), tetapi kesimpulan tertentu tentu saja dapat ditarik.

Misalnya, jika Anda bermaksud membuat situs di mesin forum dan berencana untuk memodifikasi forum, katakanlah, bayar pengguna $0,01 untuk setiap pesan dengan penarikan dana otomatis seminggu sekali, maka Anda harus memilih salah satu dari tiga mesin paling populer . Semakin populer forumnya, semakin besar kemungkinan untuk menemukan programmer yang berpengalaman di dalamnya.

Jika tidak ada perubahan signifikan yang diharapkan pada mesin, maka masuk akal untuk memilih mesin yang kurang populer, seperti SMF atau punBB. Dengan melakukan ini, Anda akan mengurangi jumlah serangan peretas di forum Anda dan jumlah spam yang dikirim secara otomatis ke sana.

Skrip untuk mencari/mendefinisikan forum juga bisa menemukan lebih dari satu penggunaan praktis. Hal pertama yang terlintas di benak saya secara pribadi adalah mengurutkan forum yang diidentifikasi oleh TCI dan menempatkan posting dengan tautan ke salah satu situs mereka di seratus pertama. Namun, seratus tautan dofollow forum sama sekali tidak memengaruhi TIC (2 pembaruan telah berlalu), jadi lebih baik jangan buang waktu di sini kecuali Anda tertarik dengan transisi.

Jelas bahwa penggunaan skrip yang disebutkan jauh dari satu-satunya. Saya pikir Anda dapat dengan mudah mengetahui bagaimana lagi Anda dapat menggunakannya.

Modul tertentu harus berkomunikasi dengan perangkat keras untuk memenuhi tugasnya. Modul tersebut dilengkapi dengan lapisan driver tambahan. Setiap driver kemudian membutuhkan file papan untuk berbicara dengan perangkat keras yang sebenarnya.
File papan perlu disediakan oleh pengguna karena implementasinya tidak hanya bergantung pada sistem dasar yang digunakan (HAL), tetapi juga konfigurasi perangkat keras aktual (pengkabelan).

Templat

Setiap driver menyediakan template dari file boardnya. Menyalin file ini ke direktori proyek Anda dan mengimplementasikan rutinitas adalah satu-satunya hal yang harus dilakukan. Perhatikan bahwa Anda harus menghapus bagian _template dari nama file.

Papan yang Didukung

Beberapa papan memiliki perangkat keras yang telah ditentukan sebelumnya. Di mana mereka adalah papan umum, kami menyediakan makefile ( /boards/base/xxx/board.mk) yang dapat Anda sertakan ke dalam makefile proyek Anda sendiri. Ini kemudian akan secara otomatis menyertakan semua driver perangkat keras standar dan file papan. File papan tambahan yang telah ditentukan sebelumnya juga dapat ditemukan di /papan/tambahan.


File index.php adalah file kunci forum dan digunakan di hampir semua tindakan. Karyanya terdiri dari langkah-langkah berikut:
1) Koneksi file konfigurasi database.php dan iboard.php.
2) Membangun koneksi ke DBMS dan mendapatkan akses ke database.
3) Membaca informasi dari cookie pengguna atau dari parameter yang diteruskan ke skrip, mengekstraksi informasi tentang pengguna ini dari database dan memverifikasi keasliannya.
4) Jika verifikasi tidak berhasil (atau kurangnya informasi tentang pengguna), data untuk profil pengguna Tamu diambil sebagai data pengguna ( nomor pendaftaran - 1).
5) Menghubungkan file gaya dan bahasa antarmuka, ditetapkan pengguna di pengaturan profil Anda.
6) Jika parameter t ada dalam parameter panggilan skrip, maka data tentang topik dan forum yang ditentukan diambil dari database, di mana topik ini terletak.
7)Jika parameter f hadir dalam parameter panggilan skrip, maka data tentang forum diambil dari database.
8)Jika parameter t atau f ada, pemeriksaan dilakukan untuk melihat apakah pengguna memiliki hak yang memadai untuk melihat forum terkait.
9) Modul yang ditentukan dalam parameter m sedang dihubungkan. Jika parameter m tidak ada, maka jenis modul ditentukan tergantung pada jenis partisi yang digunakan aksi ini. Jika jenis partisi tidak ditentukan, maka pemeriksaan dilakukan untuk menentukan apa yang harus ditampilkan halaman rumah. Jika salah satu bagian dipilih sebagai halaman utama, maka modul yang bertanggung jawab untuk menampilkan bagian dari jenis yang sesuai akan dihubungkan, jika tidak - modul main.php. File gaya juga disertakan, yang memiliki nama yang sama dengan plugin, tetapi terletak di subdirektori dari direktori gaya yang sesuai dengan gaya yang dipilih dalam pengaturan profil pengguna.
10) Parameter a dicentang. Jika tidak diatur secara eksplisit, maka dinyatakan sama dengan view. Selanjutnya, jika bagian tertentu ditentukan dan parameter a sama dengan view, maka diganti dengan<имя_раздела>_melihat.
11) Bergantung pada tindakan yang diminta (ditentukan dalam parameter panggilan skrip a), file tmplate1.php (jika tindakan tidak mengandung awalan do_) atau file tmplate2.php (jika tidak) terhubung. Selanjutnya, semua tindakan yang tercantum dalam templat terkait dipanggil, dan alih-alih tindakan main_action, tindakan yang ditentukan dalam parameter a akan benar-benar dipanggil.
12) Log forum berisi informasi tentang tindakan yang dilakukan, pengenal dan alamat IP pengguna yang melakukan tindakan tersebut.
Selain itu pada file index.php terdapat fungsi untuk penanganan error fatal, yang didesain untuk menampilkan pesan error, serta memperbaiki teks error pada file error.log.

Memuat...
Atas