Dark Patterns: User Interfaces Designed to Trick People ist ein gutes Research Projekt von Harry Brignull (90% of everything).
Er hat die Studie unter anderem bei der UX Brighton 2010 vorgestellt und publiziert sie hier als PDF oder pptx
Die Beispiele sind echt tricky und funktionieren. Genau deswegen gibt es mittlerweile dazu eine Sammlung auf darkpatterns.org wozu es leider keinen RSS-Feed aber eine Menge Informationen gibt.
Seit einiger Zeit tummeln sich diverse Crawler auf meinem Blog, die meine Inhalte übernehmen und auf anderen Seiten veröffentlichen.
Das wäre ja kein Problem, wenn man das entsprechend mit angibt.
Daher habe ich nun folgende drei Schritte unternommen um automatisches Scrapen zu erschweren:
- RSS-Feed auf Kurzfassung umgestellt: Admin-Panel -> Einstellungen -> Lesen -> Newsfeed Kurzfassung
- Yoasts RSS Footer Plugin um einen Link und eine Ursprungsnotiz hinzuzufügen
- Die index.php von WordPress folgendermaßen modifiziert:
<?php
// Bots und Scraper ausschliessen:
function botcheck($ua) {
$matches = array("java", "libwww", "perl", "curl");
for($i=0; $i<sizeof($matches); $i++)
if(stristr($ua, $matches[$i])) {
return true;
} else {
return false;
}
}
if(botcheck($_SERVER['HTTP_USER_AGENT'])) {
echo "Böser Bot: geh weg!<br/>Falls Du doch kein Bot bist, überprüfe bitte deinen User-Agent.";
} else {
define('WP_USE_THEMES', true);
require('./wp-blog-header.php');
}
?>
Ist zwar im Sinne der Rechenleistung und Website-Geschwindigkeit nicht optimal, aber zumindest werden alle Bots die sich im User-Agent mit Java, Perl und vielem mehr ausgeben entsprechend mit einer Meldung abserviert.
Die Modifizierung muss direkt in der Index-Datei im WordPress-Root-Verzeichnis gemacht werden, da diese die restliche Auslieferung vorantreibt. Im WordPress Theme selbst funktioniert das nicht.
Klar, das löst nicht alle Probleme, aber zumindest erschwert es die Sache etwas und plumpes Content-Scraping funktioniert damit nun nicht mehr.
Schauen wir mal, welcher Bot zuerst seinen User-Agent umstellt
PS: Natürlich werden einige Bots auch über die robots.txt blockiert, aber Scraper halten sich leider nicht daran
Will man in vielen Blogs, sozialen Community und dem ganzen Rest eindeutige Profile anlegen um den jeweiligen Seitenbetreiber und/oder Spam-System nicht aufzufallen, so braucht man Input. Viel Input.
Den beschafft man sich am besten einfach über Google selbst, indem man die Google Profile dazu nutzt.
Vor einiger Zeit konnte man über die Suchanfrage inurl:http://www.gstatic.com/s2/sitemaps/sitemap entsprechend 3449 Sitemaps mit je 5000 Profilen finden.
Gut, die Nummerierung ist relativ simpel und mit einem kleinen Skript kann man alle Sitemaps runterladen:
for($i=100; $i<3450; $i++)
system("wget http://www.gstatic.com/s2/sitemaps/sitemap-".$i.".txt");
Und dann die jeweiligen Sitemaps durchlaufen und die jeweiligen Profile mit diesem Skript:
for($i=2000; $i<3000; $i++) {
$file = fopen("../sitemap-$i.txt", "r") or exit("Unable to open file!");
system("mkdir profiles-$i");
while(!feof($file)) {
$random = rand(2,10);
$id = split('/', fgets($file));
$id = $id[4];
echo "fetching $id";
system("sh ../wget.sh $i $id");
sleep($random);
}
fclose($file);
}
Und wget.sh dann mit eigenem User-Agent und Parametern konfiguriert gibt am Ende 3499*5000 = 17.245.000 Google Profile.
Damit kann man sich ein schönes User-Netzwerk aufbauen, Blogs einrichten und vieles mehr.
Aber dabei sollte natürlich nie gegen die jeweiligen Richtlinien der Betreiber verstoßen werden.