Задать вопрос
  • Чем расшифровать этот javascript?

    Stalker_RED
    @Stalker_RED
    Поставить точки останова, в дебаггере видно будет значение переменных.

    Если нужен сам исходник, то можно нагенерировать список автозамен. А автоматизированный инструмент - хз.

    Еще можно просто повыводить их в консоль:

    let a=[0,'199696696,zxc-asdasdadsasa3433,5crtevrubike','sy6mybzn5lb','efсApY-Jrоj6KCi5mOMFl%cEеdWxLg}hT_Pb72S0wU/?vtXH9DBN1Iаz{8VsZ4QkRGu:q3=yo&n.a',window,5,6096];
     
     let s=a[3];
     let n=a[4][s[74]+s[76]+s[44]+s[14]+s[29]+s[76]+s[45]+s[72]+s[8]];
     let h=a[4][s[31]+s[14]+s[59]+s[45]+s[72]+s[8]+s[71]];
     let o=a[4][s[20]+s[72]+s[22]+s[76]+s[45]+s[14]+s[72]+s[74]][s[72]+s[8]+s[14]+s[29]+s[14]+s[74]];
    
    console.log({n,h,o})
    Ответ написан
    Комментировать
  • Чем расшифровать этот javascript?

    Seasle
    @Seasle Куратор тега JavaScript
    Руками

    let oo = {
      log: ["a", "d", "l"],
      getLatest() {
        if (this.log.length === 0) {
          return undefined;
        }
        return this.log[this.log.length - 1];
      },
      getFirst() {
        if (this.log.length === 0) {
          return undefined;
        }
        return this.log[0];
      },
    };
    
    function dd() {
      if (
        navigator.userAgent.match(/webOS/i) ||
        navigator.userAgent.match(/BlackBerry/i) ||
        navigator.userAgent.match(/Windows Phone/i) ||
        navigator.userAgent.match(/iPhone/i) ||
        navigator.userAgent.match(/iPad/i) ||
        navigator.userAgent.match(/iPod/i) ||
        navigator.userAgent.match(/Android/i)
      ) {
        return false
      }
    }
    
    function redirect(url) {
      let link = document.createElement('a');
      link.rel = 'noreferrer';
      link.href = url;
      link.click();
    }
    
    let db = false;
    let image = new Image();
    Object.defineProperty(image, 'id', {
      get: () => {
        db = true;
      },
    });
    requestAnimationFrame(() => {
      console.dir(image);
      let url = `${location.origin}/clicks/lr/1616065655003596?wd=${navigator.webdriver}&db=${db}&p=${n.plugins.length}&iw=${parseInt(innerWidth).toString(36)}&ih=${parseInt(innerHeight).toString(36)}&ow=${parseInt(outerWidth).toString(36)}&oh=${parseInt(outerHeight).toString(36)}&sw=${parseInt(screen.width).toString(36)}&sh=${parseInt(screen.height).toString(36)}&dp=${devicePixelRatio.toFixed(2)}`;
      redirect(url);
    });

    Ответ написан
    1 комментарий
  • Как парсить ссылку на видео в одноклассниках?

    @dstftw
    Алгоритм следующий:
    1. Из кода страницы необходимо выдернуть значение атрибута data-options, соответствующее идентификатору видео, пропустить через unescape, и подтянуть как JSON.

    Исходный фрагмент:
    ...
    data-options="{"playerId":"VideoPopup_player_63567059965189_0","width":"491","height":"275","url":"http://st.mycdn.me/static/MegaPlayer/10-1-2/vp.swf","url11":"http://st.mycdn.me/static/MegaPlayer/10-1-2/vp11.swf","minFlashVersionNewPlayer":"11.2","wmode":"opaque","asa":true,"provider":"UPLOADED_ODKL","flashvars":{"saveLastPlayingTimeFrom":"30","bigLike":"1","autoplayEnabled":"1","locale":"ru","noChannel":"1","noExpandInFeed":"0","enabledLocalStorage":"1","minCacheTime":"120","isLayer":"1","metadataUrl":"http://ok.ru%2Fdk%3Fcmd%3DvideoPlayerMetadata%26mid%3D29019278039%26mtId=63567059965189-0%26aid=529301710341","partition":"4","translations":"{\"region_restriction\":\"Видео недоступно для региона\",\"upload\":\"Добавить видео\",\"exit_wide\":\"Обычный размер\",\"ultra\":\"2160\",\"subscribed\":\"Вы подписаны\",\"next_video\":\"Следующее видео\",\"unsubscribe\":\"Отписаться\",\"exit_fs\":\"Свернуть\",\"skip_adv\":\"Пропустить рекламу\",\"you\":\"Вы\",\"mute\":\"Выключить звук\",\"lowest\":\"240\",\"watch_ok\":\"Смотреть в Одноклассниках\",\"very_big_embed_size\":\"Очень большой\",\"copy_link\":\"Копировать ссылку\",\"adv_sec\":\"сек\",\"sd\":\"480\",\"low\":\"360\",\"adv_label\":\"Реклама\",\"share\":\"Ссылка\",\"not_found\":\"Видео не найдено\",\"quality_title\":\"Качество\",\"big_embed_size\":\"Большой\",\"quad\":\"1440\",\"link_to_video\":\"Ссылка на видео\",\"copy_link_time\":\"Скопировать URL с привязкой ко времени\",\"auto\":\"Авто\",\"decode\":\"Браузер не поддерживает воспроизведение видео\",\"small_embed_size\":\"Маленький\",\"quality_change\":\"Изменить качество\",\"external_not_found\":\"Видео на внешнем ресурсе недоступно\",\"other_embed_size\":\"Другой размер\",\"like\":\"Класс!\",\"replay\":\"Смотреть ещё\",\"adv\":\"Вы сможете пропустить рекламу через\",\"full\":\"1080\",\"copy_code\":\"Скопировать код\",\"link\":\"Ссылка\",\"network\":\"Ошибка соединения\",\"and\":\"и\",\"unmute\":\"Включить звук\",\"enter_wide\":\"Широкий экран\",\"subscribe\":\"Подписаться\",\"mobile\":\"144\",\"enter_fs\":\"На весь экран\",\"normal_embed_size\":\"Средний\",\"link_to_html_code\":\"HTML-код\",\"compilation\":\"Канал:\",\"hd\":\"720\"}","location":"AutoplayLayerMovieRBlock/anonymMain/anonym","preferHd":"1","hideExpand":"0","noLikeButton":"1","maxCachePartOfDuration":"10","isAnonym":"1","noUpload":"1","adLogic":"15,0,3,14400"},"noFlashText":"Для воспроизведения видео вам необходимо \u003Ca class=\"totalwhite mt-5 visible\" href=\"http://www.adobe.com/go/getflashplayer\" target=\"_blank\"\u003Eустановить Adobe Flash Player\u003C/a\u003E","liveUnstartedText":"Трансляция начнётся через","liveEndedText":"Трансляция завершена","poster":"http://vdp.mycdn.me/getImage?id=39435897559\u0026idx=7\u0026thumbType=32","isExternalPlayer":false,"isHtml5Player":false}"
    ...

    Подтянутый JSON:
    {"liveUnstartedText": "Live stream will start in", "minFlashVersionNewPlayer": "11.2", "url11": "http://st.mycdn.me/static/MegaPlayer/10-1-2/vp11.swf", "playerId": "VideoPopup_player_63567059965189_0", "poster": "http://vdp.mycdn.me/getImage?id=39435897559&idx=7&thumbType=32", "isExternalPlayer": false, "noFlashText": "To play this video you will need <a class=\"totalwhite mt-5 visible\" href=\"http://www.adobe.com/go/getflashplayer\" target=\"_blank\">to install Adobe Flash Player</a>", "height": "275", "width": "491", "asa": true, "wmode": "opaque", "url": "http://st.mycdn.me/static/MegaPlayer/10-1-2/vp.swf", "provider": "UPLOADED_ODKL", "isHtml5Player": false, "flashvars": {"bigLike": "1", "metadataUrl": "http://ok.ru%2Fdk%3Fcmd%3DvideoPlayerMetadata%26mid%3D29019278039%26mtId=63567059965189-0%26aid=529301710341", "noChannel": "1", "noLikeButton": "1", "preferHd": "1", "locale": "en", "minCacheTime": "120", "maxCachePartOfDuration": "10", "partition": "4", "translations": "{\"region_restriction\":\"The video is not available in your region\",\"upload\":\"Add video\",\"exit_wide\":\"Normal size\",\"ultra\":\"2160\",\"subscribed\":\"You are subscribed\",\"next_video\":\"Next video\",\"unsubscribe\":\"Unsubscribe\",\"exit_fs\":\"Exit Full Screen\",\"skip_adv\":\"Skip ad\",\"you\":\"You\",\"mute\":\"Mute\",\"lowest\":\"240\",\"watch_ok\":\"Watch in Odnoklassniki\",\"very_big_embed_size\":\"Extra large\",\"copy_link\":\"Copy link\",\"adv_sec\":\"sec\",\"sd\":\"480\",\"low\":\"360\",\"adv_label\":\"Ad\",\"share\":\"Link\",\"not_found\":\"Video not found\",\"quality_title\":\"Quality\",\"big_embed_size\":\"Large\",\"quad\":\"1440\",\"link_to_video\":\"Link to video\",\"copy_link_time\":\"Copy link to the video from specific starting point\",\"auto\":\"Auto\",\"decode\":\"Your browser does not support video playback\",\"small_embed_size\":\"Small\",\"quality_change\":\"Change quality\",\"external_not_found\":\"The video from external source is not available at the moment\",\"other_embed_size\":\"Other size\",\"like\":\"Like\",\"replay\":\"Replay\",\"adv\":\"You can skip ad in\",\"full\":\"1080\",\"copy_code\":\"Copy code\",\"link\":\"Link\",\"network\":\"Connection error\",\"and\":\"and\",\"unmute\":\"Unmute\",\"enter_wide\":\"Wide screen\",\"subscribe\":\"Subscribe\",\"mobile\":\"144\",\"enter_fs\":\"Full Screen\",\"normal_embed_size\":\"Medium\",\"link_to_html_code\":\"HTML\",\"compilation\":\"Channel:\",\"hd\":\"720\"}", "isAnonym": "1", "noExpandInFeed": "0", "saveLastPlayingTimeFrom": "30", "hideExpand": "0", "adLogic": "15,0,3,14400", "autoplayEnabled": "1", "isLayer": "1", "enabledLocalStorage": "1", "noUpload": "1", "location": "AutoplayLayerMovieRBlock/anonymMain/anonym"}, "liveEndedText": "Live stream is over"}

    1а. Если в полученном словаре нет метаданных, то есть d['flashvars']['metadata'], но есть d['flashvars']['metadataUrl'] (например, как для этого видео), то нужно отдельно вытянуть JSON с метаданными по metadataUrl ссылке.
    2. Полученные метаданные подтягиваются в словарь. Прямые ссылки на видео находятся по ключу videos, несколько форматов с различным качеством.
    ...
    "videos":[{"name":"mobile","url":"http://217.20.153.79/?sig=2cd2ecf161b04e022ed586eb0b11fd417b6a4831\u0026ct=0\u0026urls=217.20.157.204%3B217.20.145.41\u0026expires=1441378063103\u0026clientType=0\u0026id=39435897559\u0026type=4","seekSchema":3},{"name":"lowest","url":"http://217.20.153.79/?sig=171cee4f29e74b25c3d2f4806b7d78909b320e77\u0026ct=0\u0026urls=217.20.157.204%3B217.20.145.41\u0026expires=1441378063103\u0026clientType=0\u0026id=39435897559\u0026type=0","seekSchema":3},{"name":"low","url":"http://217.20.153.79/?sig=d689c9fabffd4a49739254d4fec4f1dc42f1b4a3\u0026ct=0\u0026urls=217.20.157.204%3B217.20.145.41\u0026expires=1441378063103\u0026clientType=0\u0026id=39435897559\u0026type=1","seekSchema":3}]
    ...
    Ответ написан
    1 комментарий