Quantcast
Channel: WordPress – Marcel Schmidt Wiki / Neuigkeiten
Viewing all articles
Browse latest Browse all 3

PHP Whois Abfrage mit Ländererkennung über Curl (WordPress Spam Schutz)

$
0
0

Folgendes Script habe ich eingesetzt um mich etwas vor diesen Spam Attacken zu schützen, dabei wird einfach eine Whois Abfrage einer IP gemacht (in meinem Fall der IP des Kommentar-Senders). Dann wird geprüft ob die IP zu einem Provider aus Deutschland gehört. Sicher kann es vorkommen das ein paar Leute keine Deutschen Provider nutzen, aber auf der anderen Seite schützt es vor 99% aller Spam Kommentare mit CAPCHA Umgehung.

Als Grundlage verwendet ich ein WordPress Plugin namens: antispamlangdetect
Die eigentlichen Script Funktionalitäten habe ich durch eigene ersetzt, wie die folgende:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$isSpam = false;
$url ='http://whois.to/'.$comment_author_IP;
 
$postfields = $fields_string;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp');
curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.session_id());
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$curlData = curl_exec($ch);
if (stripos($curlData,'Whois results:')===false) error_log("Whois fehler im Wiki Block!", 1, "info@xxx.de"); //fehler Info
if (stripos($curlData,'Germany')===false && stripos($curlData,'Deutschland')===false) $isSpam = true;

Solltet Ihr einen anderen Dienst nutzen wollen, bietet sich die Curl Abfrage über POST an, folgend ein Beispiel ohne direkte Domain, da müsst Ihr etwas suchen, wo die Abfrage funktioniert:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$url ='http://whoisMitPostAbfrage.de/result.php'; // hier muss man etwas suchen
// folgend die Formular Felder eintragen
$fields = array (
		'domain' => $comment_author_IP,
		'ip' => $comment_author_IP
);
 
$fields_string = '';
foreach($fields as $key=>$value) { 
	$fields_string .= $key.'='.$value.'&'; 
}
$fields_string = substr($fields_string,0,-1);
 
$postfields = $fields_string;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //kommt auf die Seite an
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp');
curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.session_id());
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "$postfields");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$curlData = curl_exec($ch);
if (stripos($curlData,'Whois results:')===false) error_log("Whois fehler im Wiki Block!", 1, "info@xxx.de");
if (stripos($curlData,'Germany')===false && stripos($curlData,'Deutschland')===false) $isSpam = true;

Viewing all articles
Browse latest Browse all 3