Spamfilters PHPhulp

Door Jelmer -, 23 jaar geleden, 4.651x bekeken

Na zo'n 7 topics, 40 posts en 2 maanden geef ik de moed op om het nog op een fatsoenlijke manier naar voren te brengen.

Dit houd 90% van alle spam op PHPhulp tegen, en vooral die commentspam als reacties op de scripts begint mij ontzettend te ergeren. En dat terwijl er maar zo'n kleine ingreep nodig is om er vanaf te komen.

Een mogelijkheid zou kunnen zijn dat waneer door de functie hieronder een bericht als 'spam' wordt gezien deze opnieuw moet worden opgestuurd, maar dan met een checkbox gechecked. Geen spambot die dat zal doen, en vrij simpel in te bouwen. Daarbij zullen er zeer weinig posts zijn waar de onderstaande functie op reageert, tenzij het spam is.

Dus bij deze. Probeer het nou even. Het kan geen kwaad!

Voorbeeld: http://phphulp.ikhoefgeen.nl/spamfilter/phphulp_filter.php

Gesponsorde koppelingen

PHP script bestanden

  1. spamfilters-phphulp

 

Er zijn 21 reacties op 'Spamfilters phphulp'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Willem Jan Z
Willem Jan Z
23 jaar geleden
 
0 +1 -0 -1
Applaude!
Vdleije .
vdleije .
23 jaar geleden
 
0 +1 -0 -1
Geweldig script!
Arend a
Arend a
23 jaar geleden
 
0 +1 -0 -1
Misschien is het ook een idee om woorden als casino, blackjack en andere zut te filteren
Winston Smith
Winston Smith
23 jaar geleden
 
0 +1 -0 -1
Ja, en texas, hold-em en poker!

Maarre...chapeau!!

Ik stem voor!
Legolas
Legolas
23 jaar geleden
 
0 +1 -0 -1
Laten we een anti spam checker wedstrijd maken, dan krijg je zeker een goede spam becherming =D.

Ik kom ook met een inzending =P. (http://www.phphulp.nl/php/scripts/7/420|http://www.legolasweb.nl/content/view/44/35/)
Han eev
Han eev
23 jaar geleden
 
0 +1 -0 -1
Leuk gemaakt!! zal nu echt wel alles eruit filteren :P
Jelmer -
Jelmer -
23 jaar geleden
 
0 +1 -0 -1
@Legolas: Nu alleen nog even een testpagina die onder de spam zit. Mijn PHP Chatbox bevat momenteel zo'n 20 berichten van 2 soorten. Ik lees ze altijd uit met devolgende functie, maar om een of andere reden wou het de laatste keer dat ik het probeerde niet meer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function ScanURLForSpam($url){
    $data = file_get_contents($url);
    $matches = array();
    $matches2 = array();
    $found = false;

    if(preg_match_all('{<span class="black">(.+?)</span>}is', $data, $matches) > 0){
        for($i = 0; $i < count($matches[1]) && !$found; $i++){
            if(ScanForSpam(html_entity_decode($matches[1][$i]))){
                $found = true;
            }
        }
    }

    return $found;
}

?>

En zoals ik al zei is hij specifiek voor phphulp. Ik heb ook geen website die last heeft van spam, dus ik heb niets om hem op uit te proberen. Maar ik zal later nog eens komen met een lerend spamfilter ;)
Legolas
Legolas
23 jaar geleden
 
0 +1 -0 -1
PHPhulp grabber:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

$phphulp_url
= "http://www.phphulp.nl/php/scripts/5/326/";
$contents = file_get_contents($phphulp_url);
$posts = explode("<div class=\"reactionsz\">", $contents);

for ($i = 1; $i < count($posts); $i++) {
    $title_sub = preg_split("/<a href=\"(.*?)\" title=\"(.*?)\">/", $posts[$i]);
    $titlesuper_sub = explode("</a>", $title_sub[1]);
    $title = $titlesuper_sub[0];
    $post_sub = explode("<span class=\"black\">", $posts[$i]);
    $postsuper_sub = explode("</span>", $post_sub[1]);
    $post = $postsuper_sub[0];
    echo("<b><a href=\"spam.php?title=" . urlencode($title) . "&message=" . urlencode($post) . "\">" . htmlspecialchars($title) . "</a></b><br />" . htmlspecialchars($post) . "<br /><br />");
}


?>


Ga nog ff met mijn filter kloten, hij is soms iets te actief :P Maar aan de andere kant, dat komt natuurlijk omdat die grabber geconverteerde links pakt, en mijn script moet draaien voor de bbcode, anders pakt ie normale posts te snel.
Legolas
Legolas
23 jaar geleden
 
0 +1 -0 -1
Lichte update, de spam urls zijn door een htmlentity encode gehaalt, overigens kunnen we hier ook ons voordeel mee doen, overigens lijkt me dit iets om aan samen te werken. =P, ik ga een update uitbrengen die woorden uitzoekt die vaak als spam voorkomen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

include("spam.php");

$phphulp_url = "http://www.phphulp.nl/php/scripts/5/326/";
$contents = file_get_contents($phphulp_url);
$posts = explode("<div class=\"reactionsz\">", $contents);

for ($i = 1; $i < count($posts); $i++) {
    $title_sub = preg_split("/<a href=\"(.*?)\" title=\"(.*?)\">/", $posts[$i]);
    $titlesuper_sub = explode("</a>", $title_sub[1]);
    $title = $titlesuper_sub[0];
    $post_sub = explode("<span class=\"black\">", $posts[$i]);
    $postsuper_sub = explode("</span>", $post_sub[1]);
    $post = $postsuper_sub[0];
    echo("<b>" . $title . "</b> - " . spam_check(html_entity_decode($title), html_entity_decode($post)) . "%<br />" . $post . "<br /><br />");
}


?>
Steff   an
Steff an
23 jaar geleden
 
0 +1 -0 -1
Let er wel op dat hij geen woorden gaat tellen als and. or enz...
Legolas
Legolas
23 jaar geleden
 
0 +1 -0 -1
in de echte spam zie je die niet echt en hij kijkt alleen naar dergelijke woorden in spam.
Jelmer -
Jelmer -
23 jaar geleden
 
0 +1 -0 -1
Misschien is het ook mooi als hij op een of andere manier herhalingen kan herkennen. Dus dat posts al "Help me Help me Help me Help me Help me" als spam worden gezien.


23 jaar geleden
 
0 +1 -0 -1
&& !stristr('&', $message)//bevat geen dollartekens -> geen variabelen.

Lijkt mij zo dat daar dan ook een $ moet staan en geen &
Legolas
Legolas
23 jaar geleden
 
0 +1 -0 -1
wat misschien handig is is een tekst normalizer tegen:
t3kst t.e.k.s.t etc.
Jelmer -
Jelmer -
23 jaar geleden
 
0 +1 -0 -1
@Derk: was inderdaad een foutje, heb ik nu verandert.
Thom Snijders
Thom Snijders
23 jaar geleden
 
0 +1 -0 -1
Kan iemand ff uitleggen hoe je het spamscript installeert? Op het moment wil het niet werken bij mijn gastenboek..

$msg = het nieuwe bericht

$spamgevonden = ScanForSpam($msg);

if ($spamgevonden = true) {
Niet toevoegen
}else{
Wel toevoegen
}
Han eev
Han eev
23 jaar geleden
 
0 +1 -0 -1
if ($spamgevonden == true) { // 2x = dus ==
Niet toevoegen
}else{
Wel toevoegen
}
Thom Snijders
Thom Snijders
23 jaar geleden
 
0 +1 -0 -1
@Han ik heb het op die manier geprobeert, maar vervolgens laat hij nog gewoon alles door :S

Kan het erdoor komen dat $msg een $HTTP_POST_VARS is?


23 jaar geleden
 
0 +1 -0 -1
Ja, vast.
Thom Snijders
Thom Snijders
23 jaar geleden
 
0 +1 -0 -1
Tjah, heb alles geprobeert dus misschien lag het daaraan. Je weet het niet :o

Het probleem is nu in iedergeval opgelost door een ander filter. Jammer genoeg niet dankzij jou hulp, sabastiaan :P
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Arian Stolwijk
Arian Stolwijk
22 jaar geleden
 
0 +1 -0 -1
Maar wat is nu de code van http://phphulp.ikhoefgeen.nl/spamfilter/phphulp_filter.php,
want hier krijg je wel een foutmelding als er teveel <a> en <h1> enzo erinstaat, maar in het bovenstaande scriptje zie ik dat niet terug...

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. spamfilters-phphulp

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.