• Как узнать размер (кол-во занимаемых байт) объекта в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В PHP есть что-либо аналогичное для определения размера объекта?


    Нет, потому что в этом нет смысла. Ибо реальный размер структур весьма сложно подсчитать. Например все строковые литералы (имена переменных к примеру) для 10-ти инстансов объектов одного типа будут заменены на указатели в буфер, и суммарный размер уже не так легко подсчитать.

    Вариант же с memory_get_usage как предлагается выше тоже не будет работать по причине того, что внутри интерприатора все куда сложнее. Для примера:

    class Foo {
        private $bar;
        public function __construct(string $bar) {
           $this->bar = $bar;
        }
    }
    
    $start = memory_get_usage();
    $a = new Foo('test1');
    $middle = memory_get_usage();
    $b = new Foo('longer value');
    $end = memory_get_usage();
    
    echo $middle - $start, PHP_EOL; // 56
    echo $end - $middle, PHP_EOL;  // 56


    Собственно логично что раз у нас размер значений разный то и размер интансов должен быть разным. Не забываем так же что между забором потребления памяти у нас есть так же накладные расходы на ссылку на объект + переменную. Так же не забываем что php выделяет память блоками....

    словом - возможности точно подсчитать размер инстанса в памяти PHP не предоставляет.
    Ответ написан
    Комментировать
  • Как организовать защиту от парсинга сайта?

    evgeniy_p
    @evgeniy_p
    Уже давно yandex ввел такую полезную функцию, как подтверждение авторства контента. Но для этого ресурсу необходим ТИЦ не менее 10.
    А для google вроде как необходимо указать ссылку на свой аккаунт в google pluse и статья автоматически считается вашей. Даже в выдаче с вашей аватаркой из этой соц.сети сайт будет отображаться.

    Если вы постоянно будете динамически выдавать верстку, например, менять название классов и дивов, то поисковикам это не очень будет нравиться. В google есть удобная функция для разметки "маячков" на странице. Надо указать где у вас текст, где заголовок, где превью и он автоматически будет парсить ваш сайт как надо. Но с динамической версткой об этом можно забыть.

    Вывод: защита от пасинга сомнительная затея, сеошники вас за это возненавидят.
    Ответ написан
    1 комментарий
  • Как организовать защиту от парсинга сайта?

    Написал довольно много различных парсеров и автоматизаций веб разной сложности, и могу сказать, что единственный вариант - это не публиковать информацию вообще. Думаю следующее поможет отбить желание парсить сайт или как минимум повысит стоимость разработки\поддержки парсера:
    1. Система мониторинга поведения пользователя (движение мышки, координаты нажатия на кнопки и т.п.) для того чтобы вычислять ботов.
    2. Не использовать Id и name или другие атрибуты, по которым можно вычислить контент.
    3. Обфусцировать СSS и делать имена классов динамическими.
    4. Динамически добавлять различный мусор в разметку.
    5. Использовать веб-фреймворк, и не светить методы наружу.
    6. Использовать капчу, от разных вендоров и с динамически генерируемым url, причём загружать её так, чтобы её нельзя было вытащить из кэша браузера (от перехвата запроса это не спасёт, но жизнь автоматизаторам подпортит).
    7. Переодически менять вёрстку.

    Загружать контент через Ajax я бы не рекомендовал: перехватить реквест от браузера не такая уж большая проблема, зато сразу сужается область поиска контента.
    Ответ написан
    Комментировать
  • Как организовать защиту от парсинга сайта?

    nazarpc
    @nazarpc
    Open Source enthusiast
    AJAX запросы - просто запросы. Можно сгенерировать с помощью CURL запрос абсолютно идентичный запросу из любого браузера. И ничего вы тут не сделаете.
    Можете попробовать определать поведение посетителя, но не благодарное это дело.
    Проще всего включить соответствующую опцию в настройках CloudFlare (если используете его), ибо самому писать такую штуку очень неблагодарное дело.
    Ответ написан
    4 комментария
  • Как организовать защиту от парсинга сайта?

    metamorph
    @metamorph
    Первый: да. Еще и скриншоты параллельно снимать можно.
    Кстати, за динамические ссылки вас убьют сеошники.

    Второй:
    1. нет
    2. потенциальный бан/пессимизация
    3. не сработает, поскольку парсинг давно уже делается через огромный список прокси
    4. клоакинг в чистом виде, бан сразу

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