- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева

Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
alex-nn, вот как декодировать ответ:
2. Подсчитать ключ - посмотреть файл _common.ru.js - найти что-то похожее на
var _0x840cx7=navigator[_0xa032[51]][_0xa032[50]](0,25)+($[_0xa032[53]](_0xa032[52])||_0xa032[36])+eval(_0x840cx5[_0xa032[40]]);
вот тут к примеру eval(_0x840cx5[_0xa032[40]]) - это вычисление key из пункта 1
там все может меняться, нужно искать navigator[ и потом глазками выходить на нужный кусок.
хмм, они опять его изменили (по-сравнению с 13м числом)
добавили в массив _0xa032 новых значений (было 46, теперь 72)
закодировали слова с помощью новых _0x840cx7, _0x840cx2 и т.д.
в этой строке:
раньше не было || ""
кстати, а $cookie(fuid01) чему равно?
ну и конечно же бонусы 🍿
_0x840cx1 url
_0x840cx2 params
_0x840cx3 show_error
_0x840cx4 error_popup
_0x840cx5 data
_0x840cx6 captcha_popup
_0x840cx7 key
_0x840cx8 edata
_0x840cx9 i
_0x840cxa bem_json
массив _0xa032:
0 WSLR, 1 words, 2 val, 3 b-form-input, 4 bem, 5 .b-search__input, 6 with-regions, 7 hasClass, 8 input:radio:checked, 9 find, 10 type, 11 elem, 12 b-search, 13 .b-search, 14 regions, 15 ids, 16 b-region-select, 17 .b-search__region-select, 18 slow, 19 show, 20 b-popupa, 21 .b-page__load-popup, 22 .b-page__error-popup, 23 click, 24 un, 25 hide, 26 on, 27 b-form-button, 28 findBlockInside, 29 done, 30 error, 31 captcha, 32 .b-page__captcha-popup, 33 src, 34 image, 35 url, 36 , 37 submit, 38 off, 39 form, 40 key, 41 extend, 42 focused, 43 yes, 44 setMod, 45 blocked, 46 href, 47 location, 48 http://block.yandex.ru, 49 data, 50 substr, 51 userAgent, 52 fuid01, 53 cookie, 54 length, 55 charCodeAt, 56 fromCharCode, 57 ^%7B.*%7D$, 58 match, 59 parseJSON, 60 load, 61 trigger, 62 wslr, 63 channel, 64 .b-wordstat-content__content, 65 apply, 66 update, 67 DOM, 68 success, 69 POST, 70 /stat/, 71 json, 72 ajax
if (data in data) {
var key = navigator[userAgent][substr](0, 25) + ($[cookie](fuid01) || "") + eval(data[key]);
var edata = "";
for (var i = 0; i < data[data][length]; i++) {
edata = edata + String[fromCharCode](data[data][charCodeAt](i) ^ key[charCodeAt](i % key[length]))
}
var bem_json = {
content: ""
};
if (edata[match]("^%7B.*%7D$")) {
try {
edata = decodeURIComponent(edata);
bem_json = $[parseJSON](edata)
} catch (e) {}
}
можно довольно легко посмотреть, что закопано в этом хитровыделанном массиве
var _0хa032 = ["\x57\x53\x4C\x52", "\x77\x6F\x72\x64\x73", "\x76\x61\x6C", "\x62\x2D\x66\x6F\x72\x6D\x2D\x69\x6E\x70\x75\x74", "\x62\x65\x6D", "\x2E\x62\x2D\x73\x65\x61\x72\x63\x68\x5F\x5F\x69\x6E\x70\x75\x74", "\x77\x69\x74\x68\x2D\x72\x65\x67\x69\x6F\x6E\x73", "\x68\x61\x73\x43\x6C\x61\x73\x73", "\x69\x6E\x70\x75\x74\x3A\x72\x61\x64\x69\x6F\x3A\x63\x68\x65\x63\x6B\x65\x64", "\x66\x69\x6E\x64", "\x74\x79\x70\x65", "\x65\x6C\x65\x6D", "\x62\x2D\x73\x65\x61\x72\x63\x68", "\x2E\x62\x2D\x73\x65\x61\x72\x63\x68", "\x72\x65\x67\x69\x6F\x6E\x73", "\x69\x64\x73", "\x62\x2D\x72\x65\x67\x69\x6F\x6E\x2D\x73\x65\x6C\x65\x63\x74", "\x2E\x62\x2D\x73\x65\x61\x72\x63\x68\x5F\x5F\x72\x65\x67\x69\x6F\x6E\x2D\x73\x65\x6C\x65\x63\x74", "\x73\x6C\x6F\x77", "\x73\x68\x6F\x77", "\x62\x2D\x70\x6F\x70\x75\x70\x61", "\x2E\x62\x2D\x70\x61\x67\x65\x5F\x5F\x6C\x6F\x61\x64\x2D\x70\x6F\x70\x75\x70", "\x2E\x62\x2D\x70\x61\x67\x65\x5F\x5F\x65\x72\x72\x6F\x72\x2D\x70\x6F\x70\x75\x70", "\x63\x6C\x69\x63\x6B", "\x75\x6E", "\x68\x69\x64\x65", "\x6F\x6E", "\x62\x2D\x66\x6F\x72\x6D\x2D\x62\x75\x74\x74\x6F\x6E", "\x66\x69\x6E\x64\x42\x6C\x6F\x63\x6B\x49\x6E\x73\x69\x64\x65", "\x64\x6F\x6E\x65", "\x65\x72\x72\x6F\x72", "\x63\x61\x70\x74\x63\x68\x61", "\x2E\x62\x2D\x70\x61\x67\x65\x5F\x5F\x63\x61\x70\x74\x63\x68\x61\x2D\x70\x6F\x70\x75\x70", "\x73\x72\x63", "\x69\x6D\x61\x67\x65", "\x75\x72\x6C", "", "\x73\x75\x62\x6D\x69\x74", "\x6F\x66\x66", "\x66\x6F\x72\x6D", "\x6B\x65\x79", "\x65\x78\x74\x65\x6E\x64", "\x66\x6F\x63\x75\x73\x65\x64", "\x79\x65\x73", "\x73\x65\x74\x4D\x6F\x64", "\x62\x6C\x6F\x63\x6B\x65\x64", "\x68\x72\x65\x66", "\x6C\x6F\x63\x61\x74\x69\x6F\x6E", "\x68\x74\x74\x70\x3A\x2F\x2F\x62\x6C\x6F\x63\x6B\x2E\x79\x61\x6E\x64\x65\x78\x2E\x72\x75", "\x64\x61\x74\x61", "\x73\x75\x62\x73\x74\x72", "\x75\x73\x65\x72\x41\x67\x65\x6E\x74", "\x66\x75\x69\x64\x30\x31", "\x63\x6F\x6F\x6B\x69\x65", "\x6C\x65\x6E\x67\x74\x68", "\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74", "\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65", "\x5E\x25\x37\x42\x2E\x2A\x25\x37\x44\x24", "\x6D\x61\x74\x63\x68", "\x70\x61\x72\x73\x65\x4A\x53\x4F\x4E", "\x6C\x6F\x61\x64", "\x74\x72\x69\x67\x67\x65\x72", "\x77\x73\x6C\x72", "\x63\x68\x61\x6E\x6E\x65\x6C", "\x2E\x62\x2D\x77\x6F\x72\x64\x73\x74\x61\x74\x2D\x63\x6F\x6E\x74\x65\x6E\x74\x5F\x5F\x63\x6F\x6E\x74\x65\x6E\x74", "\x61\x70\x70\x6C\x79", "\x75\x70\x64\x61\x74\x65", "\x44\x4F\x4D", "\x73\x75\x63\x63\x65\x73\x73", "\x50\x4F\x53\x54", "\x2F\x73\x74\x61\x74\x2F", "\x6A\x73\x6F\x6E", "\x61\x6A\x61\x78"];
Достаточно ввести строку в консоли хрома, а потом еще раз обратиться к этой переменной _0xa032
Ну или еще проще - ввести то же самое, но без var.
это, на самом деле -
_0xa032
["WSLR", "words", "val", "b-form-input", "bem", ".b-search__input", "with-regions", "hasClass", "input:radio:checked", "find", "type", "elem", "b-search", ".b-search", "regions", "ids", "b-region-select", ".b-search__region-select", "slow", "show", "b-popupa", ".b-page__load-popup", ".b-page__error-popup", "click", "un", "hide", "on", "b-form-button", "findBlockInside", "done", "error", "captcha", ".b-page__captcha-popup", "src", "image", "url", "", "submit", "off", "form", "key", "extend", "focused", "yes", "setMod", "blocked", "href", "location", "http://block.yandex.ru", "data", "substr", "userAgent", "fuid01", "cookie", "length", "charCodeAt", "fromCharCode", "^%7B.*%7D$", "match", "parseJSON", "load", "trigger", "wslr", "channel", ".b-wordstat-content__content", "apply", "update", "DOM", "success", "POST", "/stat/", "json", "ajax"]
Название переменной каждый раз разное, но это не проблема, т.к. в этом массиве закопано название ихней же важной функции WSLR, которая жестко вшита во все их скрипты. Поэтому искать строку в тексте файла http://wordstat.yandex.ru/js/_common.ru.js?b=196641537
очень легко. Искать нужно по тексту
. В таком виде эта строчка встречается только в этом месте.И да, путь к файлу, судя по наличию параметра "b=196641537", думаю, тоже скоро поменяют, т.к., похоже, это название очередной версии файла.
Ну и также, считаю, что название функции fluid01 уже говорит само за себя - есть предположение что она действительно будет "текучей", и ее будут регулярно менять. Не говоря уже об остальном коде, который хитрыми манипуляциями превращается из текста в исполняемый код.
fluid01 - это кука
раньше не было || ""
кстати, а $cookie(fuid01) чему равно?
Если ты не знаешь что такое $cookie(fuid01), значит это ($[cookie](fuid01) || "") яндекс добавил специально для тебя :)
fluid01 - это кука
Скажем так, пока - да. И хрен его знает, во что оно превратится через неделю.
А для желающих поразбираться с кодом, привожу код функции, приведенный к более-менее человеко-понятному виду.
от себя добавил async:false - побаловаться
Так и не понял, как адекватно отобразить цветной js-код, чтобы квадратные скобки не заменялись на фигню типа этой
Дело короче так:
В wordstat.yandex есть большая дыра, о которой яндексойды даже и не догадываются,
и вряд ли найдут в ближайшее время (ну может через полгодика дотяпуют конечно), т.к. наблюдаю за их усердным трудом в течении уже недели и смех разбирает (при усложнении ключа мой скрипт даже не чихнул), только в этой ветке увидел новшества.
Когда кому-то надоесть ломать вордстат - добро пожаловать в личку.
Поделюсь за вознаграждение :-)
Уже неделю Я.Вордстат периодически тупо перестаёт работать (не грузиться нечего кроме главной).. Это временные баги?
Подскажите, как получить вторую куку - yandexuid?
fuid01 - получаю, с ней всё в порядке.
Но без yandexuid, похоже, сходу за бота считает и капчу начинает выводить.
yandexuid вроде на http://kiks.yandex.ru/system/fc06.html выдают.
Но там всё через флеш, в php не засунешь.
Как быть?
upd: yandexuid нашел откуда взять (может он и не нужен), но постоянно капчу спрашивает всё равно.
Есть идеи почему?
Заточили парсер на phantomjs, все нормуль отрабатывает, но капчу все равно вылавливает частенько.
Если ты не знаешь что такое $cookie(fuid01), значит это ($[cookie](fuid01) || "") яндекс добавил специально для тебя :)
я знаю, что fuid01 это кука, я вордстат паршу уже не 1 год
меня интересовал результат с $cookie
ты утверждаешь, что это пустышка?