нужно совет профи. раскодировать 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, время: 13:57. |