Затемнение картинок в выдаче гугла

A
На сайте с 26.09.2011
Offline
97
1391

Проблема в следующем

.htaccess



RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?fotomaps\.ru/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?fotomaps\.ru$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mailchimp\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mailchimp\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?paypal\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?paypal\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?craigslist\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?craigslist\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?gravatar\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?gravatar\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?wp\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?wp\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?twitter\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?twitter\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?pinterest\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?pinterest\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?linkedin\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?linkedin\.com$ [NC]

RewriteCond %{HTTP_USER_AGENT} !googlebot-image [NC]
RewriteCond %{HTTP_USER_AGENT} !googlebot [NC]
RewriteCond %{HTTP_USER_AGENT} !googlebot-news [NC]
RewriteCond %{HTTP_USER_AGENT} !googlebot-video [NC]
RewriteCond %{HTTP_USER_AGENT} !googlebot-mobile [NC]
RewriteCond %{HTTP_USER_AGENT} !mediapartners-google [NC]
RewriteCond %{HTTP_USER_AGENT} !mediapartners [NC]
RewriteCond %{HTTP_USER_AGENT} !adsbot-google [NC]
RewriteCond %{HTTP_USER_AGENT} !bingbot [NC]
RewriteCond %{HTTP_USER_AGENT} !facebookexternalhit [NC]
RewriteCond %{HTTP_USER_AGENT} !linkedinbot [NC]
RewriteCond %{HTTP_USER_AGENT} !baiduspider [NC]
RewriteCond %{HTTP_USER_AGENT} !duckduckbot [NC]
RewriteCond %{HTTP_USER_AGENT} !yandex [NC]
RewriteCond %{HTTP_USER_AGENT} !sogou [NC]
RewriteCond %{HTTP_USER_AGENT} !twitterbot [NC]
RewriteCond %{HTTP_USER_AGENT} !pinterest [NC]
RewriteCond %{HTTP_USER_AGENT} !photon [NC]
RewriteCond %{HTTP_USER_AGENT} !tineye [NC]
RewriteCond %{HTTP_USER_AGENT} !ggpht [NC]

RewriteRule (.*)js/(.*\.(jpg|jpeg|gif|png))$ $1watermark.php?p=c&q=90&src=js/$2


watermark.php



<?php
//we tell the server to treat this file as if it were an image
header('Content-type: image/jpeg');
//image file path
$img = $_GET['src'];
//watermark position
$p = $_GET['p']; if(!$p) $p = 'br';
/*
p can be anything from the following list:
tl = top left
tc = top center
tr = top right
cl = center left
c = center of the image
cr = center right
bl = bottom left
bc = bottom center
br = bottom right
*/
//watermarked image quality
$q = $_GET['q'];
//if the quality field is missing or is not on the 0 to 100 scale then we set the quality to 93
if(!$q || $q100) $q = '95';
$filetype = substr($img,strlen($img)-4,4);
$filetype = strtolower($filetype);
if($filetype == ".gif") $image = @imagecreatefromgif($img);
if($filetype == ".jpg") $image = @imagecreatefromjpeg($img);
if($filetype == ".png") $image = @imagecreatefrompng($img);
if (!$image) die();
//getting the image size for the original image
$img_w = imagesx($image);
$img_h = imagesy($image);
/*
//if the filename has 150x150 in it's name then we don't apply the watermark
if (eregi("150x150", $img)) {
imagejpeg($image, null, $q); die();
} else {
$watermark = @imagecreatefrompng('watermark.png');
}
*/
//if you want to use the watermark only on bigger images then use this instead of the condition above
if ($img_w < "350") {//if image width is less then 150 pixels
imagejpeg($image, null, $q); die();
} else {
$watermark = @imagecreatefrompng('watermark.png');
}
//getting the image size for the watermark
$w_w = imagesx($watermark);
$w_h = imagesy($watermark);
if($p == "tl") {
$dest_x = 0;
$dest_y = 0;
} elseif ($p == "tc") {
$dest_x = ($img_w - $w_w)/2;
$dest_y = 0;
} elseif ($p == "tr") {
$dest_x = $img_w - $w_w;
$dest_y = 0;
} elseif ($p == "cl") {
$dest_x = 0;
$dest_y = ($img_h - $w_h)/2;
} elseif ($p == "c") {
$dest_x = ($img_w - $w_w)/2;
$dest_y = ($img_h - $w_h)/2;
} elseif ($p == "cr") {
$dest_x = $img_w - $w_w;
$dest_y = ($img_h - $w_h)/2;
} elseif ($p == "bl") {
$dest_x = 0;
$dest_y = $img_h - $w_h;
} elseif ($p == "bc") {
$dest_x = ($img_w - $w_w)/2;
$dest_y = $img_h - $w_h;
} elseif ($p == "br") {
$dest_x = $img_w - $w_w;
$dest_y = $img_h - $w_h;
}
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $w_w, $w_h);
imagejpeg($image, null, $q);
imagedestroy($image);
imagedestroy($watermark);
?>

почему то даже не хочет выполнять на сервере скрипт

http://fotomaps.ru/watermark.php?p=c&q=90&src=js/ecl4s2atbgq.jpg

на другом сервере скрип выполняется

http://aksuchess.ru/watermark.php?p=c&q=90&src=gazet/k-5.jpg

но не защищает от хостлинга

в чем могут быть проблемы? не подскажите?

проблема первого сервера может быть в nginxe и apache ? кто как решал эту проблему?

vga1
На сайте с 18.02.2007
Offline
251
#1
adelbaew:
почему то даже не хочет выполнять на сервере скрипт

http://fotomaps.ru/watermark.php?p=c&q=90&src=js/ecl4s2atbgq.jpg

на другом сервере скрип выполняется

http://aksuchess.ru/watermark.php?p=c&q=90&src=gazet/k-5.jpg

1) Замените в заголовке header('Content-type: image/jpeg');

на header('Content-type: text/html');

если скрипт генерит предупреждения - увидите их. Потом верните назад, если все нормально.

2) в php.ini отключите выдачу предупреждений

error_reporting = E_ERROR

3) php должен быть собран с поддержкой GD. phpinfo() вам в помощь.

4) в /etc/conf.d/apache2 должна быть включена поддержка PHP

APACHE2_OPTS="-D DEFAULT_VHOST -D FASTCGI -D PHP5"

---------- Добавлено 15.02.2015 в 15:46 ----------

И да, rewrite для googlebot у вас не срабатывает, ищите в .htaccess ошибку

A
На сайте с 26.09.2011
Offline
97
#2

Генирирует

Notice: Undefined variable: q100 in www/fotomaps.ru/watermark.php on line 23 ����JFIF��;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90 ��C 

   ��C   ��V"�� ���}!1AQa"q2���#B��R��$3br�

Значит - он воспринимает переменную как неизвестную на 23 строке

---------- Добавлено 15.02.2015 в 15:49 ----------

vga1:
1) Замените в заголовке header('Content-type: image/jpeg');
на header('Content-type: text/html');
если скрипт генерит предупреждения - увидите их. Потом верните назад, если все нормально.
2) в php.ini отключите выдачу предупреждений
error_reporting = E_ERROR
3) php должен быть собран с поддержкой GD. phpinfo() вам в помощь.
4) в /etc/conf.d/apache2 должна быть включена поддержка PHP
APACHE2_OPTS="-D DEFAULT_VHOST -D FASTCGI -D PHP5"

---------- Добавлено 15.02.2015 в 15:46 ----------

И да, rewrite для googlebot у вас не срабатывает, ищите в .htaccess ошибку

А как вы узнали срабатывает ли rewrite? не подскажете

vga1
На сайте с 18.02.2007
Offline
251
#3
adelbaew:

А как вы узнали срабатывает ли rewrite? не подскажете

Во второй теме одно и тоже пишу :)

Ставите RDS бар в Мозиллу, меняете user agent на google и тестируете. Сейчас он не срабатывает, ватермарк не появляется.

A
На сайте с 26.09.2011
Offline
97
#4
vga1:
1) Замените в заголовке header('Content-type: image/jpeg');
на header('Content-type: text/html');
если скрипт генерит предупреждения - увидите их. Потом верните назад, если все нормально.
2) в php.ini отключите выдачу предупреждений
error_reporting = E_ERROR
3) php должен быть собран с поддержкой GD. phpinfo() вам в помощь.
4) в /etc/conf.d/apache2 должна быть включена поддержка PHP
APACHE2_OPTS="-D DEFAULT_VHOST -D FASTCGI -D PHP5"

---------- Добавлено 15.02.2015 в 15:46 ----------

И да, rewrite для googlebot у вас не срабатывает, ищите в .htaccess ошибку

3 и 4 на сервере есть и все нормально, уточнил у тех поддержки,

по-поводу 2 - а зачем ее выключать?

похоже дело в чем то другом(

vandamme
На сайте с 30.11.2008
Offline
675
#5

adelbaew, а тимтхумб с кешированием вас не устроил, который я выложил в своей теме?

этот скрипт даже при 1-2 тыс человек/сутки создаст очень высокую нагрузку на хостинге.

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

полностью исходники были тут http://dev.drupalworld.ru/googlepics.rar

я же говорил вам через ЛС, что в моей теме они есть.

---------- Добавлено 15.02.2015 в 20:55 ----------

adelbaew:
RewriteRule (.*)js/(.*\.(jpg|jpeg|gif|png))$ $1watermark.php?p=c&q=90&src=js/$2

эту строчку бы проверить, и зачем ее так усложнять

можно же все что в указанной папке пропускать (ваша папка js вместо моей uploads), типа так

RewriteRule (^uploads.*\.(bmp|gif|jpe?g|png)$) /timthumb.php?wm=1&src=$1 [L]
vga1
На сайте с 18.02.2007
Offline
251
#6
adelbaew:
3 и 4 на сервере есть и все нормально, уточнил у тех поддержки,
по-поводу 2 - а зачем ее выключать?

похоже дело в чем то другом(

Сначала разберитесь с ошибкой, которая у вас на экран лезет. Пока там будут любые сообщения, отличные от бинарной строки картинки, не заработает.

2) php может генерить несущественные предупреждения. если ониу вас вылезут вместе с кодом картинки, но будет опять же ерунда. Но в принципе, можете и не отключать, если код будет отлажен и предупреждений не будет.

С ошибкой разбирайтесь...

A
На сайте с 26.09.2011
Offline
97
#7
vandamme:
adelbaew, а тимтхумб с кешированием вас не устроил, который я выложил в своей теме?

этот скрипт даже при 1-2 тыс человек/сутки создаст очень высокую нагрузку на хостинге.
в тимтхумб я дописал кеширование и если картинка уже запрашивалась, то ее скрипт не генерит, а выдает сгененированную ранее, то есть нагрузка на хостинге нулевая. А данный скрипт при каждом обращении к картинке генерит ее через php.

полностью исходники были тут http://dev.drupalworld.ru/googlepics.rar
я же говорил вам через ЛС, что в моей теме они есть.

---------- Добавлено 15.02.2015 в 20:55 ----------


эту строчку бы проверить, и зачем ее так усложнять
можно же все что в указанной папке пропускать (ваша папка js вместо моей uploads), типа так

это отличный скрипт - я его пробывал - но вот у меня он

вот так работает -

http://alpolymer.ru/timthumb.php?wm=1&src=images/slide4.jpg

но если проверить на хотлинг

http://www.free-webhosts.com/hotlinking-checker.php

вставить туда вот эту ссылку http://alpolymer.ru/images/slide4.jpg

то уже видно - что не работает - а почему - понять не могу(((

из всего я только здесь менял

RewriteEngine on


RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)?alpolymer\.ru/ [NC]
RewriteCond %{HTTP_USER_AGENT} !(googlebot-image|msnbot|psbot|slurp|yahoo-mmcrawler|bingbot|yandex) [NC]
RewriteRule (^images.*\.(bmp|gif|jpe?g|png)$) /timthumb.php?wm=1&src=$1 [L]

может что не правильно?

vandamme
На сайте с 30.11.2008
Offline
675
#8

adelbaew,

я понимаю так (на самом деле я не программист) - если картинка запрашивается не на нашем сайте alpolymer, мы отдаем водяной знак, всему остальному оригинальную картинку. Ботов исключаем, чтобы те видели оригинальные картинки.

Хотлинкинг на чужих сайтах и водяной знак в гугл-картинках одновременно работать не будут. Это паранойя, копипастеры просто скачают картинку к себе на сайт.

A
На сайте с 26.09.2011
Offline
97
#9
vandamme:
adelbaew,

я понимаю так (на самом деле я не программист) - если картинка запрашивается не на нашем сайте alpolymer, мы отдаем водяной знак, всему остальному оригинальную картинку. Ботов исключаем, чтобы те видели оригинальные картинки.

Хотлинкинг на чужих сайтах и водяной знак в гугл-картинках одновременно работать не будут. Это паранойя, копипастеры просто скачают картинку к себе на сайт.

Правильно ли я понимаю - что все работает - и если бы картинки были в выдаче гугл - то все работало?

я бы просто имел возможность проверить?

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