возможно ли как-то подменить яваскрипт-файл у браузера, чтобы например вставить в него отладку? искал в папке с кешем, но не могу его там найти да и наверное если изменить - браузер увидит что размер отличается от того что на сайте и скачает скрипт с сайта? есть одна коварная переменная на Одноклассниках я нашел в скриптах где она определяется, но не могу понять где в неё устанавливается значение как это можно отследить?
Ну как вариант... Пустить трафик через прокси и на прокси подменить уже. У Kaimi есть RegExp Proxy вот что-то подобное тебе надо. Чтоб он на нужный запрос отдал твой файл.
Возможно как вариант(нету возможности протестить): Каким-нить adblock заблоч файл скрипта. Локальный файл, который надо дебажить запускай как юзерскрипт. А по поводу обфусцированного кода в одну строку - в хроме и опере некст под венду дебагер умеет разворачивать такой код.
да не ищу я XSS ) http://odnoklassniki.ru/web/gwt/b74d4130/one.app.community.dk.gwt.dm.block.Block/C7C73A575779835D66A20650A5C3DFBE.cache.html тут 55 тысяч строк гавнокода и где-то среди них устанавливается значение $wnd.OK.tkn.token с помощью $wnd.OK.tkn.set() вот понять бы как генерится это значение
Code: function ox(a, b) { px(a, b); if (0 == jjc(b).length) { throw new Ehc(a + ' cannot be empty') } } function px(a, b) { if (null == b) { throw new wic(a + ' cannot be null') } } var adj = 'header'; var xhj = 'TKN'; function A3c(a,b){ var c,d,e,f,g; if(v3c(this)){ e=s3c.ud(this.f); if(e){ c=rd(e,iic(this.i),0); d=c==e.f-1; sd(e,c); if(d){ d6i(r3c,zjj+this.f+"' processed") } else { d6i(r3c,zjj+this.f+"' skipped"); return } } } J4c(this.f,Z$b(L$b(akc()),this.i)); !!this.g&&y5c(this.g); if((F9c(),m9c)&&!!this.j){ f=new J3c(this,a,b); gh(f,200) } else { u3c(this,a,b) } [COLOR=Red]g=(ox(adj,xhj),b.c.getResponseHeader(xhj));[/COLOR] null!=g&&!!g.length&&(b2c(),[COLOR=Red]$wnd.OK.tkn.set(g)[/COLOR],undefined) }; Дальше думаю не проблема.
ага, находил я это дальше все только хуже через отладчик находится куча вложенных функций, бОльшая часть из которых вообще ничего не делает и не возвращает g=(ox(adj,xhj),b.c.getResponseHeader(xhj)); вот тут по ходу такая логика: либо получить токен из полученных хидеров (а на ОД так и происходит - первый токен генерится, потом отправляется с запросом и в ответе приходит новый токен), либо создать новый токен ox(adj,xhj) - вроде как создать ajd = строка "header", xhj = строка "TKN" вот функция ox: PHP: function ox(a, b) { px(a, b); if (0 == jjc(b).length) { throw new Ehc(a + ' cannot be empty') } } а вот px(): PHP: function px(a, b) { if (null == b) { throw new wic(a + ' cannot be null') } } ну и ещё jjc, обрезающая пробелы и проверяющая не пустая ли строка у значения: PHP: function jjc(c) { if (c.length == 0 || c[0] > xaj && c[c.length - 1] > xaj) { return c } var a = c.replace(/^(\s*)/, maj); var b = a.replace(/\s*$/, maj); return b }