С тех пор, как несколько дней назад я разместил на своем сервере новый файл javascript, я получаю странные журналы 404. Кажется, что какой-то пользовательский агент Java конфликтует с какой-то частью jQuery (1.6.2). Я отправляю автоматическое электронное письмо всякий раз, когда кто-то набирает 404, и отправляю переменную сервера.
Http_user_agent - это Java/1.4.1_04
а request_uri выглядит следующим образом:
/frontend/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f(
И сразу после этого:
/frontend/js/]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,
Обе части javascript можно найти в минифицированный источник jQuery. В /frontend/js/
это путь к моим файлам javascript.
Я только что прочитал два похожих вопроса на StackOverflow (1 и 2), но у обоих нет решений. Я также прокомментирую там, но мне было интересно, может ли здесь быть больше людей с той же проблемой, и я решил ее.
У кого-нибудь есть подсказка?
Глядя на журналы моего собственного сервера, у меня есть несколько таких записей, разбросанных за несколько недель с нескольких разных IP-адресов. Все с похожими, но немного разными пользовательскими агентами.
Большинство, но не все IP-адреса, похоже, находятся в Румынии.
Вот образцы моих журналов:
[02/Aug/2011:23:20:32 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[03/Aug/2011:05:06:30 +0000] "GET /assets/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[04/Aug/2011:12:03:35 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_11"
[06/Aug/2011:15:34:00 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_22"
[06/Aug/2011:18:20:46 +0000] "GET /assets/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_22"
[06/Aug/2011:19:40:11 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_25"
[07/Aug/2011:07:55:24 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_20"
[10/Aug/2011:09:07:47 +0000] "GET /assets/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_22"
[14/Aug/2011:14:53:58 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[16/Aug/2011:21:04:50 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[17/Aug/2011:09:19:12 +0000] "GET /assets/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[22/Aug/2011:01:50:44 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_26"
[22/Aug/2011:19:13:00 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[26/Aug/2011:18:15:06 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[08/Sep/2011:00:00:01 +0000] "GET /assets/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[10/Sep/2011:16:09:39 +0000] "GET /assets/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[12/Sep/2011:14:50:15 +0000] "GET /assets/js/,data:c,complete:function(a,b,c)%7bc=a.responseText,a.isResolved()&&(a.done(function(a)%7bc=a%7d),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[13/Sep/2011:14:25:08 +0000] "GET /assets/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
[13/Sep/2011:16:14:05 +0000] "GET /assets/js/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f( HTTP/1.1" 200 203 "-" "Java/1.6.0_04"
Хотя я не верю, что этот заблуждающийся бот причиняет какой-либо вред, я собираюсь следовать совету этот блог и заблокировать все обращения от Java User Agents. В качестве профилактической меры вы можете сделать то же самое.
Пользовательский агент не имеет к этому никакого отношения и, разумеется, не вызывает проблем - плохой URL-адрес должен получить 404, что и являются этими запросами. Это какой-то плохо написанный бот, запрашивающий смехотворно недопустимый путь из-за серьезной ошибки синтаксического анализа (обратите внимание, что обе недопустимые части начинаются и заканчиваются на "
персонажи?).
Найдите минутку, чтобы посмеяться над бедным дураком, который так сильно потерпел неудачу с парсером js своего бота, затем продолжайте игнорировать ошибки 404 и продолжайте свой день (или заблокируйте этот пользовательский агент, если необходимо).