08.11.2012 18:10
 0просмотров 44 4

Ложка дёгтя

Обратим внимание на один момент в коде:
if (line.indexOf("mailto=") > -1)
Напомню, это условие для поиска ника на странице персонажа. Это кусочек кнопки "написать письмо". Казалось бы, что в этом плохого? А то, что этой кнопки нет для заблокированных персонажей. Соответственно, если у персанажа есть достижение тыквика, но он заблокирован, то он попадёт в список, но без ника, и достижение будет в первом столбике - где ники ещё живых.
UPD: Такая кнопка у заблокированных всё-таки есть. Спасибо келл за поправку!

Ещё одна возможная проблема: текст, по которому мы ищем ник и достижение могут встретиться в информации персонажа. Не слишком критично, если какая-то ненужная информация попадёт в ещё один столбик, но если в связи с этим произойдёт ошибка и достижение этого персонажа не попадёт в наш файл, будет неприятно. Один из вариантов защиты от таких ошибок показан здесь:
if (line.indexOf("'") > 0) line = line.substring(0, line.indexOf("'"));
else continue;
"mailto=" мы встретили, но если после ника нет закрывающего символа - апострофа - мы ничего не добавляем в переменную buffer.
Другой вариант - проверять, когда начинается личная информация, и после этого никак строки не обрабатывать, просто догрузить страницу и перейти к следующей.

Очередной минус этого бота (если сравнивать с встраиваемыми в браузер скриптами) - его не просто приспособить для решения других задач. Он может беспрепятственно гулять по страницам персонажей или на форуме, но в протокол передач, к примеру, попасть не сможет. Для этого сначала нужно зарегистрироваться. А для этого нужно ввести логин-праоль и нажать кнопку "Войти". Как я уже говорил, это выходит за рамки этой темы, хотя технически никаких проблем тут нет. К тому же зарегистрированный бот будет имитировать присутствие игрока, а это запрещено правилами игры.
Комментарии
1 / 09.11.2012 12:09 / Феррара [11] ?
Очень интересный блог, спасибо!  
2 / 09.11.2012 16:12 / келл [9] ?
Цитата: FireSwarm
А то, что этой кнопки нет для заблокированных  
Эмм, есть. http://www.heroeswm.ru/pl_info.php?id=1821272
Более того, она есть даже у несуществующих персонажей
http://www.heroeswm.ru/pl_info.php?id=ololo

Писал скрипт на php, оставалось только запуск настроить, как Элементаль написал, что ему базу скинули... :(

А так интересно было почитать  
3 / 09.11.2012 16:24 / FireSwarm [10] ?
Цитата: келл
Эмм, есть. http://www.heroeswm.ru/pl_info.php?id=1821272
Ух ты, действительно есть. Поспешил))) Спасибо за поправку.
Тогда всё лучше, чем я думал  
4 / 16.11.2013 18:09 / Monsieur [13] ?
Спасибо, интересный блог.

Возможность комментировать доступна после регистрации