Загадки для парсеров

Discussion in 'PHP' started by WVBR, 4 Feb 2022.

  1. WVBR

    WVBR Elder - Старейшина

    Joined:
    14 Feb 2008
    Messages:
    45
    Likes Received:
    17
    Reputations:
    0
    0. посмотрите на фотокарточку и найдите закономерности
    1. предложите вариант, как это можно отчистить и анализировать "не спотыкаясь"

    Я увидев такую "обфускацию текста"
    Вспомнил, почему то, старые добрые времена криптеров (не путать с криперами) :D

    Ну так вот, а если по честному, как наиболее рационально это убрать регулярками?
    всегда это:
    0. "class= "
    1. мусор стоит за "-" и заканчивается иногда переходом на новую строчку, пробелом, а иногда ">

    Заранее спасибо за помощь ?
     
    #1 WVBR, 4 Feb 2022
    Last edited: 5 Feb 2022
  2. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    386
    Reputations:
    58
    ...
    1. Длина - 5 символов.
    2. Присутствует хотя бы 1 символ верхнего регистра.

    Вариант решения:
    1. Вырезать строки по шаблону (можно сразу только длиной 5 символов), шаблон: -string{5}
    2. Проверить, имеется ли в строке символ верхнего регистра. Если да - искомая строка найдена.
    3. Пройтись str_replace удалив полученные в пункте 2 строки.

    Имхо, здесь поле для фантазий большое, можно разгуляться экспериментируя. Вариант выше - первый пришедший в голову за 5 минут раздумий.
     
    WVBR likes this.
  3. shit'o'cod

    shit'o'cod Member

    Joined:
    5 Oct 2012
    Messages:
    28
    Likes Received:
    23
    Reputations:
    1
    Это распространенный способ защиты содержимого от парсинга, когда названия классов (или любые ключевые имена, назвния...) генерируются случайным образом.

    Если случайная составляющая находится в одном месте везде, одной длины и содержит как в примере символы разного регистра, то можно её отрезать и анализировать оставшуюся строку.
    В данном случае, я думаю, что если даже очистить названия от случайной строки, там останутся повторяющиеся, неуникальные названия, которые не позволят нормально парсить. А может быть и нет. Нужно видеть весь исходный код и знать, что требуется.

    Сразу приходит на ум усложнение защиты, и оно много где используется на серьезных сайтах, когда все имена, названия полностью случайные :)

    Лучше попробовать найти другие закономерности для парсинга, например, сочетания, расположения тегов (между которыми искомое). Или парсинг по самой требуемой информации (там могут быть повторяющиеся слова и прочее).
     
    WVBR and Skofield like this.