Как проверить кто и от куда загружает картинку

12
verhmax
На сайте с 01.12.2005
Offline
191
1243

Добрый день. Есть такой вопрос:

На сайте есть картинка с адресом www.site.ru/image/1.gif

Картинка для общего пользования, тоесть её размещают у себя на сайте люди.

как проверить на каких сайтах она размещена?

Есть ли возможность реализовать это на php?

Shtogrin
На сайте с 02.11.2006
Offline
95
#1

Без дополнительной нагрузки - анализировать в логе \"%{Referer}i\"

Или на php - сделать скрипт, который будут отдавать эту картинку и логировать $_SERVER['HTTP_REFERER']

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
verhmax
На сайте с 01.12.2005
Offline
191
#2
Shtogrin:
Или на php - сделать скрипт, который будут отдавать эту картинку и логировать $_SERVER['HTTP_REFERER']

а где можно почитать как такое реализовать?

[Удален]
#3
verhmax:
а где можно почитать как такое реализовать?

Если дружишь с PHP, то смотри как осуществляется там работа с графикой.

verhmax
На сайте с 01.12.2005
Offline
191
#4
sanchez911:
Если дружишь с PHP, то смотри как осуществляется там работа с графикой.

а это поможет? ткни пальцем куда именно смотреть! работу с графикой в php знаю, но чтоб проверять кто грузит куртинку этого не заметил:(

Groove
На сайте с 22.02.2007
Offline
41
#5
verhmax:
а это поможет? ткни пальцем куда именно смотреть! работу с графикой в php знаю, но чтоб проверять кто грузит куртинку этого не заметил:(

1) открыть файл картинки

$content = file_get_contents($file_name);

2) записать откуда запрашивает

3) послать нужный заголовок

header('Content-Type: image/jpeg'); 

4) сделать

print $content;

а в htaccess надо прописать, чтобы для удаленных вызовов картинки апач отдавал их через скрипт

что то типа того:

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^.*sitename\.ru.*$ [NC]
RewriteRule .*\.(gif|jpg)$ /fake_img.php

P.S.: тут же можно пакостить, добавляя веселые надписи на картинки)))

jQuickForm = генератор форм на PHP (jQuery + HTML_QuickForm2) (http://jquickform.ru/) | iBegun.ru - цены в Бегуне (http://ibegun.ru/)
Groove
На сайте с 22.02.2007
Offline
41
#6

помогло? а то я без проверки написал... просто думаю должно работать

verhmax
На сайте с 01.12.2005
Offline
191
#7
Groove:
помогло? а то я без проверки написал... просто думаю должно работать

я вот что-то не очень разобрался.

1. в htaccess надо прописать чтоб все картинки с папки images при вызове извне обрабатывались скриптом fake_img.php.

В самомже fake_img.php должно происходить открытие картинки и:

записать откуда запрашивает - не разобрался

послать нужный заголовок - что нам это даст?

Groove
На сайте с 22.02.2007
Offline
41
#8
verhmax:
я вот что-то не очень разобрался.
1. в htaccess надо прописать чтоб все картинки с папки images при вызове извне обрабатывались скриптом fake_img.php.
В самомже fake_img.php должно происходить открытие картинки и:
записать откуда запрашивает - не разобрался
послать нужный заголовок - что нам это даст?

Итак у нас есть сайт, картинки которого мы не хотим давать наружу и плюсом к этому еще попалить тех, кто их использует.

Для этого:

1) в папку images кладем файл .htaccess


RewriteEngine on
RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^.*sitename\.ru.*$ [NC]
RewriteRule .*\.(gif|jpg)$ /fake_img.php

2) создаем в корне сайта файл fake_img.php


<?
header('Content-Type: image/jpeg');
$img = file_get_contents('default.jpg');
file_put_contents('img_log.csv',
sprintf('%s;%s;%s;%s'."\n",
$_SERVER['HTTP_REFERER'],
$_SERVER['REMOTE_ADDR'],
$_SERVER['REQUEST_URI'],
date('d-m-Y H:i:s')
),
FILE_APPEND);
print $img;
?>

3) грузим в корень сайта картинку с именем default.jpg

там например тупо пишем "ты вор моих картинок!" )))

В итоге, при загрузке напрямую sitename.ru/images/img.gif

или при использовании нашей картинки с другого сайта

вору будет выдаваться default.jpg.

А мы поимеем лог, который удобно смотреть в Excell.

Можно доработать fake_img.php в двух вариантах:

- считывать запрашиваемую картинку и выдавать ее, просто прозрачно логируя запросы

- рисовать при помощи php: http://www.php5.ru/articles/image

verhmax
На сайте с 01.12.2005
Offline
191
#9

о, это уже лучше, спасибо. правда необходимость в таком скрипте не для того чтоб скрывать картинки и логировать, а наоборот, пользователи любые должны видеть эти картинки, и картинка с адресом, к примеру, images1.gif должна показываться любому и логироваться на каком сайте она размещена. данные о человеке который её смотрит меня не интерисуют, мне главное с какого адреса любая из папки картинка грузиться.

Groove
На сайте с 22.02.2007
Offline
41
#10
verhmax:
о, это уже лучше, спасибо. правда необходимость в таком скрипте не для того чтоб скрывать картинки и логировать, а наоборот, пользователи любые должны видеть эти картинки, и картинка с адресом, к примеру, images1.gif должна показываться любому и логироваться на каком сайте она размещена. данные о человеке который её смотрит меня не интерисуют, мне главное с какого адреса любая из папки картинка грузиться.

тогда надо изменить fake_img.php

<?

header('Content-Type: image/jpeg');
$file_name = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
if(file_exists($file_name)){
$img = file_get_contents($file_name);
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
$host = '';
if($referer){
$pu = parse_url($referer);
$host = $pu['host'];
}
file_put_contents('img_log.csv',
sprintf('%s;%s;%s;%s;%s'."\n",
$referer,
$host,
$_SERVER['REQUEST_URI'],
date('Y-m-d'),
date('H:i:s')
),
FILE_APPEND);
print $img;
}
?>
12

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