Hledání nebezpečných obrázků

Školení, která pořádám

Google v zájmu ochrany puritánů nabízí tzv. bezpečné hledání – z výsledků odstraňuje „explicitní“ obrázky. Toto omezení jde vypnout, takže se zobrazují všechny obrázky, ale nepochopitelně chybí možnost zobrazovat jenom to „závadné“.

Jednoduchým PHP skriptem jde ale toto nepříjemné omezení odstranit:

<?php
// skript očekává hledaný řetězec v kódování UTF-8 v parametru ?q=
$root = "http://images.google.cz/images";
$self = "http://$_SERVER[SERVER_NAME]$_SERVER[PHP_SELF]";
$safe = file_get_contents("$root?q=" . urlencode($_GET["q"]));
$all = file_get_contents("$root?q=" . urlencode($_GET["q"]) . "&safe=off");
preg_match_all('~,\\[".+"\\]~U', $safe, $matches);
$unsafe = str_replace(str_replace("\\x26ie\\x3dUTF-8", "\\x26safe\\x3doff\\x26ie\\x3dUTF-8", $matches[0]), "", $all);
$unsafe = str_replace("<head>", "<head><base href='$root'>", $unsafe);
$unsafe = str_replace('action="/images"', 'action="' . htmlspecialchars($self) . '"', $unsafe);
echo $unsafe;
?>

Kód stáhne obě verze dokumentů a z úplné odstraní to, co se nachází v omezené. Aby fungovaly relativní odkazy, tak doplní značku <base href="">, a naopak přepíše cíl formuláře pro další vyhledávání zase zpátky.

Skript není zcela dokonalý, ale jako základ pro další úpravy posloužit může.

Jakub Vrána, Řešení problému, 1.4.2009, diskuse: 9 (nové: 0)

Diskuse

MArtin:

A víš, že robotické dotazy na Google jsou fuj fuj zakázané a vyroste ti bradavice?

ikona dqd:

Klasický povedený apríl. Díky, pobavil jsem se!

ameeck:

Možná apríl, stejně ten skript ale funguje :P

ic:

Skript ale neočekává hledaný řetězec v kódování UTF-8 v parametru ?url= . Skript očekává hledaný řetězec v kódování UTF-8 v parametru ?q= .

Jinak takový 'zvrhlý vyhledavač' obrázků by se myslím uživil :-)

ikona Jakub Vrána OpenID:

Díky za upozornění, opravil jsem to.

ikona Homer:

Skvělé, konečně první opravdu užitečný PHP skript. Funguje to naprosto dokonale.

Petr Konůpek:

Geniální myšlenka :D

ikona david@grudl.com:

Zkusil jsem tím hledat "Jakub" a vypadly na mě dost strašlivé věci!

Andrews13:

jak se to dá použít?

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.