BingBot получает ошибку 404 при существующей странице

123
I
На сайте с 04.06.2010
Offline
81
#11
izbushka:
Еще раз. Клиент (бот, броузер) не передает ни HTTP_HOST, ни SERVER_NAME. Он передает только HOST. Если он его не передает, то HTTP_HOST будет пустой. SERVER_NAME (если Apache) зависит от UseCanonicalName, и будет либо браться из конфига сервера, либо тоже из заголовка HOST.

Я так и не понял что вы хотите..
Надо отдавать то, что на самом деле есть. Если страницы нет - 404, если есть - 200. Какая разница кто это, бот или не бот?

Так в том-то и загвоздка, что для access.log прописал формат записи с выводом Host, HTTP_HOST, SERVER_NAME:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Host}i\" \"%{HTTP_HOST}e\" \"%{SERVER_NAME}e\"" combined

А этот паразит в некоторых случаях где-то теряет HTTP_HOST (с Ваших слов понял, что может быть проблема в Apache)

- 157.55.32.100 - - [02/Oct/2013:18:36:08 +0400] "GET /page1.php?id=1 HTTP/1.1" 200 5122 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg1.site.ru" "www.reg1.site.ru" "www.reg1.site.ru"
- 157.55.32.100 - - [02/Oct/2013:18:36:08 +0400] "GET /page2.php?id=2 HTTP/1.1" 200 4864 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg2.site.ru" "www.reg2.site.ru" "www.reg2.site.ru"
- 157.55.32.100 - - [02/Oct/2013:18:35:53 +0400] "GET /page3.php?id=3 HTTP/1.1" 404 315 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg3.site.ru" "-" "-"
- 157.55.32.100 - - [02/Oct/2013:18:35:53 +0400] "GET /page4.php?id=4 HTTP/1.1" 404 315 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg4.site.ru" "-" "-"

Т.е. по логам - 1, 2 запись - все отработало правильно, Apache перешел в соответствующую директорию c:/www/reg - где обрабатываются все регионы

А вот 3 и 4 запись - показывают пустой HTTP_HOST, но не пустой Host www.reg3.site.ru и www.reg4.site.ru Соответственно переходят в дефолтную директорию, где и получают свою законную 404 страничку.

UseCanonicalName стоит Off.

По ходу общения с Вами, существенно сузился круг подозреваемых :)

Вопрос уже получается следующий: почему у части запросов от BingBot "теряется" HTTP_HOST, при непустом Host?

Всё, что не убивает, делает Вас сильнее (c) Платон Щукин
izbushka
На сайте с 08.06.2007
Offline
110
#12

Вот тут и тут можете посмотреть примеры заголовка host и переменных HTTP_HOST, SERVER_NAME

I
На сайте с 04.06.2010
Offline
81
#13
izbushka:
Вот тут и тут можете посмотреть примеры заголовка host и переменных HTTP_HOST, SERVER_NAME

Внимательно-внимательно прочитал обе ссылки плюс "вправо-влево" от них. В довесок ко всему еще раз глянул логи.

Статьи 100%-ной ясности не внесли. Туманно маячит, что у запросов от бота которые вылетели мог быть некорректно сформулирован заголовок и соответственно HTTP_HOST Апачем не вырезался (при том, что параметр Host в заголовке присутствует) - как итог ошибка 404. Бот с того же IP адреса через некоторое время передает запрос, который абсолютно корректно отрабатывается.

Посмотрел копии логов с начала года - такая ситуация пошла с середины сентября (никаких изменений последние полгода не вносилось)

На итог получается - BingBot'ом так и задумано, значит ошибка 404 есть правильно.

Братцы, развейте сомнения, скажите что я молодец, все понял правильно и наконец-то могу взять с полки пирожок :)

izbushka
На сайте с 08.06.2007
Offline
110
#14
Iggo:
Туманно маячит, что у запросов от бота которые вылетели мог быть некорректно сформулирован заголовок

Я не думаю, что у Bing бота, если это он (смотрели IP?), "некорректно сформулирован заголовок".

Скорее всего, это вполне корректные запросы, например, по IP. Где он берет такие ссылки? Сложно сказать, видимо, где-то берет. В таком случае он должен попадать на DefaultHost в апаче. Можете поставить с него редирект на правильный домен, если хотите.

S2
На сайте с 16.12.2007
Offline
44
#15
izbushka:
Я не думаю, что у Bing бота, если это он (смотрели IP?), "некорректно сформулирован заголовок".

+1

Iggo, cпасибо за ответы

Iggo:

Вопрос уже получается следующий: почему у части запросов от BingBot "теряется" HTTP_HOST, при непустом Host?

Я бы на вашем месте переформулировал вопрос - почему мой Апач при определенных обстоятельствах выдает пустой "HTTP_HOST". Потому что следующий вопрос не "может ли мне это вылезти боком" а "Когда вылезет, сколько ущерба будет :("

И начал копать

1 Что изменилось на сервере (версии apache, php etc) непосредственно перед тем, как начали появляться ошибки.

2 Если хоть в 1м .htaccess поддоменов есть редирект-директивы, переключил бы лог редиректов в отладку и покурил

3 Подвеслил бы на дефолтную страницу на пару дней дамп заголовка в файл (php getallheaders() ) и покурил бы результат.

4 У поддоменов свои IP или все на 1м? Менялся ли IP/хостер/DNS перед возникновением проблем?

5 Что будет, если запросить страницу на поддомене с левым портом? через https? через https с левым портом?

6 Что bingbot запрашивал непосредсвенно до и после получения 404 ошибки?

Кстати, что за дефисы в вашем логе перез IP? просто отбили каждую строчку?

PS. Если bingbot совсем задосил, тормозните его в robots.txt через Crawl-delay


User-agent: bingbot
User-agent: msnbot
Allow: /
Crawl-delay: 3
I
На сайте с 04.06.2010
Offline
81
#16
izbushka:
Я не думаю, что у Bing бота, если это он (смотрели IP?), "некорректно сформулирован заголовок".
Скорее всего, это вполне корректные запросы, например, по IP. Где он берет такие ссылки? Сложно сказать, видимо, где-то берет. В таком случае он должен попадать на DefaultHost в апаче. Можете поставить с него редирект на правильный домен, если хотите.

BingaBonga - точняк: в Verify Bingbot Tool проверил IP - действительно признали своего

Если бы в Host стоял тупо наш IP - он бы попал в Default, но HOST в логе остался бы. Глянул только что логи - реденько так попадаются Host="xxx.xxx.xxx.xxx:80" в основном школьники ломятся к phpMyAdmin

Если бы с того же IP бота не проходили и корректные запросы - грешил бы на Апач.

Но ведь он паразит просит разные поддомены (версия, что просят просто IP отпадает - Host показывал бы первый дефолтовый домен)

Redirect на основной домен ставить не хочется - ибо нефиг через IP лазать!!! :)

Спасибо за направления, кое-что критичное подправил, остался уже чисто академический интерес.

Получится разобраться и победить - отпишусь!!!

---------- Добавлено 03.10.2013 в 21:50 ----------

Sanches27:
+1

Iggo, cпасибо за ответы



Я бы на вашем месте переформулировал вопрос - почему мой Апач при определенных обстоятельствах выдает пустой "HTTP_HOST". Потому что следующий вопрос не "может ли мне это вылезти боком" а "Когда вылезет, сколько ущерба будет :("

И начал копать
1 Что изменилось на сервере (версии apache, php etc) непосредственно перед тем, как начали появляться ошибки.

2 Если хоть в 1м .htaccess поддоменов есть редирект-директивы, переключил бы лог редиректов в отладку и покурил

3 Подвеслил бы на дефолтную страницу на пару дней дамп заголовка в файл (php getallheaders() ) и покурил бы результат.

4 У поддоменов свои IP или все на 1м? Менялся ли IP/хостер/DNS перед возникновением проблем?

5 Что будет, если запросить страницу на поддомене с левым портом? через https? через https с левым портом?

6 Что bingbot запрашивал непосредсвенно до и после получения 404 ошибки?

Кстати, что за дефисы в вашем логе перез IP? просто отбили каждую строчку?

PS. Если bingbot совсем задосил, тормозните его в robots.txt через Crawl-delay

User-agent: bingbot
User-agent: msnbot
Allow: /
Crawl-delay: 3

Спасибо за помощь, отвечаю:

1 Изменений не было около полугода (apache, php, hosts, mysql, .htaccess)

2 Редиректов не было нигде

3 ПОЖАЛУЙ ВОСПОЛЬЗУЮСЬ!!! Как понял - запись в файл значений getallheaders()

4 У поддоменов один IP. DNS не менялся, хостер тот же, сервер свой Collocation. Правда месяц назад хостер собирался менять свои маршрутизаторы, хабы или еще какое-то труднопроизносимое :)

5 Слушает только 80 порт, соответственно выдает Веб страница недоступна

6 Когда что - просит разные страницы разных поддоменов. Системы для "поломки" уловить не смог

Дефисы - это мне показалось, что так будет читабельнее и красивше:)

Crawl-delay энто здорово, но на сотне поддоменов он же эти 3 секунды для каждого брать будет.

P.S. соберусь с мыслями и воспользуюсь советом №3 - главное, чтоб этот подлец никуда не сбег. А то сейчас глянул логи - с 18:00 не появлялся. Может рабочий день у него закончился:)

I
На сайте с 04.06.2010
Offline
81
#17

Ну вот, когда коту делать нечего - он сидит и ... кодит

Занялся 3-м вариантом

В дефолтном блоке есть .htaccess:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_URI} !^(.*)/index\.php.*
RewriteRule (.*) /index.php [R=301,L]

В index.php (единственный файл который выводится всегда и на который соответственно редиректится все) в конце добавил

<?php
$f=fopen("log\my.log",'a');
flock ($f,2);
$HDate=Date('Y-m-d H:i:s');
fwrite($f,"--- $HDate\n");
foreach (getallheaders() as $name => $value)
{
fwrite($f,"$name: $value\r\n");
};
fwrite($f,"\r\n");
fclose($f);
?>

Ввел несуществующий поддомен+несуществующую страницу zzz.site.ru/pageX.php, соответственно перебросило на zzz.site.ru/index.php

В my.log увидел аж три записи:

--- 2013-10-04 01:23:11
Host: zzz.site.ru
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4

--- 2013-10-04 01:23:11
Host: zzz.site.ru
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Accept: */*
Referer: http://zzz.site.ru/index.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4

--- 2013-10-04 01:23:11
Host: zzz.site.ru
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4

Пока не понял, с чем связано 3 записи - м.б. установленный у меня RDS бар

Зато вот пошел BingBot:

access.log:

157.56.93.83 - - [04/Oct/2013:01:24:58 +0400] "GET /pageN.php HTTP/1.1" 301 342 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg1.site.ru" "-" "-"

А вот что этот гаденыш оставил в my.log (всего 1 запись)

--- 2013-10-04 01:24:58
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: no-cache
Accept: */*
Accept-Encoding:
From: bingbot(at)microsoft.com
Host: www.reg1.site.ru
User-Agent: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

Для www.reg1.site.ru четко прописана секция в httpd.conf, но понятно, что он туда не попадает.

izbushka, Sanches27, уважаемые, есть мысли?

I
На сайте с 04.06.2010
Offline
81
#18

Ситуация ровно та же, что и описана постом выше. Сейчас с регулярностью страничка в полчаса BingBot получает 301 редирект. На выходных специально зарегился в Webmaster Bing. По их статистике - соответственно появились записи с 301 (раньше они кучковались в 404 ошибке).

izbushka, Sanches27, уважаемые, приведенная информация хоть на что-то наталкивает?

IL
На сайте с 20.04.2007
Offline
435
#19
Iggo:
izbushka, Sanches27, уважаемые, приведенная информация хоть на что-то наталкивает?

Не увидел REQUEST_URI .. К чему запрос происходит?

p.s. А зачем в конце делать редирект на index.php вместо внутреннего реврайта и возврата 404 после обработки, если страницы не существует?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
I
На сайте с 04.06.2010
Offline
81
#20
ivan-lev:
Не увидел REQUEST_URI .. К чему запрос происходит?
p.s. А зачем в конце делать редирект на index.php вместо внутреннего реврайта и возврата 404 после обработки, если страницы не существует?

ivan-lev, попробую кратко сформулировать суть вопроса без предыдущего обсуждения

BingBot периодически "направляется" Апачем в дефолтную директорию. При этом для страницы, которую он запрашивает, существует и поддомен и сама страница. Более того, в большинстве случаев тот же BingBot получает запрашиваемые страницы.

123

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