Ищется скриптик определения реферрера

HorrorTM
На сайте с 06.05.2007
Offline
73
752

Доброго дня уважаемые.

Решил несколько замаскироваться, в связи с чем вспомнил баянную тему про определение реферрера и в случае, если посетитель приходит не с поисковой машины - выдачу 404 страницы.

Помню что такой скриптик на ПХП проскакивал или тут или на Нулледе, но к сожалению не нашел. Может у кого завалялся?

P.S. Точнее интересует его часть, которая отдаёт 404. Просто не знаю как это корректно делается - то ли сгенерировать страничку, то ли хедер надо отослать определенный браузеру. Само определение реферрера то задача банальная.

Культура (http://www.skdnt.ru) в Ставропольском крае :: Ставропольская околица (http://www.stavok.ru) :: Фильмы онлайн (http://www.trubim.tv)
S
На сайте с 13.07.2007
Offline
56
#1

if($_SERVER['HTTP_REFERER'] == 'название бота')

{

header("HTTP/1.1 404");

die('Бот, однако.');

}

[Удален]
#2

скрипт фильтрации поискового трафа на яваскрипт

<script>
var ref,i,is_se=0;
var se = new Array('google','msn','yahoo','yandex','rambler','aport','mail','km.ru','meta','all.by', 'tut.by','online.ua','nigma');
if(document.referrer)ref=document.referrer;
else ref="";
for(i=0;i<13;i++)
{if(ref.indexOf(se)>=0){is_se=1;здесь_пишем_куда_слать_поисковый_траф;}}
if(is_se==0){здесь_пишем_куда_слать_левый_траф;}
</script>
wmz
На сайте с 09.04.2007
Offline
119
wmz
#3
solnikolay:
if($_SERVER['HTTP_REFERER'] == 'название бота')
{
header("HTTP/1.1 404");
die('Бот, однако.');
}

$ref = $_SERVER['HTTP_REFERER'];

if(!strpos($ref, 'имя_се1') && !strpos($ref, 'имя_се2') и тд по необходимости) {

// вот тогда не с поисковика :)

header("HTTP/1.1 404");

die();

}

// дальше делай что надо

[Удален]
#4

Регулярные выражения рулят!

if (!preg_match('/yandex|rambler|msn|google/i', $_SERVER['HTTP_REFERER'])) {

// вот тогда не с поисковика

header("HTTP/1.1 404");

die();

}

S
На сайте с 13.07.2007
Offline
56
#5

ЧерныйKот, регулярки работают медленнее, нежели strstr и тем более strpos.

[Удален]
#6
solnikolay:
ЧерныйKот, регулярки работают медленнее, нежели strstr и тем более strpos.

Т.к. в данном случаее сложность регулярного выражения небольшая, а длина субъекта не более 255 символов... разность в скорости на столько незначительна, что ей можно пренебречь.

Тогда уж вместо strstr и strpos следует использовать функции stristr и stripos, для того чтобы не учитывать регистр символов.

S
На сайте с 13.07.2007
Offline
56
#7
ЧерныйKот:
Т.к. в данном случаее сложность регулярного выражения небольшая, а длина субъекта не более 255 символов... разность в скорости на столько незначительна, что ей можно пренебречь.

Тогда уж вместо strstr и strpos следует использовать функции stristr и stripos, для того чтобы не учитывать регистр символов.

1) помножьте на посещаемость. Да и смысл усложнять регулярками, если есть более простые способы.

2) у меня например на хостинге НЕ работают stristr и stripos. Но еще не видел, чтобы $_SERVER['HTTP_REFERER'] отдавался в разных регистрах. Он вроде как всегда в нижнем ;)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий