| KivanC | 16 Ağustos 2026 00:31 | Web-Master Botu (2026) Test Edilmistir. 🤖 Why-Master | Gelişmiş mIRC Webmaster Asistan Botu
Herkese selamlar! mIRC sunucunuz ve [#Web] kanalınız için sıfırdan geliştirilen, webmasterlar ve site yöneticileri düşünülerek tasarlanmış **Why-Master** botu yayında!
Botumuz; alan adı sorgularından altyapı analizine, güvenlik başlıklarından hızlı taramalara kadar birçok profesyonel aracı IRC ortamına hızlıca getirir. ✨ Öne Çıkan Özellikler & Komutlar
* !domain <site.com> — Kapsamlı WHOIS bilgileri ve alan adının bitiş tarihine kalan gün sayacı.
* !incele <site.com> — HTTP durum kodunu, sunucu yazılımını ve ana sayfa başlığını anında raporlar.
* !tech <site.com> — Altyapı ve teknoloji analizi yapar (Örn: WordPress tespiti vb.).
* !sec <site.com> — Güvenlik başlıklarını denetler (HSTS, CSP, X-Frame-Options vb.).
* !sub <site.com> — Hızlı alt alan adı (subdomain) taraması gerçekleştirir.
* !dns <site.com> — Alan adının IP adresini (A kaydını) çözer.
* !ptr <ip-adresi> — Ters DNS (PTR) sorgulaması yapar.
* !ssl <site.com> — SSL/TLS port 443 bağlantı ve el sıkışma testi gerçekleştirir.
* !ping <host> — TCP bağlantı ve gecikme testi yapar.
* !uptime — Botun kesintisiz çalışma süresini gösterir. 💡 Nasıl Kullanılır?
Sunucumuzdaki **#Web** kanalına giriş yaptığınızda, **Why-Master** botu sizi özel mesaj ile otomatik olarak karşılar ve rehber gönderir. Tüm komut listesini ve detayları görmek için kanal içerisinde **!Webmaster** yazmanız yeterlidir! HTML-Kodu:
; ============================================================
; Why-Master — mIRC Scripting Language (mSL) Webmaster Botu
; (Güncellenmiş Sürüm: Özelden Karşılama ve Bot Reklamı)
; ============================================================
on 1:LOAD:{
hmake cache 200
hmake blacklist 100
hmake ctx 100
hmake buf 100
hmake wdata 50
set %ww.starttime $ctime
set %ww.admins SeninNickin
set %ww.channels #Web
set %ww.nickservpass deneme123
set %ww.operpass deneme123
set %ww.server deneme.com
set %ww.cachettl 300
set %ww.cachehit 0
set %ww.cachemiss 0
echo -a Why-Master yüklendi. Bağlanmak için: /server %ww.server
}
on 1:UNLOAD:{
hfree cache | hfree blacklist | hfree ctx | hfree buf | hfree wdata
}
on 1:CONNECT:{
if ($server == %ww.server) {
if ($me != Why-Master) { /nick Why-Master }
.timer 1 2 msg nickserv identify %ww.nickservpass
.timer 1 3 oper Why-Master %ww.operpass
.timer 1 5 join %ww.channels
}
}
; ---------------- #Web Kanalı Karşılama ve Özel Mesaj (Reklam) ----------------
on *:JOIN:#Web:{
if ($nick == $me) {
msg #Web Merhaba #Web kanalı! Why-Master aktif, tüm webmaster araçları hizmetinizde. Komut listesi için kanalda **!Webmaster** yazabilirsiniz.
}
else {
; Kanala genel hoş geldin mesajı
msg #Web Hoş geldin $nick ! #Web kanalımıza sefalar getirdin. Webmaster araçları için kanalda **!Webmaster** yazabilirsin.
; Kullanıcının özelene reklam ve tanıtım mesajı gönderme (.timer ile kısa bir gecikme eklenerek bot korumalarına takılması önlenir)
.timer 1 2 ww_ozel_reklam $nick
}
}
; ---------------- Özel Tanıtım ve Reklam Metni ----------------
alias ww_ozel_reklam {
var %n = $1
msg %n ========================================================
msg %n SELAM %n ! BİR WEBMASTER ASİSTANI İLE TANIŞMAYA HAZIR MISIN?
msg %n ========================================================
msg %n #Web kanalına giriş yaptığın için **Why-Master** botu
msg %n otomatik olarak seninle bağlantı kurdu.
msg %n
msg %n Sunucumuzdaki en gelişmiş web analiz ve güvenlik
msg %n botu olan Why-Master ile şu işlemleri yapabilirsin:
msg %n • Alan adı WHOIS ve Kalan Gün Takibi (!domain)
msg %n • Sunucu Altyapı & Teknoloji Analizi (!tech / !incele)
msg %n • Güvenlik Başlıkları & HSTS/CSP Denetimi (!sec)
msg %n • Hızlı Subdomain ve DNS Tarama (!sub / !dns)
msg %n
msg %n Tüm komut listesini görmek veya hemen kullanmaya
msg %n başlamak için #Web kanalında **!Webmaster** yazman yeterli!
msg %n ========================================================
}
; ---------------- Komut dispatcher ----------------
on *:TEXT:*:#Web:{
var %txt = $1
if (%txt == !Webmaster) || (%txt == !webmaster) {
ww_ozel_yardim $nick
return
}
if ($left(%txt,1) != !) { return }
var %cmd = $mid(%txt,2,$len(%txt))
var %arg = $2-
if (%cmd == yardim) || (%cmd == help) { ww_yardim $chan $nick }
elseif (%cmd == domain) { ww_domain $chan $nick %arg }
elseif (%cmd == incele) { ww_incele $chan $nick %arg }
elseif (%cmd == headers) { ww_headers $chan $nick %arg }
elseif (%cmd == tech) { ww_tech $chan $nick %arg }
elseif (%cmd == sec) { ww_sec $chan $nick %arg }
elseif (%cmd == mx) { ww_mx $chan $nick %arg }
elseif (%cmd == sub) { ww_sub $chan $nick %arg }
elseif (%cmd == dns) { ww_dns $chan $nick %arg }
elseif (%cmd == ptr) { ww_ptr $chan $nick %arg }
elseif (%cmd == ssl) { ww_ssl $chan $nick %arg }
elseif (%cmd == whois) { ww_whois $chan $nick %arg }
elseif (%cmd == ping) { ww_ping $chan $nick %arg }
elseif (%cmd == blacklist) { ww_blacklist $chan $nick %arg }
elseif (%cmd == cache) { ww_cache $chan $nick }
elseif (%cmd == uptime) { ww_uptime $chan $nick }
}
; ---------------- Özelden Komut Listesi Gönderme ----------------
alias ww_ozel_yardim {
var %n = $1
msg %n ========================================================
msg %n WHY-MASTER WEBMASTER KOMUT LISTESI
msg %n ========================================================
msg %n !domain <site.com> - WHOIS bilgileri ve kalan gün sayacı
msg %n !incele <site.com> - HTTP durum kodu, sunucu ve sayfa başlığı
msg %n !tech <site.com> - Altyapı ve teknoloji analizi (WordPress vb.)
msg %n !sec <site.com> - Güvenlik başlıkları kontrolü (HSTS, CSP vb.)
msg %n !headers <site.com> - Ham HTTP response header'ları
msg %n !sub <site.com> - Hızlı alt alan adı (subdomain) taraması
msg %n !dns <site.com> - IP adresini çözümleme (A kaydı)
msg %n !ptr <ip-adresi> - Ters DNS (PTR) sorgusu
msg %n !ssl <site.com> - SSL/TLS port 443 bağlantı testi
msg %n !ping <host> - TCP bağlantı gecikme testi
msg %n !whois <irc-nick> - IRC kullanıcısı hakkında bilgi
msg %n !uptime - Botun çalışma süresi
msg %n ========================================================
}
; ---------------- Yardımcı alias'lar ----------------
alias ww_clean {
var %d = $remove($1,http://,https://)
return $gettok(%d,1,47)
}
alias ww_isadmin {
return $istok(%ww.admins,$1,32)
}
alias ww_cache_get {
var %val = $hget(cache,$1)
if (%val == $null) { inc %ww.cachemiss | return $null }
var %ts = $gettok(%val,1,1)
if ($calc($ctime - %ts) > %ww.cachettl) { hdel cache $1 | inc %ww.cachemiss | return $null }
inc %ww.cachehit
return $gettok(%val,2-,1)
}
alias ww_cache_set {
hadd cache $1 $ctime $chr(1) $2-
}
alias ww_sockerror {
var %sockname = $2
var %ctxv = $hget(ctx,%sockname)
if (%ctxv != $null) {
var %chan = $gettok(%ctxv,1,1), %nick = $gettok(%ctxv,2,1)
msg %chan %nick $+ : bağlantı hatası ( $+ $sock(%sockname).wserr $+ )
hdel ctx %sockname
}
hdel buf %sockname
sockclose %sockname
}
alias ww_yardim {
msg $1 $2 $+ : Komut listesi özel mesaj olarak gönderildi. Lütfen özel pencereni kontrol et!
ww_ozel_yardim $2
}
alias ww_uptime {
msg $1 [UPTIME] Why-Master $duration($calc($ctime - %ww.starttime)) süredir çalışıyor.
}
alias ww_cache {
var %n = $hget(cache,0).item
var %total = $calc(%ww.cachehit + %ww.cachemiss)
var %oran = $iif(%total > 0,$calc(%ww.cachehit * 100 / %total),0)
msg $1 [CACHE] kayıt= %n hit= %ww.cachehit miss= %ww.cachemiss oran= %oran $+ % ttl= %ww.cachettl sn
}
alias ww_blacklist {
var %chan = $1, %nick = $2, %sub = $3, %domain = $ww_clean($4)
if (%sub == $null) { msg %chan %nick $+ : Kullanım: !blacklist ekle^sil^listele <alan-adi> | return }
if (%sub == listele) {
var %n = $hget(blacklist,0).item
if (%n == 0) { msg %chan Kara liste boş. | return }
var %list = $null, %i = 1
while (%i <= %n) { %list = %list $hget(blacklist,%i).item | inc %i }
msg %chan [BLACKLIST] %list
return
}
if ($ww_isadmin(%nick) == $false) { msg %chan %nick $+ : Bu komutu kullanma yetkin yok. | return }
if (%sub == ekle) { hadd blacklist %domain 1 | msg %chan %domain kara listeye eklendi. | return }
if (%sub == sil) { hdel blacklist %domain | msg %chan %domain kara listeden çıkarıldı. | return }
}
alias ww_domain {
var %chan = $1, %nick = $2, %domain = $ww_clean($3)
if (%domain == $null) { msg %chan %nick $+ : Kullanım: !domain example.com | return }
var %cached = $ww_cache_get(domain_ $+ %domain)
if (%cached != $null) { ww_print_domain %chan %domain %cached $true | return }
var %sock = who_ $+ $ticks
hadd ctx %sock %chan $chr(1) %nick $chr(1) %domain $chr(1) 1
sockopen %sock whois.iana.org 43
}
on 1:sockopen:who_*:{
if ($sockerr) { ww_sockerror who $sockname | return }
var %ctxv = $hget(ctx,$sockname)
var %domain = $gettok(%ctxv,3,1), %stage = $gettok(%ctxv,4,1)
if (%stage == 1) { sockwrite -n $sockname $gettok(%domain,-1,46) }
else { sockwrite -n $sockname %domain }
}
on 1:sockread:who_*:{
if ($sockerr) { return }
var %line
sockread %line
if ($sockbr == 0) { return }
hadd buf $sockname $hget(buf,$sockname) $+ %line $+ $crlf
}
on 1:sockclose:who_*:{
var %ctxv = $hget(ctx,$sockname)
if (%ctxv == $null) { return }
var %chan = $gettok(%ctxv,1,1), %nick = $gettok(%ctxv,2,1), %domain = $gettok(%ctxv,3,1), %stage = $gettok(%ctxv,4,1)
var %data = $hget(buf,$sockname)
hdel buf $sockname | hdel ctx $sockname
if (%stage == 1) {
var %server = $iif($regex(ww,%data,/whois:\s*(\S+)/i),$regml(ww,1),$null)
if (%server == $null) { %server = whois. $+ $gettok(%domain,-1,46) }
var %sock2 = who2_ $+ $ticks
hadd ctx %sock2 %chan $chr(1) %nick $chr(1) %domain $chr(1) 2
sockopen %sock2 %server 43
}
else { ww_parse_whois %chan %domain %data }
}
on 1:sockopen:who2_*:{ ww_who_open $sockname }
on 1:sockread:who2_*:{ ww_who_read $sockname }
on 1:sockclose:who2_*:{ ww_who_close $sockname }
alias ww_who_open {
if ($sockerr) { ww_sockerror who $1 | return }
var %ctxv = $hget(ctx,$1)
sockwrite -n $1 $gettok(%ctxv,3,1)
}
alias ww_who_read {
var %line
sockread %line
if ($sockbr == 0) { return }
hadd buf $1 $hget(buf,$1) $+ %line $+ $crlf
}
alias ww_who_close {
var %ctxv = $hget(ctx,$1)
if (%ctxv == $null) { return }
var %chan = $gettok(%ctxv,1,1), %domain = $gettok(%ctxv,3,1)
var %data = $hget(buf,$1)
hdel buf $1 | hdel ctx $1
ww_parse_whois %chan %domain %data
}
alias ww_parse_whois {
var %chan = $1, %domain = $2, %data = $3-
var %registrar = $iif($regex(ww,%data,/Registrar:\s*(.+)/i),$regml(ww,1),$null)
var %created = $iif($regex(ww,%data,/Creation Date:\s*(.+)/i),$regml(ww,1),$null)
var %expires = $iif($regex(ww,%data,/Registry Expiry Date:\s*(.+)/i),$regml(ww,1),$null)
var %status = $iif($regex(ww,%data,/Domain Status:\s*(.+)/i),$regml(ww,1),$null)
var %result = %registrar $chr(1) %created $chr(1) %expires $chr(1) %status
ww_cache_set domain_ $+ %domain %result
ww_print_domain %chan %domain %result $false
}
alias ww_print_domain {
var %chan = $1, %domain = $2, %data = $3-, %fromcache = $4
var %registrar = $gettok(%data,1,1), %created = $gettok(%data,2,1), %expires = $gettok(%data,3,1), %status = $gettok(%data,4,1)
var %tag = $iif(%fromcache == $true,(önbellekten),$null)
var %kalan = $iif(%expires != $null,$duration($calc($cvtime(%expires) - $ctime)),Bilinmiyor)
msg %chan [DOMAIN] %domain %tag $+ :
if (%registrar != $null) { msg %chan Registrar: %registrar }
if (%expires != $null) { msg %chan Bitiş Tarihi: %expires (Kalan: %kalan) }
if (%status != $null) { msg %chan Durum: %status }
if ($hget(blacklist,%domain) != $null) { msg %chan ⚠ Bu domain kara listede! }
}
alias ww_incele {
var %chan = $1, %nick = $2, %domain = $ww_clean($3)
if (%domain == $null) { msg %chan %nick $+ : Kullanım: !incele example.com | return }
var %sock = http_ $+ $ticks
hadd ctx %sock %chan $chr(1) %nick $chr(1) %domain $chr(1) $ticks $chr(1) incele
sockopen %sock %domain 80
}
alias ww_headers {
var %chan = $1, %nick = $2, %domain = $ww_clean($3)
if (%domain == $null) { msg %chan %nick $+ : Kullanım: !headers example.com | return }
var %sock = http_ $+ $ticks
hadd ctx %sock %chan $chr(1) %nick $chr(1) %domain $chr(1) $ticks $chr(1) headers
sockopen %sock %domain 80
}
alias ww_tech {
var %chan = $1, %nick = $2, %domain = $ww_clean($3)
if (%domain == $null) { msg %chan %nick $+ : Kullanım: !tech example.com | return }
var %sock = http_ $+ $ticks
hadd ctx %sock %chan $chr(1) %nick $chr(1) %domain $chr(1) $ticks $chr(1) tech
sockopen %sock %domain 80
}
alias ww_sec {
var %chan = $1, %nick = $2, %domain = $ww_clean($3)
if (%domain == $null) { msg %chan %nick $+ : Kullanım: !sec example.com | return }
var %sock = http_ $+ $ticks
hadd ctx %sock %chan $chr(1) %nick $chr(1) %domain $chr(1) $ticks $chr(1) sec
sockopen %sock %domain 80
}
on 1:sockopen:http_*:{
if ($sockerr) { ww_sockerror http $sockname | return }
var %domain = $gettok($hget(ctx,$sockname),3,1)
sockwrite -n $sockname GET / HTTP/1.1
sockwrite -n $sockname Host: %domain
sockwrite -n $sockname User-Agent: Why-Master/1.0
sockwrite -n $sockname Connection: close
sockwrite -n $sockname $crlf
}
on 1:sockread:http_*:{
if ($sockerr) { return }
var %line
sockread %line
if ($sockbr == 0) { return }
hadd buf $sockname $hget(buf,$sockname) $+ %line $+ $crlf
}
on 1:sockclose:http_*:{
var %ctxv = $hget(ctx,$sockname)
if (%ctxv == $null) { return }
var %chan = $gettok(%ctxv,1,1), %nick = $gettok(%ctxv,2,1), %domain = $gettok(%ctxv,3,1)
var %mode = $gettok(%ctxv,5,1)
var %data = $hget(buf,$sockname)
hdel buf $sockname | hdel ctx $sockname
if (%mode == headers) { ww_finish_headers %chan %domain %data }
elseif (%mode == tech) { ww_finish_tech %chan %domain %data }
elseif (%mode == sec) { ww_finish_sec %chan %domain %data }
else { ww_finish_incele %chan %domain %data }
}
alias ww_finish_incele {
var %chan = $1, %domain = $2, %fulldata = $3-
var %status = $iif($regex(ww,%fulldata,/^HTTP\/[\d.]+ (\d+)/),$regml(ww,1),?)
var %server = $iif($regex(ww,%fulldata,/^Server:\s*(.+)$/mi),$regml(ww,1),belirtilmemiş)
var %title = $iif($regex(ww,%fulldata,/<title[^>]*>([^<]+)<\/title>/i),$regml(ww,1),bulunamadı)
msg %chan [İNCELE] %domain -> Durum: %status | Sunucu: %server | Başlık: %title
}
alias ww_finish_tech {
var %chan = $1, %domain = $2, %fulldata = $3-
var %server = $iif($regex(ww,%fulldata,/^Server:\s*(.+)$/mi),$regml(ww,1),Bilinmiyor)
var %powered = $iif($regex(ww,%fulldata,/^X-Powered-By:\s*(.+)$/mi),$regml(ww,1),Tespit Edilemedi)
var %wp = $iif($regex(ww,%fulldata,/wp-content|wp-includes/i),Evet,Hayır)
msg %chan [TECH] %domain Altyapı -> Web Server: %server | X-Powered-By: %powered | WordPress mi?: %wp
}
alias ww_finish_sec {
var %chan = $1, %domain = $2, %fulldata = $3-
var %hsts = $iif($regex(ww,%fulldata,/Strict-Transport-Security/i),Var,Yok)
var %csp = $iif($regex(ww,%fulldata,/Content-Security-Policy/i),Var,Yok)
var %xfo = $iif($regex(ww,%fulldata,/X-Frame-Options/i),Var,Yok)
msg %chan [SECURITY HEADERS] %domain -> HSTS: %hsts | CSP: %csp | X-Frame-Options: %xfo
}
alias ww_finish_headers {
var %chan = $1, %domain = $2
var %fulldata = $replace($3-,$crlf,$chr(29))
msg %chan [HEADERS] %domain $+ :
var %n = $numtok(%fulldata,29), %i = 1
while (%i <= %n) && (%i <= 10) {
msg %chan $gettok(%fulldata,%i,29)
inc %i
}
}
alias ww_sub {
var %chan = $1, %nick = $2, %domain = $ww_clean($3)
if (%domain == $null) { msg %chan %nick $+ : Kullanım: !sub example.com | return }
msg %chan [SUBDOMAIN] %domain için yaygın alt alan adları taranıyor...
.timer 1 1 dns www. $+ %domain
.timer 1 2 dns mail. $+ %domain
.timer 1 3 dns cpanel. $+ %domain
.timer 1 4 dns api. $+ %domain
.timer 1 5 dns admin. $+ %domain
}
alias ww_ssl {
var %chan = $1, %domain = $ww_clean($3)
if (%domain == $null) { return }
var %sock = sslchk_ $+ $ticks
hadd ctx %sock %chan $chr(1) %domain
sockopen -e %sock %domain 443
}
on 1:sockopen:sslchk_*:{
var %ctxv = $hget(ctx,$sockname)
var %chan = $gettok(%ctxv,1,1), %domain = $gettok(%ctxv,2,1)
if ($sockerr) { msg %chan [SSL] %domain : Bağlantı kurulamadı. }
else { msg %chan [SSL] %domain : 443 portu SSL el sıkışması başarılı! }
hdel ctx %sockname | sockclose $sockname
}
alias ww_dns {
var %chan = $1, %nick = $2, %domain = $ww_clean($3)
set %ww.dns.chan %chan | set %ww.dns.nick %nick | set %ww.dns.query %domain
dns %domain
}
on *:DNS:{
if (%ww.dns.chan == $null) { return }
msg %ww.dns.chan [DNS] %ww.dns.query -> IP: $iif($dns(0) > 0,$dns(1).ip,Çözümlenemedi)
unset %ww.dns.chan
} |