Парсинг любого сайта без доп. железок

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
sifonka
Сообщения: 18
Зарегистрирован: 09 янв 2021, 03:04

Понадобилось "выковырять" с сайта одно слово, но html получался большого размера, а включенного компа 24/7 нет, вот, что "накостылил" ;;-)))
На примере сайта https://freevpn.me/accounts/ , там нам нужен пароль.
1) Создаем гугл таблицу с функцией в ячейке

Код: Выделить всё

=IMPORTHTML("https://freevpn.me/accounts/"; "list"; "4")
и получаем следующее

Изображение

2) Переходим в инструменты - редактор скриптов и пишем скрипт

Код: Выделить всё

function getData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Лист1');
  var range = sheet.getRange("B5");
  var result = range.getValues();
  Logger.log(result);
  return result;
}

function doGet() {
  var data = getData();
  if(!data) {
    data = '';
  }
  return ContentService.createTextOutput(
    JSON.stringify({'result': data})).setMimeType(ContentService.MimeType.JSON);
}
Меняем диапазон на свой, выглядит вот так

Изображение

3) Жмем Начать развертывание - Новое - выбираем тип веб-приложение и доступ для всех (ранее тоже выдаем доступы когда просят) и получаем ссылку (примерно такую https://script.google.com/macros/s/AKfy ... oiDJw/exec при переходе которой видим следующее

Изображение

Казалось бы это все, осталось достать пароль микротом, но он выдает ошибку так как гугл скрипты при переходе на ссылку генерирую другую ссылку и кидают на нее

4) На микротике делаем скрипт, который
- "фечит" первый раз, получает ошибку (в ней есть новая сгенерированная ссылка)
- записывает все в файл
- находит в файле нужную ссылку
- "фечит" второй раз и получает результат
- загоняет результат в переменную и изменяет ее для получения пароля
- удаляет файл
Далее уже дело за малым, "играться" с результатом как душе угодно

Код: Выделить всё

:local filepas "disk1/tempfile.txt"

# First request. Moved Temporarily 302. Fetch output to disk1/tempfile.txt
:local jobid [:execute script={/tool fetch url="https://script.google.com/macros/s/AKf546SGI5675479hrU7689789oiDJw/exec" output=user as-value} file=$filepas]

# Waiting for the end of the task, checking every 5 seconds
:while ([:len [/system script job find .id=$jobid ]] > 0) do={ delay 5s }

# Parsing disk1/tempfile.txt, retrieving url redirection
:local fetchOut [/file get $filepas contents]
:local startURL [:find $fetchOut "http" -1]
:local endURL [:find $fetchOut "\"> " startURL]
:local moveURL [:pick $fetchOut $startURL $endURL]
:global pass ([/tool fetch url=$moveURL output=user as-value]->"data")

# Parsing password
:global pass (:put [:pick $pass ([:find $pass "Password"]+11) [:find $pass "\"]"]])

/file remove $filepas
Похоже на бред сумасшедшего :ps_ih: но опыт интересный
Уверен, есть более простой способ, например, делать все сразу через гугл скрипты (импортировать, парсить), но возможно это хороший задел на будущее, использовать гугл скрипты (а может и таблицы) + микротик...


pepelxl
Сообщения: 161
Зарегистрирован: 23 июл 2013, 18:47

Для данной задачи перебор. Mikrotik прекрасно может получить весь html и распарсить его. Хотя для вашей цели достаточно найти нужный блок через find.
А вот если пасс в виде картинки , то вполне достойное решение, хотя про него писали ещё года 3-4 назад.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Я в своё время использовал вот эту https://habr.com/ru/post/475856/ статью. Всё работало на ура. Как сейчас, не знаю.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Это работает на ура и сейчас. Вы (podarok66) тогда помогли настроить функцию в Google App Script. Чупака гений !

А ещё есть его гениальный JSON-парсер для Микротик. https://github.com/Winand/mikrotik-json-parser
Также работает отлично и выручает меня всегда. Особенно в работе с оборудованием, возвращающим данные в JSON. Сейчас пишу библиотеку функций для стереоресивера URRI. viewtopic.php?f=16&t=12453
Парсер JSON Чупакабры очень там пригодился, низкий ему за него поклон.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить