нужно совет профи. раскодировать JS
приветы
на сайте travian.com оранжевая кнопка "register here for free" там есть скрытый блок "play on another world", в котором лежит список доступных серверов всё это сделано на JS, но настолько он запутан, что моих знаний не хватает его распутать а хотелось бы получить список этих серверов при парсинге страницы перлом, например сам код, я так понимаю, находится в: <script type="text/javascript" src="crypt.js?1348143434"></script> т.е. вот он конкретно там есть такой текст: self.popcontent().set("html",'<div class="loading"></div>'); вот здесь, походу, они и содержатся (если смотреть сайт без CSS, они где-то там) вот как его раскодировать, может подскажете инструменты или какой-нибудь ресурс, где прутся от раскодирования сложных кодов? |
greenwar,
Скрипт ничем не закодирован, просто сделана минификация (удалены все пробелы и табуляция, названия переменных в методах заменены на короткие). Но код в целом читаем и понятен. Сам скрипт содержит в себе 2 части: 1) MooTools (библиотека на js), её исходники можно свободно скачать это видно из начала файла:
(function(){this.MooTools={version:"1.4.4",
2) Собственно код для сайта травиана, начинается со строчки:
window.Travian = { applicationId: "travian", emptyFunction: function () { }
Копируешь начиная с этой строки в любой редактор (например: idea, webstorm) и форматируешь. Вот для наглядности фрагмент кода:
showPopup: function ()
{
var url = new URI(this.options.url);
var anchor = url.get("fragment");
if (this.anchorsMapping[anchor]) { anchor = this.anchorsMapping[anchor] }
var target = anchor + ".php";
if (url.get("query").length > 0) { target += "?" + url.get("query") }
if (this.allowedAnchors.indexOf(anchor) == -1)
{ if (this.options.anchorcheck == false) { target = this.options.url } else { return } }
var self = this; var prevwindow = $$(this.options.pop_bg); var prevcontainer = $$(this.options.pop_container);
var windowWidth = document.documentElement.clientWidth; prevcontainer[0].setStyles({ display: "block", visibility: "hidden" });
prevcontainer[0].className = anchor; var popupWidth = prevcontainer[0].getStyle("width").toInt();
var left = windowWidth / 2 - popupWidth / 2; prevwindow[0].setStyles({ opacity: "0.7", display: "block", height: $(document).getScrollSize().y });
var scroll = $(document.body).getScroll(); prevcontainer[0].setStyles({ left: windowWidth / 2 - popupWidth / 2, top: scroll.y + 100, visibility: "visible", display: "block" });
self.popcontent().set("html", '<div class="loading"></div>');
var req = new Request.HTML({ url: target, evalScripts: false, onSuccess: function (html, responseElements, responseHTML, responseJavaScript)
{
self.popcontent().set("text", "");
self.popcontent().adopt(html);
if (anchor == "tutorial") { self.startTour() }
if (self.options.insupport) { self.startSupport() }
if (responseJavaScript) { eval(responseJavaScript) }
},
onFailure: function () { self.popcontent().set("text", "The request failed.") }
});
req.send();
var close = $$(this.options.close);
close.addEvent("click", function ()
{
self.options.pop_container[0].setStyle("display", "none");
self.options.pop_bg.setStyle("display", "none"); this.removeEvents()
});
var bg = $$(this.options.pop_bg);
if (this.options.closeOnClickBackground) { bg.addEvent("click", function () { self.options.pop_container[0].setStyle("display", "none"); self.options.pop_bg.setStyle("display", "none"); this.removeEvents() }) }
},
По тому что я увидел, делается запрос на сервер и он возвращает список серверов. Дальше ты сам разбирайся :) |
ага, я уже повыкусывал и mootools и mootools.more
через этот сайт привёл к божескому виду: http://jsbeautifier.org/ вижу в коде ajax с запросом, завтра буду разгребать, спасибо большое :yes: а вот эта строка: var url = new URI(this.options.url); из чего собирается, что тут this, что тут options, а что тут url? this, это сам домен текущий, видимо? url.get("fragment"); - тоже непонятно.. эти данные берутся из mootools чтоли? |
Та посмотрите в firebug-е, или другой консоли разработчика какие идут сетевые запросы со страницы, и что в них возвращается
|
greenwar,
Запрос идет на http://travian.com/register.php, в результате возвращается html для попапа. В нем список серверов. Как сказал товарищ Gvozd, это все легко увидеть с помощью firebug (вкладка Net). |
YES!
firebug рулит я получил список серверов javascript.ru рулит всем ня! :victory: |
| Часовой пояс GMT +3, время: 16:36. |