У попередньому пості я говорив про особливості WordPress сайтів, завдяки якій їх можна легко парсити. Деякі з вас припустили, що це стосується RSS Feed. Але ні, ця “особливість” стосується … wp-json і shortlink.
Що таке shortlink? Це посилання виду domain.com/?p=123. 123 – це внутрішній ID поста, за яким можна спарсити статтю, підставивши ось таку конструкцію до домену {domain} / wp-json / wp / v2 / posts / {id}
Для статті https://hekkpipe.com/car-hookah / ось формат wp-json https://hekkpipe.com/wp-json/wp/v2/posts/8105
Який алгоритм?
- Парсіть shortlink зі сторінки
- Додаєте id до конструкції {domain} / wp-json / wp / v2 / posts / {id}
- Парсіть статтю
- Назва статті знаходиться в”title”: {“rendered”:”назва статті”}
- Текст статті починається з “content”: {“rendered”:”тіло статті з html тегами”}
- Обробляєте статтю (видаляєте зовнішні посилання, інлайн стилі) – щоб узгоджувалося з оформленням вашого сайту. Можна відразу видаляти всі зображення, щоб потім вставити свої.
А що далі? Ми зберігали це в .html файл, і потім конвертували в .docx
У багатьох перекладачах (DeepL, Яндекс.Перекладач) є функція перекладу документа. Перекладений документ заливається потім на сайт за допомогою Mammoth. Можна це прискорити за допомогою WP REST API.
Ага, я видалю посилання на shortlink і ти мене не спарсиш ❌
Спаршу. У коді є ще ось такий фрагмент
<link rel=”alternate” type=”application/json” href=”https://hekkpipe.com/wp-json/wp/v2/posts/8105″ />
Це пряме посилання на сторінку у форматі wp-json. Теж видалите?
Тоді у мене для вас є ще одна новина.
https://hekkpipe.com/wp-json/wp/v2/posts/?per_page=100&?page=1
?per_page=100 – Виводити по 100 постів на сторінці (більше не можна)
?page=1 – власне пагінація
Тобто людина з технічними навичками нижче середнього легко може просканувати ваш сайт, скласти це все в таблицю і витягати потрібні йому пости.
Update. Також можна витягнути ось так статтю
https://hekkpipe.com/wp-json/wp/v2/posts/?title=%22How%20to%20make%20your%20hookah%20taste%20fresh?%22
Як від цього захиститися?
✅ Закрити REST API від публічного доступу. Інструкція в цій статті (https://wp-kama.ru/handbook/rest). відключати REST API повністю не рекомендується, через це може поламатися адмінка.
Варіанти застосувань ви самі придумаєте.
А в чому мораль? Хочеш дорвейщикам життя спростити? Ні, хочу спростити життя веб-майстрам. Часто в чатах пишуть, що мій контент спарсили, тепер його треба переписувати… а ви не спрощуйте парсинг вашого контенту.
Пізніше опублікую добірку, як захищатися від парсингу контенту. Але ви повинні знати: якщо вас дійсно хочуть спарсити, нічого (ні Cloudflare, ні капча, ні інші рішення) вас не захистить. Завжди є Selenium, Zennoposter, мобільні проксі (які ніхто майже не банить) – і майже будь-який захист буде пройдено.









