Ця стаття – доповнення до статті про деобфускацію скриптів. Тут будуть розглянуті основні принципи шифрування та упаковки, слабкі місцязахистів, способи ручного зняття, а також універсальні інструменти для автоматичного зняття пакувальників та навісного захисту зі скриптів JavaScript. Останнім часом все частіше вихідний кодскриптів шифрується або пакується. Цим почали захоплюватися Яндекс, DLE та інші популярні проекти, а красиві байки про "турботу про користувачів", "економію трафіку" та іншу нісенітницю виглядають дуже смішно. Що ж, якщо комусь є що приховувати, то наше завдання вивести їх на чисту воду.
Почнемо з теорії. Через особливості виконання JavaScript всі шифрувальники та пакувальники, незважаючи на їх різноманітність, мають всього два варіанти алгоритму:або як варіант:Другий спосіб найчастіше використовується для захисту вихідного html-коду сторінки, а також різними троянами для впровадження в сторінку шкідливого коду, наприклад, прихованого кадру. Обидва алгоритми можуть комбінуватися, "навороченість" і заплутаність розшифровувача може бути будь-яким, незмінним залишається лише сам принцип.
В обох випадках виходить, що функцій eval()і document.write()передаються повністю розшифровані дані. Як їх перехопити? Спробуйте замінити eval()на alert(), і в MessageBox", що відкрилося, ви відразу побачите розшифрований текст. Деякі браузери дозволяють копіювати текст з MessageBox"ів, але краще скористатися таким ось напівавтоматичним декодером:
- < html >
- < head >< title >JavaScript Decoder title > head >
- < body >
- < script type = "text/javascript" >
- // Функція запису в лог результатів розшифровки
- функція decoder (str ) (
- document. getElementById ("decoded"). value += str + "\n";
- < textarea id = "decoded" style = "width:900px; height:500px;" > textarea >
- < script type = "text/javascript" >
- body >
- html >
Наприклад візьмемо який-небудь скрипт з Яндекса, подивившись вихідний код бачимо щось хворе:
Eval (function (p, a, c, k, e, r) (e = function (c) (return (c) c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36)));if(!
"".replace(/^/,String))(while(c--)r=k[c]||e(c);k=)];e=function()(return"\w+"); c=1);while(c--)if(k[c])
p=p.replace(new RegExp("b"+e(c)+"b","g"),k[c]);return p)("$.1e
.18=8(j)(3 k=j["6-9"]||"#6-9";3 l=j["6-L"]||".u-L";3 m=j ["6-L-17"]
||"";3 n=j["1d"]||0;$(5).2(".6-9").14("7");$(5).2(".6 -9").Z("7",8(
)(3 a=$(5).x();3 o=$(5).x();3 h=$(5).B("C");$(5).v("g -4 "); $ (5). 16 (
$(k).q());3 t=$(o).2("15");3 c=$(o).2(".b-r");3 d=$(o).2 (". b-12");
[решта така ж маячня відрізана]
Відразу скажу, що цей скрипт оброблений JavaScript Compressor, його легко впізнати за сигнатурою - характерною назвою фукнції на початку скрипту. Копіюємо вихідний текст скрипта, замінюємо перший evalна decoder, вставляємо в декодер і зберігаємо його як html-сторінку. Радіти поки що рано, в ньому прибрано всі переноси рядків і форматування коду. Як із цим боротися написано у статті про деобфускацію.
Другий приклад. Ось html-сторінка, накрита програмою HTML Protector. Це сторінка, що демонструє можливості програми, тому там задіяні всі опції: блокування виділення та копіювання тексту, заборона правої кнопки миші, захист картинок, приховування рядка стану, шифрування HTML-коду і т.д. Відкриваємо вихідний код, дивимось. У верху вже знайомий нам document.write і зашифрований скрипт. Запускаємо його через декодер, отримуємо функцію розшифрування основного вмісту:
Code (JavaScript) :
- hp_ok = true ;function hp_d01 (s )( ... вирізано ... o = ar . join ("" )+ os ; document . write (o )
Замінюємо в функції останній document.write на decoder і вставляємо після неї всі три зашифрованих скрипта, що залишилися:
- < script type = "text/javascript" >
- // Сюди вставити зашифрований скрипт, попередньо
- // замінити всі виклики eval() і document.write() на decoder().
- hp_ok = true ;function hp_d01 (s )( .... o = ar . join ( " " )+ os ; decoder (o );
- hp_d01 (unescape ("QAPKRV%22NCLEWC ....)
- hp_d01 (unescape ( ">QAPKRV%22NCLEWCEG? HctcQa ...
- hp_d01 (unescape ( ">'mf(%22`eamnmp? !DDDDDD %22v ...
Для зручності у статті скрипти наводяться не повністю, ви повинні копіювати їх повністю. Відкриваємо декодер у браузері та бачимо захисні скрипти, додані програмою, та розшифрований вихідний текст сторінки. Для зручності можна розшифровувати лише третій скрипт, який містить html-код сторінки. Ось і весь захист. Як бачите, нічого складного. Аналогічно знімаються інші захисту html-сторінок.
Від ручного розшифрування перейдемо до автоматичного. Для зняття захисту першого типу я трохи модифікував вже відомий вам скрипт Beautify Javascript і відкомпілював його в exe-файл. Він без проблем справляється з більшістю бачених мною захистів та пакувальників JavaScript.
Eval.JavaScript.Unpacker.1.1-PCL.rar (12,124 bytes)
Для складніших випадків доведеться пускати у хід важку артилерію. Це безкоштовний проект, призначений для дослідження троянів та іншого шкідливого коду. Оскільки всі програми, призначені для захисту авторського права, є шкідливими, Malzilla допоможе нам у боротьбі з ними. Качаємо (на сьогоднішній день це 1.2.0), розпаковуємо, запускаємо. Відкриваємо другу вкладку Decoder, у верхнє вікно вставляємо код зашифрованого скрипту, натискаємо кнопку Run script.
В папці eval_tempскладаються всі результати виконання функцій eval(), зокрема і проміжні. Їх можна переглянути, натиснувши на кнопку Show eval() resultsтекст відкриється в нижньому вікні. Його можна скопіювати, вставити у верхнє вікно і відразу відформатувати натисканням кнопки Format code. Крім декодера Malzilla має ще безліч інструментів та налаштувань, що дозволяють легко зняти будь-який захист зі скриптів JavaScript.
Також можна звернути увагу на ще один безкоштовний інструмент для роботи із зашифрованими скриптами - FreShow. Функцій у ньому менше, але цілком має місце бути. З офсайту можна завантажити демонстраційний ролик, який показує приклад роботи з програмою.
Як бачите, немає нічого складного у знятті захисту зі скриптів JavaScript та з html-сторінок. Ви все ще продовжуєте захищати свої погані афтарські права? Тоді ми йдемо до вас!
Під усіма красивими зображеннями, досконалою друкарнею, та чудово розміщеними закликами до дії, розташований вихідний код вашого сайту.
Щодня, цей код ваш браузер перетворює на вражаючі сторінки для ваших відвідувачів та клієнтів.
Google та інші пошукові системи «читають» цей код, щоб визначити, де ваші веб-сторінки повинні з'явитися в їх індексах для цього пошукового запиту.
Отже, дуже велике значення для пошукової оптимізації(SEO) має те, що знаходиться у вихідному коді.
Це короткий посібник, продемонструє вам, як читати вихідний код вашого сайту для того, щоб ви були впевнені, у правильності SEO і щоб навчити вас перевіряти ваші умови SEO.
Також розглянемо кілька інших ситуацій, коли знання, як переглянути та вивчити головні частини вихідного коду, допоможуть в інших маркетингових дослідженнях.
Як переглянути вихідний код.
Перший крок у перевірці вихідного коду вашого сайту, це переглянути реальний вихідний код. Будь-який веб-браузер дозволяє зробити це просто.
Нижче наведені клавіатурні команди для перегляду вихідного коду вашої веб-сторінки для PCі Mac.
- Firefox - CTRL + U (Утримуючи натиснутою клавішу CTRL, натисніть клавішу "U") Крім того, ви можете піти в меню "Firefox", потім натисніть "Web Developer", а потім "Вихідний код сторінки".
- Internet Explorer- CTRL + U. Або клацніть правою кнопкоюмиші та виберіть «View Source».
- Хром - CTRL + U. Ви можете натиснути на зображення ключа з трьома горизонтальними лініями у верхньому правому кутку. Потім натисніть «Інструменти» та виберіть «View Source».
- Опера - CTRL + U. Ви також можете клацнути правою кнопкою на веб-сторінці і вибрати "Перегляд вихідного коду сторінки."
Макінтош
- Safari — поєднання клавіш Option+Command+U. Ви також можете клацнути правою кнопкою на веб-сторінці та виберіть «Показати Page Source».
- Firefox — Ви можете клацнути правою кнопкою і виберіть пункт «Початковий текст» або ви можете переміщатися в меню «Сервіс», виберіть Web Developer і натисніть Page Source. Поєднання клавіш Ctrl+U.
- Хром — Перейдіть до «Перегляду», потім натисніть «розробник», а потім «View Source». Ви також можете клацнути правою кнопкою та вибрати пункт «Перегляд вихідного коду сторінки». Поєднання клавіш Option+Command+U.
Після того, як ви знаєте, як переглянути вихідний код, ви повинні знати, як здійснити пошук у ньому.
Як правило, одні й ті самі функції пошуку, які ви використовуєте під час нормального перегляду веб-сторінок, застосовуються і до пошуку у вихідному коді.
Команди, CTRL + F (ЗНАЙТИ) допоможе Вам швидко переглянути вихідний код важливих елементів SEO.
Мітки заголовків.
Тег заголовка є найголовнішим елементом SEO. Це найголовніше у вихідному коді.
Якщо ви збираєтеся взяти одну лише цінну річ із цієї статті, зверніть увагу на це:
Ви знаєте, ці результати Google надає, коли ви шукаєте щось.
Усі ці результати беруться із тегів заголовків веб-сторінок. Отже, якщо у вас немає тегів заголовків у вихідному коді, ви можете не з'явитися в Google (або будь-якій іншій пошуковій системі).
Чи вірите чи ні, я насправді бачив веб-сайти без тегів заголовків. Давайте спробуємо зробити швидкий пошук у Google для терміна « Marketing Guides«. Що ми бачимо:
Ви можете бачити перший результат пошуку для блогу KISSmetricsрозділ Marketing Guides.
Якщо ми перейдемо за посиланням першого результату пошуку і переглянемо вихідний код сторінки, можна побачити в заголовку тег:
Тег заголовка позначається таким тегом:
І ми бачимо, що зміст всередині тега заголовка відповідає тому, що використовується в заголовку результату пошуку Google.
Але не тільки теги заголовків необхідні для того, щоб бути включеними до результатів пошуку Google.
Google ще й ідентифікує слова в тегах заголовків як важливі ключові слова, які, на його думку, актуальні для пошуку користувачів.
Так що якщо ви хочете отримати певне ранжування веб-сторінки для конкретної теми, то вам краще переконатися, що слова, які описують предмет, включені в тег заголовок.
Існує ціла низка онлайнових ресурсів, де ви можете дізнатися більше про те, як ключові словаі теги заголовків відіграють важливу роль у спільній архітектурі вашого сайту.
Ось деякі важливі пункти, які дозволять вам пам'ятати про важливість ваших тег заголовків:
- Переконайтеся, що у вас є лише один тег заголовка на веб-сторінці.
- Переконайтеся, що кожна веб-сторінка на сайті має свій тег заголовок.
- Переконайтеся, що кожен тег заголовок на сайті є унікальним. Ніколи не дублюйте вміст певного тега заголовка.
Наступний важливий елементголовною частиною вашої веб-сторінки є мета-тег опису.
Це фрагмент вашого контенту зі 160 символів, який відображається під вашим заголовком у пошукових системах.
Я бачив сотні веб-сайтів, які повністю ігнорують цей тег. Його дуже легко знайти у вихідному коді:
Таким чином, перевірте та переконайтеся, що цей тег присутній на всіх веб-сторінках вашого сайту. Що ще важливіше, переконайтеся, що ви не дублюєте його на кількох сторінках.
Дублювання мета-тег опису не є пінальті для пошукової системи, але це дуже велика маркетингова помилка.
Багато хто ігнорує мета тег опису, але ви дійсно повинні попрацювати в цьому напрямі, тому що він зчитується пошуковою системою.
Подумайте про те, що мета-тег опису буде залучити більше відвідувачів і збільшити цільові переходи на сайт.
HTML код це по суті і є сама ваша сторінка, він вказує на те, як саме ваш сайт будуватиметься і відображатиметься на дисплеї користувача. Як правило, цей код відкритий, тобто будь-який користувач може безперешкодно його побачити та прочитати. Якщо ж ви з тих чи інших причин не бажаєте того, щоб будь-хто мав доступ до вашого коду, Ви можете . Це передбачає створення особливого алгоритму, який кодує ваш код, тобто ховає його первинний вигляд, роблячи недоступним користувачам сайту.Коли і кому це знадобиться?
Зробити таке шифрування може будь-який веб-майстер або власник сайту. Питання в тому, наскільки це обґрунтовано та потрібно. Наприклад, якщо у вас звичайна лендинг-сторінка, зроблена за шаблоном, і яка не відрізняється від інших, немає сенсу займатися кодуванням, оскільки такий шаблон і є загальнодоступним. У такому разі навряд чи хтось займатиметься копіюванням та вивченням вашого коду. А от якщо у вас сайт, який має унікальний дизайн, ви довго і ретельно над ним працювали, або заплатили за це чималі гроші, то про код все ж варто подумати. Дуже часті випадки, коли власник має сайт, в який було вкладено чимало сил, часу і грошей, і через деякий час тим чи іншим чином виявляє такий самий сайт, з таким же дизайном і структурою, але на іншому домені та хостингу. Найчастіше власникам сайтів про це говорять у коментарях самі користувачі. У цьому випадку можна сміливо зробити висновок, що хтось просто скопіював HTML кодвашого сайту та запустив його на своєму.Що ж робити, щоб убезпечити себе?
Від ситуацій копіювання та використання без дозволу чужого HTML коду не так просто себе убезпечити. Та й взагалі якщо людина вже побачила ваш сайт, вона навіть без коду зможе її дублювати, за умови наявності певних знань у сфері веб-розробки. Але, що стосується самого HTML коду, його можна зашифрувати. Працює це на основі спеціального JavaScript-скрипту. За допомогою нашого інструменту ви. При цьому створюється спеціальний скрипт, призначений для розшифровки. Працює це досить просто: коли відвідувач переходить на ваш сайт, завантажується зашифрований код, зрозуміти який він не зможе. У цей момент запускається створений javascript, який розшифровує код і відображає сайт на екрані користувача. При цьому сам відвідувач не може побачити справжній код. Однак у цьому методі є і невеликий недолік. Є користувачі в браузерах яких заборонено запуск javascript на сайті, у такому разі скрипт не запуститься, відповідно HTML код не розшифрується та сайт не буде відображено. Але, засмучуватися не варто, таке налаштування браузерів зустрічається дуже рідко, можна сказати, що на 99% браузерах дозволено запуск javascript.Як це зробити?
Робиться це дуже просто за допомогою нашого інструменту. Все, що вам потрібно це вставити ваш HTML код в поле на цій сторінці, і натиснути на кнопку для запуску шифрування. В результаті, в іншому полі ви отримаєте зашифрований код, який вже можна використовувати безпосередньо на вашому сайті. 1 голосДоброго часу доби, шановні читачі мого блогу. Буває знаходиш на сайті якусь гарну фішку і починає мучити питання, як же творець досяг такого цікавого ефекту.
Виявляється, знайти відповідь досить просто. А якщо ви маєте деякі навички, то можете назбирати безліч таких фішок і за короткий час створити свій унікальний сайт.
Сьогодні ми поговоримо про те, як відкрити код сторінки, певного елемента та навчитися використовувати цю навичку собі на благо.
Базові знання про код
Мій сайт призначений для новачків і спочатку мені хотілося б у двох словах розповісти про сайти і код в цілому.
Щоб намалювати картинку, потім розрізати її на дрібні частини, написати код, завдяки якому браузер знову збере всі елементи в єдине ціле. Здається все дуже складно? Зовсім ні, та й сумувати з цього приводу не варто.
Якісні сайти створюються саме так. Хочете - влазьте в цю справу і вивчайте, немає бажання - ніхто не може вас змусити.
Скажу тільки одне… немає нічого приємнішого, ніж бачити, як незрозумілі слова, написані тобою, перетворюються на єдине ціле і оживають: посилання працюють, кнопки рухаються, картинки рухаються, текст повзе. Думаю, що я знаю, як почував себе Віктор Франкенштейн.
Коли ви почнете осягати таємну мову і бачити, що все насправді значно простіше, ніж здавалося спочатку, ви не можете не вірити у власні сили та можливості мозку. Це дуже круто.
Як роблять сайти? В ідеалі, спершу. Він просто малює картинку. Наприклад, як показано на малюнку нижче. Поки що це лише зображення, фотографія. Не працюють посилання, при натисканні ви нікуди не переходите, пошук не здійснюється.
По цьому малюнку. Подивіться на скріншот унизу. Вам може здатися, що це безглуздий та дуже складний набір символів. Насправді все не так вже й складно, є певний алгоритм.
Існує всього близько 150 тегів і кожен з них відповідає за певну дію: посилання, перенесення, виділення жирним, колір, заголовок і таке інше. Розібратися в них не так вже й складно, якщо є бажання і не шкода часу.
Завдяки знанням цих атрибутів можна вирішити практично будь-яке завдання. Ось тільки шляхи задля досягнення мети кожен розробник знаходить свої.
Досвідчені творці відразу бачать як досягти результату, а іншим доводиться думати, шукати відповіді у статтях чи вихідному коді конкурентів. Вони просто беруть необхідну частину на сторонньому сайті та редагують під себе. Це значно скорочує процес роботи.
Трохи пізніше я покажу вам конкретний приклад.
Перегляд коду
Отже, давайте я спочатку покажу як діяти, якщо вам потрібно дізнатися чужий html. Потім ми докладніше розглянемо всі інші питання.
Найкращий спосіб
Метод, який я опишу першим, трохи складний для новачків, але як ознайомлення – піде, читайте. Відкриваєте сторінку та натискаєте на праву клавішу миші. Вибираєте пункт «Зберегти як…»
Зберігайте веб-сторінку повністю. Як можете побачити на скріншоті, я вже все завантажив заздалегідь. Тут у нас дві папки.
Тут є все, що потрібно. Кожен елемент. Якщо знаєте на цьому, то зможете швидко отримати все необхідне. Але таке завдання все частіше стає нездійсненним. Закачування не здійснюється. Що робити, якщо заборонено копіювати сторінку?
Це ж Гугль хром
Як ви вже напевно могли помітити, я найчастіше використовую Google Chromeі дізнатися чужий код у цьому браузері простіше простого. Як у принципі, і в будь-якому іншому. Схема буде не те що схожа, а ідентична. Відкриваємо сторінку, код якої хочемо дізнатися, та клацаємо у будь-якому місці правою клавішею миші. У вікні, що з'являється, клацаємо «Подивитися код сторінки».
У новому вікні відкриється простирадло коду, в якому досить складно розібратися новачкові. Але, не лякайтеся раніше.
Якщо вам потрібно дізнатися код лише одного елемента, достатньо навести на нього мишею та клацнути правою клавішею. Вибираємо іншу функцію хрому: "Перегляд коду елемента".
Мені, наприклад, може бути цікаво, яким чином зроблено логотип, при використанні картинки або мови програмування? Адже намалювати квадрат можна за допомоги css. Багато фахівців радять якнайбільше інформації прописувати кодом. Як працюють на популярних сайтах?
Ось і з'явилася потрібна інформація. Зверху html, внизу CSS. Це дві мови. Перший відповідає за текстову складову, а другий – за дизайн. Якби не було css, то вам довелося б щоразу прописувати колір, розмір шрифту. Для кожної сторінки це дуже довго. Але якби не було html, то ми не мали б текстів. Грубо пояснив, але загалом усе так і є.
До речі, якщо вас зацікавило як тут влаштований, то можете знизу подивитися посилання на картинку. Ось вам і відповідь.
Mozilla Firefox
Якщо ви любите працювати в мазилі, то все буде так само. Відкриваєте сторінку та натискаєте на праву кнопку миші. "Вихідний код сторінки" якщо хочете побачити весь код повністю.
При наведенні на елемент з'являється можливість відкрити його код.
Тут дані відображаються в нижній частині екрану, а в іншому все так само.
Яндекс браузер
В Яндекс браузері все так само, як і в попередніх двох варіантах, відкриваємо сторінку, права клавіша миші, подивитися код сторінки.
Наводимо курсор на елемент, якщо хочемо дізнатися саме його код.
Відображається все тут так само, як і в хромі.
Опера
Ну і насамкінець Opera.
До речі, можливо, ви помітили, що не обов'язково користуватися мишею. Для відкриття коду є швидке поєднання клавіш і для всіх браузерів воно однакове: CTRL+U.
Для елементів: Ctrl+Shift+C.
Ось так виглядає результат.
Це буде цікаво новачкам
А тепер дивіться, як усе працює. Знаходьте сайт і дуже вам подобається якийсь елемент. Наприклад, ось цей. Як відкрити код елемента, ви вже знаєте.
Тепер копіюєте його.
Я користуюся , вставляю цей код у новий html файл, у тег body (тіло англійською).
Тепер подивимося, як це все виглядатиме у браузері.
Готово. Щоб текст був вирівняний по краях і отримав зелений колір необхідно підключити до цього документа css і скопіювати інший код з того веб-сайту, з якого ми тирали цей.
Зараз я не цим займатимуся. На це потрібно більше часу: і мого, і вашого. Думаю, всі подробиці я опишу у своїх майбутніх публікаціях. Підписуйтесь на розсилку та дізнаєтеся про появу статті першим.
Якщо ж терпіти немає сил, а дізнатися більше про html і css хочеться вже зараз, то можу за традицією порекомендувати безкоштовні навчальні курси.
Тут 33 уроки, які дозволять освоїти «Безкоштовний курс з HTML» .
А тут повна інформація про css. «Безкоштовний курс з CSS (45 відеоуроків!)» .
Тепер ви знаєте трохи більше. Бажаю вам успіхів у ваших починаннях. До нових зустрічей!
Mozilla FireFoxрозкрийте в меню розділ «Вигляд» та клацніть пункт «Вихідний код». Такий самий пункт є і в контекстному меню, який , якщо клацнути правою кнопкою миші текст сторінки. Можна використовувати і поєднання клавіш CTRL + U. Mozilla FireFox при цьому не використовує зовнішніх програм – вихідний код сторінки з підсвічуванням синтаксису буде відкрито в окремому вікні браузера.
У браузері Internet Explorer клацніть у меню розділ "Файл" і виберіть "Правити в Блокнот". Замість назви Блокнот може бути написана інша, ви призначили в налаштуваннях браузера для перегляду вихідного коду. По клацанню сторінки правою кнопкою миші випадає контекстне меню, у якому також є пункт, що дозволяє відкрити вихідний код сторінки у зовнішній програмі – «Перегляд HTML-коду».
У браузері Operaвідкрийте меню, перейдіть в розділ «Сторінка» і ви матимете можливість вибрати в підрозділі «Засоби розробки» пункт «Вихідний код» або пункт «Вихідний код кадру». Такому вибору призначені гарячі клавіші CTRL+U та CTRL+SHIFT+U відповідно. У контекстному меню, прив'язаному до клацання сторінки правою кнопкою миші, також є пункт «Початковий код». Opera відкриває вихідну сторінку у зовнішній програмі, яка призначена в ОС або в налаштуваннях браузера для редагування HTML-файлів.
Браузер Google Chrome без сумніву має кращу організацію перегляду вихідного коду. Клацнувши сторінку правою кнопкою миші, ви можете вибрати пункт «Перегляду коду сторінки» і тоді вихідний підсвічування синтаксису буде відкрито на окремій вкладці. А можете вибрати в тому ж меню рядок "Перегляд коду елемента" і браузер у цій же вкладці відкриє два додаткові кадри, в яких ви можете перевіряти HTML-і CSS-код будь-якого елемента сторінки. Браузер буде реагувати на переміщення курсору рядками коду, підсвічуючи на сторінці елементи, що відповідають цій ділянці HTML-коду.