Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определение количества плагинов (https://javascript.ru/forum/misc/3181-opredelenie-kolichestva-plaginov.html)

Александр 2009 25.03.2009 13:38

Определение количества плагинов
 
Здравствуйте!
Возможно мой вопрос покажется вам странным, но очень нужен подобный код.
В последнее время поисковые боты стали распозновать JS, чего бы очень не
хотелось.
Я придумал, метод шифрования с ключом. Вот ключ-цифру мне и нужно создать т.о.,
чтобы бот не смог распознать ключ, а браузер да. Ключ-переменная должна быть все время
одинаковой, например 1 для браузера и 0 или -1 для бота.
Мне пришло в голову только один вариант, это определение количества
установленных плагинов в браузере, т.к. я подозреваю, что у поисковых ботов
таких плагинов не будет.
Тогда у браузеров количество плагинов всегда будет >0, а у бота=0
С Firefox все просто navigator.plugins.lenght, а вот с IE и оперой проблема.
Посоветуйте решение проблемы.
Спасибо
Возможно вы что-то еще посоветуете!

Gvozd 25.03.2009 15:38

Цитата:

Сообщение от Александр 2009
В последнее время поисковые боты стали распозновать JS, чего бы очень не
хотелось.

откуда такая информация? что-то слабо верится чтобы это было правдой.
а вообще, лучше вам решать задачу серверными силами, ибо ЕСЛИ поисковые боты выполняют JS, то они могут и эмулировать любое окружение.
зато заголовок User-Agent они посылают исправно и правдиво.
вот и фильтруйте на сервере что посылать людям, а что ботам.правда этот трюк есть незаконным для поисковиков.
И в конце-концов, зачем вам понадобилось блокировать JS от поисковиков?

Александр 2009 25.03.2009 19:05

Боты уже года два, как научились испольнять js, с каждым месяцем они испольняют js все качественнее. Для этого у каждой поисковой системы есть спец боты, которые эмулируют почти все, Юзер Агент чаще всего берут от IE, подставляют вымышленный реферер, и определить такого бота можно только по частоте захода на сайт и по хуизу. такие спец боты плюют на robots.txt и на nofollow.
С помощью JS я ставлю рекламу! А например гугл бот автоматически понижает рейтинг сайта из-за рекламы, если только это не реклама гугладс.

Поэтому например если с помощью Js определить стоит ли на браузере флеш, и получить true, т.е. =1, то у спец бота, который испольняет js вряд ли стоит флеш и у него будет false.
Как я уже писал для firefox проблем нет(navigator.plugins), но для Ie я столкнулся с проблемой определить установлен ли флеш для IE.
Помимо флеша можно определять квиктайм и т.д.
Поэтому лучшим способом было бы определить количество плагинов в браузере.

Gvozd 25.03.2009 19:20

а откуда такая у вас информация?
требую пруфлинка.
я конечно не спец в индексаторах, но насколько я знаю, все честные индексаторы(гугл,яша,и еще кууча поисковиков) имеют собственные юзер-агенты для ботов, а не подделываются под какой-то браузер.
ИМХО с юзер-агентом осла к вам могут ходить только честные пользователи, либо нечестные боты(парсеры конкурентов, которые стремятся украсть контент).
но даже, если к вам все-таки ходят поисковики, и все-таки выполняют ваш JS(ИМХО они его только анализировать смогут, а не выполнить), то либо у них собственный движок интепретатора, который вам правды все равно не расскажет, либо стоит под виртуалкой какой-нибудь браузер(делаю ставку что мозилла) модифицированный. в таком случае вы его тоже навряд ли отличите от обычного пользователя.
Вывод:наиболе адекватная мера борьбы с такими поисковиками-сбор ихних IP, и выдача другого контента.
IMHO: считаю что проблема выполнения скриптов(а также подмена ими User-Agent) ботами основных поисковиков надумана и высосана из пальца. и буду так считать, до тех пор пока не увижу пруфлинк на упоминание этого феномена. если они это делают уже два года, то должно было появится куча статей на эту тему. я ни одной не нашел

Алесандр 2009 25.03.2009 19:37

К сожалению я не такой спец по JS, иначе бы не задавал вопрос, и я могу не знать, какие могут быть сложности у спец ботов, чтобы эмулировать полностью браузер. на чем они могут заткнуться. Вряд ли они умеют испольнять Ajax, но проблема в том, что Ajax не умеют испольнять старые браузеры.
А мне жалко терять пользователей.
Поэтому желательно, чтобы код работал в IE>=6.0, Firefox>=1, Opera >=7

Gvozd 25.03.2009 19:43

вот еще.
если вам понижают рейтинг за рекламу, то это совсем не значит, что для этого надо выполнять JS
для этого достаточно прочесть ссылки скриптов, и проверить по базе какая из них ведет на рекламную сеть.
еще можно проверить на вхождение всяких "универсальных" кусков кода всплывающей и нетонущей рекламы
в случае же рекламы необнаруживаемой этими двумя способами, способов ее найти автоматически, даже выполняя JS нету. как вы опеределите, что эта приатаченная картинка есть еркламный банер, а не например заголовок сайта, меняющийся от времени суток.ИМХО, никак.

для обхода таких бнероопределяющих конструкций, посоветовал бы шифровать ссылки на банерообменки(динамически атач тегов script,ссылка с перенаправлением), и шивровать скрипты, отвечающие за рекламу(например packer-ом).после этого сравнтиельный анализ не должен выявлять у вас рекламу.

Александр 2009 25.03.2009 19:46

Итак первые два спец бота это ask, притом с разным ЮзерАгентом, третий это msn, последний гуглбот.
Запросов столько приходит от этих спец ботов, что это просто не могут быть реальные люди!

Код:

66.235.124.132 - - [25/Mar/2009:05:22:55 -0500] "GET /drg.php?pzapros=brf HTTP/1.1" 200 31 "http://URL" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20070308 Minefield/3.0a1"
66.235.124.132 - - [25/Mar/2009:06:37:21 -0500] "GET /drg.php?pzapros=brf HTTP/1.1" 200 31 "http://URL" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20070308 Minefield/3.0a1"
131.107.0.112 - - [25/Mar/2009:07:00:53 -0500] "GET /hrg.php?pzapros=brf HTTP/1.1" 200 31 "http://URL" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322)"
74.125.75.20 - - [25/Mar/2009:09:54:50 -0500] "GET /hrg.php?pzapros=brfhttp://www.google.com/searchque;hl=enamp;q=bmyybd+cacxve+++fi+ HTTP/1.1" 200 31 "URL" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"


Александр 2009 25.03.2009 19:48

Да втом-то и проблема, если брайзер сможет расшифровать рекламу, то и спец боты это смогут(
Так, что мне бы использовать такую бы функцию в JS, которую бы точно не смогли прочесть боты

Gvozd 25.03.2009 19:52

Цитата:

Сообщение от Алесандр 2009
и я могу не знать, какие могут быть сложности у спец ботов, чтобы эмулировать полностью браузер. на чем они могут заткнуться.

вы не поверите.я тоже не знаю.потому что впервые слышу такую ахинею, что они выполняют JS

Цитата:

Сообщение от Алесандр 2009
Ajax не умеют испольнять старые браузеры.
А мне жалко терять пользователей.

делайте проверку на наличие Ajax-а, и в случае его невозможности считаете пользователя ботом.
лучше не показать рекламу живому пользователю, чем показать ее боту, в вашей ситуации

Gvozd 25.03.2009 19:56

Хорошо.
похоже что это все-ткаи боты поисковиков.
по крайней мере whois-ы это подтверждают.
с чего вы решили что они выполняют JS?

Александр 2009 25.03.2009 20:12

Код:

hrg.php?pzapros=brfhttp://www.google.com/searchque;hl=enamp;q=bmyybd+cacxve+++fi+
Вот php срабатывает из зашифрованного яваскрипта, при этом меняется ? на que; и & amp; Этого нет в явном виде в яваскрипте. Все зашифрованно(

А подскажите как проверить наличие ajax? для браузеров, которые я перечислил выше?

Gvozd 25.03.2009 20:23

Цитата:

Сообщение от Александр 2009
А подскажите как проверить наличие ajax? для браузеров, которые я перечислил выше?

да как для любого другого.
пробуете создать объект xmlhttpreauest-а, и обрачиваете все это дело в try-catch
если программа вошла в самый внутренний catch, значит не удалось создать объект никаким из способов
это ж классический код, с которого начинается изучение Ajax

Гость 25.03.2009 20:47

http://habrahabr.ru/blogs/searchengines/30735/
http://googlewebmastercentral.blogsp...tml-forms.html
http://unmaskparasites.com/security-...-hidden-links/

Александр 2009 25.03.2009 21:12

Спасибо) попробую!)

Александр 2009 26.03.2009 00:05

Вроде бы сделал) достаточно простой код, но пока еще не нашел ни одного браузера, где бы это не работало, может я в чем-то ошибся)?

<script language="javascript" type="text/javascript">
var request = false;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = false;
}
}
}

if (!request)
alert("Error initializing XMLHttpRequest!");
else
{
request.open("GET", "/", true);
request.send(null);
document.write("Code="+request.readyState);
}
</script>

Gvozd 26.03.2009 00:08

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

Александр 4 26.03.2009 00:10

Жаль исправить нельзя( code закрыть забыл.
Итак, как я понял если убрать request.send(null); то все время будет Code=1

Андрей Параничев 26.03.2009 00:11

Gvozd,
А что такого невозможного в выполнении ботами поисковиков JavaScript? Его даже браузеры на мобильных выполняют, а ведь у гугла есть свой Chromium и отдельный JavaScript-движок. Парсить страницы не plain text'ом, а распарсеным HTML — не такая уж и невыполнимая задача.

Другой вопрос, что делать этого не станут, ведь слишком много динамических элементов страницы выполняют код в контексте текущего документа, что совершенно не интересует поисковика.

Gvozd 26.03.2009 00:19

Андрей Параничев,
ну, я и отталкивался от нецелесообразности по нагрузке.
хотя, прочтиав статью выше, полагаю, что исполнение JS-вполне может быть выборочным.например пропускать все действия с DOM-ом, не генерящих новых ссылок.ну, и еще всякого разного можно пропустить.
а впринципиальной возможности самой, я не сомневаюсь, ибо видел интепретатор для JS написанный на PHP(не проверял).
но вот целесообразность полного выполнения JS сомнительна.
PS если выполнение JS-а поисковиками не затрагивает DOM, то можно делать проверку путем различных манипуляций с DOM-ом.
к тому же ссылки можно по кускам склеивать например во временную тиекстовую ноду, и только после получения ссылки(поисковик ее не увидит, если не вполнит опреации с DOM-ом) сувать ее пользователю

Александр 2009 26.03.2009 00:41

Gvozd, Вы конечно про нецелесобразность правы! Именно поэтому сначала приходит бот, который просто скачивает html страницу, ее анализируют на сервере, и если страница оказалась подозрительной, то на нее уже приходит спец бот, и уже шмонает ее по полной! Спец бот может прийти и через месяц. Но сейчас компы стали такие мощные, что проверять сайты с большим PR можно и чаще, чем раз в месяц.


Часовой пояс GMT +3, время: 05:43.