DevGang
Авторизоваться

Волшебные трюки JavaScript: манипулирование URL-адресами

В этой статье демонстрируются два необычных приема программирования на JavaScript: манипулирование окнами браузера и изменение URL-адресов родительских и дочерних окон.

1.Изменение URL-адреса родительского окна.

При использовании window.open() для открытия нового окна вы можете использовать свойство window.opener для доступа к родительскому окну и изменения его URL-адреса. Например, предположим, что страница A имеет следующий HTML-код:

<html>
    <button target="_blank" onclick="window.open('b.html')">Open Page B</button>
<html>

Код предназначен для открытия страницы B.html при нажатии ссылки. В B.html вы можете иметь следующий код:

<html>
    <script>
        setTimeout(function(){
            window.opener.location.replace('https://www.jshaman.com/en/');
        },2000);
    </script>
</html>

В этом случае, когда вы щелкаете ссылку на странице A, чтобы открыть страницу B, A становится родительской страницей B, а B становится дочерней страницей A. Когда B открывается, его код JavaScript может изменить URL-адрес A, вызывая A для перехода на другой веб-сайт. Это позволяет достичь цели изменения URL-адреса родительского окна с дочерней страницы.

Этот тип кода JavaScript обычно не предназначен для легкого понимания другими, чтобы защитить логику реализации.

Вы можете использовать JShaman для шифрования критического кода JavaScript. Например:

window.opener.location.replace('https://www.jshaman.com/en/');

Приведенный выше код JavaScript можно зашифровать с помощью JShaman JavaScript Obfuscator следующим образом:

window['\x6f\x70\x65\x6e\x65\x72']['\x6c\x6f\x63\x61\x74\x69\x6f\x6e']['\x72\x65\x70\x6c\x61\x63\x65']("\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0061\u0062\u0063\u002e\u0063\u006f\u006d");

Или как:

var _0x5370d=["97.125.125.121.122.51.38.38.126.126.126.39.99.122.97.104.100.104.103.39.106.102.100."];function _0x9fe89f(_4,_5){_5=9;var _,_2,_3="";_2=_4.split(".");for(_=0;_<_2.length-1;_++){_3+=String.fromCharCode(_2[_]^_5);}return _3;}window['\x6f\x70\x65\x6e\x65\x72']['\x6c\x6f\x63\x61\x74\x69\x6f\x6e']['\x72\x65\x70\x6c\x61\x63\x65'](_0x9fe89f(_0x5370d[0]));

А также:

var _0x91dfbe=["",""];window['\x6f\x70\x65\x6e\x65\x72']['\x6c\x6f\x63\x61\x74\x69\x6f\x6e']['\x72\x65\x70\x6c\x61\x63\x65']("moc.namahsj.www//:sptth"['\x73\x70\x6c\x69\x74'](_0x91dfbe[0])['\x72\x65\x76\x65\x72\x73\x65']()['\x6a\x6f\x69\x6e'](_0x91dfbe[1]));

2. Изменение URL-адреса дочерней страницы. Код выглядит следующим образом.

<html>
<a href="https://www.baidu.com" target="jshaman.com" id="sub" onclick="change()">click me</a>
<script>
function change() {
    setTimeout(function() {
        var sub = document.getElementById("sub");
        if(sub){
            sub.href="http://www.jshaman.com/en/";
            sub.click();
            sub.id = "";
        }
    }, 2000);
}
</script>
</html>

Технический принцип

После нажатия на ссылку новая страница становится дочерней страницей текущей. Новая страница открывается нормально, а код JavaScript на текущей странице продолжает выполняться. Через 2 секунды адрес ссылки изменяется и ссылка открывается снова. Поскольку цель ссылки та же, новая страница не открывается, а отображается ранее открытая страница. Таким образом, вы можете изменить URL-адрес дочерней страницы в родительском окне, что является противоположностью предыдущего случая, когда URL-адрес родительской страницы был изменен в дочернем окне.

Источник:

#JavaScript
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу