1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/easychen-checkchan-dist

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.tpl.md 37 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 22:30 efe6a65

Check酱 — это универсальный инструмент для мониторинга веб-контента, который может отслеживать изменения веб-страниц и отправлять уведомления в WeChat.

Магазин приложений

Microsoft Edge Google Chrome

Чтобы перейти на страницу магазина или выполнить поиск «Check酱», нажмите на соответствующие значки.

Официальное видеоруководство

Более длинная версия продолжительностью около 2 часов.

Заявление об открытом исходном коде

⚠️ Плагин для браузера не является открытым исходным кодом. Код в каталоге Docker предназначен только для проверки безопасности и создания многоплатформенных образов с использованием дополнительных условий лицензии GPLV3:

  1. Не изменять и не удалять встроенный канал Server酱 по умолчанию.
  2. Не подключать другие каналы сообщений, а затем повторно публиковать.
  3. После выполнения двух вышеуказанных условий следуйте лицензии GPLv3.

Последняя версия

Инструкции по установке образа Docker см. в разделе «Установка на облачной платформе».

Что такое Check酱?

Check酱 — это продукт компании Fangtang Qiqi, инструмент для отслеживания веб-контента. Он включает в себя плагин для браузера Edge/Chrome и облачную платформу, которую можно настроить самостоятельно.

На основе плагина он может отслеживать любой контент (текст) на веб-странице, за исключением уведомлений браузера, а также может быть объединён с Server酱 для отправки уведомлений в WeChat или на мобильные устройства.

Check酱 работает по принципу открытия веб-страницы в фоновом режиме через плагин для браузера. Таким образом, он полностью имитирует поведение пользователя и может отслеживать большинство динамических веб-сайтов, страниц входа и автоматически продлевать сеансы входа (в большинстве случаев).

Помимо поддержки отслеживания содержимого веб-страниц (Dom), он также поддерживает мониторинг HTTP-статуса (через GET), JSON и RSS.

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

Установка и использование плагина

Плагин можно использовать отдельно, но задачи мониторинга не будут выполняться после его закрытия.

  • Установка

    В настоящее время Check酱 находится в стадии бета-тестирования и ещё не доступен в магазине приложений Edge. Его можно загрузить вручную.

Скачайте ZIP-файл плагина(GitHub скачать без регистрации), распакуйте его в каталог (далее именуемый A).

Откройте страницу плагинов в Edge и включите «Режим разработчика». Нажмите «Load Unpacked» и выберите каталог A, созданный на предыдущем шаге.

Если загрузка прошла успешно, вы увидите интерфейс Check酱. Если загрузка не удалась, обычно это происходит из-за добавления дополнительного уровня каталога во время распаковки. Попробуйте выбрать подкаталог каталога A.

  • Использование Добавление точек мониторинга веб-страниц

После установки плагина откройте веб-сайт, который вы хотите отслеживать, и нажмите правую кнопку мыши. Вы увидите опцию «Определить местоположение точки мониторинга».

Нажмите на неё, чтобы инициализировать визуальный селектор.

Перемещая мышь, вы можете увидеть выделенную область. Щёлкните левой кнопкой мыши на тексте, который хотите отслеживать.

Обратите внимание, что выбранная область должна содержать текст, иначе она будет пустой. Многие тексты напечатаны на изображениях, которые также вернут пустые значения.

Вы перейдёте на страницу добавления.

Здесь вы можете изменить имя, настроить интервал мониторинга, задержку и максимальное количество повторных попыток. Прежде чем сохранить, рекомендуется нажать кнопку «Тест» в поле «Путь CSS-селектора».

Если появится сообщение «Содержимое проверки пусто», это означает, что есть проблема. Повторите попытку и наблюдайте:

Если вы обнаружите, что значок сайта не отображается после открытия, увеличьте значение «Задержка чтения» в секундах; если значок всё ещё не появляется после открытия, возможно, путь автоматического выбора, сгенерированный браузером, неверен.

Можно попробовать использовать путь выбора, автоматически сгенерированный браузером. Вот как это сделать:

① Щёлкните правой кнопкой мыши на отслеживаемом тексте и выберите «Проверить/проверить элемент».

② Откроется окно инструментов разработчика, и соответствующая строка исходного кода будет автоматически выбрана. На выбранной строке щёлкните правой кнопкой мыши и выберите «Копировать/Копировать». → «Скопировать селектор/Копировать селектор».

③ Скопируйте путь, указанный в буфере обмена, в поле «Путь селектора CSS» и снова нажмите кнопку «Тест».

После успешного тестирования нажмите «Отправить» для сохранения точки мониторинга.

Отправка уведомлений на Server酱

При добавлении и изменении точек мониторинга введите Sendkey, чтобы отправить уведомление на Server酱.

Как получить SendKey

Войдите на официальный сайт Server酱, перейдите в раздел «Ключ и API» и нажмите «Копировать».

Как отправлять уведомления на другие каналы

Войдите на официальный сайт Server酱, перейдите в раздел «Каналы конфигурации» (https://sct.ftqq.com/forward) и выберите канал, на который нужно отправить уведомление. Следуйте инструкциям на странице для настройки. Уведомления можно отправлять на PushDeer и различные боты группового чата.

Если вышеуказанные каналы не соответствуют вашим потребностям, вы можете выбрать «Пользовательский» канал и отправить настраиваемый HTTP-запрос. Этот метод совместим с большинством интерфейсов уведомлений.

Если вам нужно отправить уведомления на сторонние платформы, такие как Discord, Telegram и т. д., вы можете использовать функцию «Пользовательский канал» для отправки HTTP-запросов на эти платформы.

Импорт и экспорт всех точек мониторинга

Щёлкните на стрелки вверх и вниз в правом верхнем углу списка точек мониторинга, чтобы импортировать и экспортировать все точки мониторинга.

Поделиться и импортировать точки мониторинга

Щелкните «Буфер обмена» в списке точек мониторинга, чтобы экспортировать текущие настройки точек мониторинга в буфер обмена.

Экспортированные данные выглядят следующим образом:

checkchan://title=Server%E9%85%B1%E5%AE%98%E6%96%B9%E7%BD%91%E7%AB%99%E7%8A%B6%E6%80%81&url=https%3A%2F%2Fsct.ftqq.com&type=get&code=200&rss_field=title&delay=3&retry=10

Скопируйте приведённый выше текст и вставьте его в Check酱 с помощью Ctrl+V. Плагин автоматически распознает и откроет страницу «Добавить точку мониторинга».

Ограничение мониторинга по времени

Некоторые задачи необходимо выполнять только в определённые периоды времени. Чтобы сэкономить ресурсы, мы добавили функцию ограничения мониторинга по времени. Например, если определённое анимационное видео обновляется в 10:00 каждое утро в пятницу, вы можете установить ограничение мониторинга следующим образом:

Таким образом, мониторинг не будет запускаться в другое время. Для задач, время выполнения которых невозможно предсказать, можно использовать «Каждую минуту» по умолчанию.

Обратите внимание, что над «Ограничением мониторинга по времени» есть «Интервал мониторинга».

Если установлено «Ограничение мониторинга по времени», мониторинг будет выполняться только в заданный период времени. Для каждого интервала времени, равного 60 минутам, будет производиться попытка мониторинга. Если мониторинг успешен, то следующая попытка мониторинга будет произведена через 60 минут.

Кроме того, поскольку выполнение задачи мониторинга само по себе также требует времени, при интервале времени в 1 минуту задача обычно выполняется каждые две минуты (то есть каждые 2 минуты).

Selector 扩展语法

Через @ указать элемент массива

Последняя версия поддерживает новый синтаксис Selector: поскольку он реализован через document.querySelectorAll, он возвращает все соответствующие элементы в виде массива. Когда эти элементы принадлежат одному и тому же родительскому узлу, мы можем использовать :nth-of-type(1) или :nth-child(1), чтобы указать на определённый элемент в массиве.

Однако если эти элементы не принадлежат одному и тому же родительскому элементу, этот метод не сработает. Здесь добавлен синтаксис selector@n, который позволяет нам указывать на конкретный элемент из массива Selector. Например, .booklist .item@0 вернёт document.querySelectorAll(.booklist .item)[0].

Синтаксис @ можно использовать не только для DOM-селекторов, но и для указания результатов мониторинга RSS. По умолчанию RSS возвращает первую статью всего Feed, и вы можете добавить @1 после URL Feed, чтобы указать вторую статью (счёт начинается с 0).

Получить атрибут элемента через %

Самый нижний уровень Selector возвращает один элемент, но иногда нам нужно отслеживать определённое значение атрибута этого элемента. Например, атрибут href ссылки. Чтобы решить эту проблему, мы расширили синтаксис селектора, позволяя пользователям получать значение атрибута элемента через element%attribute. Например: article#post-180 > div > div > p > a%href. Когда % и @ используются вместе, % должен следовать сразу за элементом, например: article#post-180 > div > div > p > a%href@0.

Просмотр журнала и определение ошибок

Чтобы лучше понять, как выполняются периодические задачи, вы можете открыть «Инструменты разработчика» (F12) и посмотреть журнал выполнения задач в консоли.

Ошибки также будут отображаться здесь в виде строк, выделенных красным цветом. Предоставление скриншотов журналов ошибок при возникновении проблем может помочь нам быстрее определить источник проблемы.

Обновление плагинов браузера

После выпуска в магазин обновления могут устанавливаться автоматически. До этого момента необходимо обновлять вручную. Для обновления необходимо загрузить zip-файл, разархивировать его и перезапустить плагин в панели управления плагинами браузера.

Установка и использование зеркала

Новое зеркало объединяет облачную и удалённую версии рабочего стола, что позволяет использовать его после однократной установки.

  • Облачная версия: в сочетании с настроенным сервером задачи можно синхронизировать с облаком для непрерывного выполнения даже после закрытия браузера и выключения компьютера.
  • Удалённая версия рабочего стола: Docker упаковывает Chrome, предоставляя доступ к VNC и веб-интерфейсу, подобно использованию на компьютере.

⚠️ Обратите внимание: поскольку сеть и среда облака отличаются от вашей локальной среды, не все задачи, которые могут выполняться локально, могут быть успешно выполнены в облаке. Некоторые сложные веб-страницы и страницы с большим количеством динамических эффектов могут привести к сбоям.

Установка

Настройка облачной версии требует технических знаний. Рекомендуется приобрести официальную облачную версию (которая будет выпущена после внутреннего тестирования).

Необходим Docker. Если у вас нет облачного сервера, вы можете рассмотреть возможность использования облачных серверов Tencent стоимостью от 30 до 50 юаней за первый заказ.

Одноэтапная установка

Перейдите на страницу инструментов (https://install.ftqq.com/config/checkchan).

Запуск с помощью Docker-compose

Войдите на сервер (предположим, что его IP-адрес — IPB), создайте каталог данных в каталоге, где вы хотите установить программу, и сделайте его доступным для записи:

mkdir data && chmod 0755 data

Создайте файл docker-compose.yml и вставьте следующий код, настроив его в соответствии с инструкциями, а затем сохранив:

version: '3'
services:
  chrome:
    image: easychen/checkchan:latest
    volumes:
      - "./data:/checkchan/data"
    environment:
      - "CKC_PASSWD=<здесь пароль для удалённого рабочего стола, укажите свой>"
      - "VDEBUG=OFF"
      - "VNC=ON"
      #- "WIN_WIDTH=414"
      #- "WIN_HEIGHT=896"
      #- "XVFB_WHD=500x896x16"
      - "API_KEY=<здесь API KEY для облака, укажите свой>"
      - "ERROR_IMAGE=NORMAL" # NONE,NORMAL,FULL
      #- "SNAP_URL_BASE=<включите снимок экрана здесь, указав адрес сервера (без / в конце), оставьте пустым, если не требуется>..."
      #- "SNAP_FULL=1"
      - "TZ=Asia/Chongqing"
      # - "WEBHOOK_URL=http://..." # URL-адрес Webhook в облаке, не требуется, если оставить пустым
      # - "WEBHOOK_FORMAT=json" # формат POST Webhook, по умолчанию — Form
    ports:
      - "5900:5900" 
      - "8080:8080" 
      - "8088:80"

Замените <здесь пароль для удалённого рабочего стола> и <здесь API KEY для облака> на пароли C и D соответственно. Обратите внимание, что пароль не должен содержать символ $, и удалите скобки <> после замены.

Если вы не хотите запускать удалённый рабочий стол, измените VNC=ON на VNC=OFF.

Убедитесь, что пользователь Docker имеет права доступа к этому каталогу, и запустите следующую команду в том же каталоге:

docker-compose up -d

Если вы получаете сообщение об ошибке, связанной с Docker, попробуйте запустить команду с sudo.

Дождитесь завершения инициализации, затем перейдите по адресу http://$BBB:8080 (замените $BBB на IP B), чтобы увидеть интерфейс NoVNC.

Порты службы:

  • облако: 8088
  • удалённый рабочий стол (VNC): 5900
  • интерфейс NoVNC для удалённого рабочего стола: 8080

Запустите с помощью Docker

Вы также можете передать параметры docker-compose команде docker для запуска:

docker run -d -p 8088:80 -p 8080:8080 -p 5900:5900 -v ${PWD}/data:/checkchan/data -e API_KEY=123  -e VDEBUG=OFF -e VNC=ON -e SNAP_URL_BASE=http://localhost:8088  -e CKC_PASSWD=123 -e TZ=Asia/Chongqing easychen/checkchan:latest

Пожалуйста, замените 123 на желаемый пароль и замените SNAP_URL_BASE на внешний IP-адрес вашего сервера (если вы планируете просматривать снимки экрана с мобильного устройства).

Установка на групповом сервере

Только групповые модели с поддержкой Docker могут устанавливать Checkchan. Помимо возможности установки с использованием командной строки, вы также можете обратиться к руководству по установке с графическим интерфейсом.

Параметры тома и переменные среды можно настроить в соответствии с настройками docker/compose, описанными выше.

Обновление образа

После обновления образа Checkchan вы можете обновить работающий облачный сервис. Вот как это сделать:

Сначала остановите текущий контейнер:

При запуске с помощью docker-compose выполните команду docker-compose down.

При непосредственном запуске с помощью команды docker найдите идентификатор контейнера с помощью docker ps, а затем остановите его с помощью docker stop <идентификатор контейнера>.

Затем потяните последний образ с помощью команды docker pull:

docker pull easychen/checkchan:latest

Завершив обновление, запустите службу.

Использование облака

Подключите браузерный плагин к облаку

Нажмите кнопку «Облачный сервис» в правом верхнем углу плагина.

В поле «Адрес сервера» введите http://$BBB:8088 (замените $BBB на IP B, URL не требует добавления ключа API), а в поле «API_KEY» введите пароль C.

Сохраните изменения, и после успешного подключения к облачному сервису рядом с каждой задачей в списке появится значок «компьютер», который изменится на значок «облако». Задачи, отмеченные значком «облако», будут выполняться в облачном сервисе.

Синхронизируйте локальные задачи с облачным сервисом

Настроив облачный сервис, вернитесь на страницу списка задач. В крайнем правом столбце каждой строки будет отображаться значок «компьютер». После нажатия на него значок изменится на «облако», и задача будет выполняться в облачном сервисе.

Щелкните правой кнопкой мыши значок «облако + стрелка» в верхнем правом углу, чтобы вручную синхронизировать задачи с облачным сервисом.

Checkchan автоматически синхронизирует задачи каждые десять минут. SNAP_URL_BASE=<включите функцию скриншотов, указав здесь адрес сервера, если не нужно, оставьте пустым> #например, http://ip.com/

  • SNAP_FULL=1 #скриншот полной веб-страницы

Можно обратиться к файлу docker-compose.yml для получения дополнительной информации. После добавления переменных среды необходимо перезапустить сервис.

Обратите внимание:

  • Функция скриншотов требует большого объёма памяти, на некоторых серверах могут возникать ошибки;
  • В облачной среде и локальной сети разное время ожидания, возможно возникновение ошибок из-за тайм-аута. Рекомендуется увеличить задержку и отключить создание полных скриншотов.

Интерфейс для передачи данных в RSS-канал

Check酱 имеет встроенный интерфейс для динамических страниц, который используется для отправки данных в RSS-канал:

  • Адрес для отправки данных: http://$ip:$port/rss/upload?key=$api_key
  • Адрес RSS-канала: http://$ip:$port/image/rss.xml?key=$api_key

Синхронный интерфейс Cookie

Check酱 также имеет встроенный синхронный интерфейс для Cookie:

  • Синхронный URL: http://$ip:$port/cookie/sync?key=$api_key
  • Пароли для синхронизации: устанавливаются самостоятельно, должны быть одинаковыми в двух синхронизируемых браузерах
  • Направление синхронизации: один отправляет данные, другой получает
  • Частота синхронизации: интервал между отправкой и получением данных

Безопасность облачных задач

Принцип работы облачных задач Check酱 заключается в синхронизации Cookie с облаком, после чего они могут быть просмотрены в браузере. По сути, это то же самое, что и действия пользователя. Однако, поскольку исходящий IP-адрес может быть связан с дата-центром или серверной комнатой, слишком высокая частота запросов может вызвать подозрения у системы обнаружения и предотвращения вторжений (IDS/IPS). Если развернуть облако дома, то работа будет аналогична использованию домашнего компьютера.

Поиск и устранение проблем в облаке

Обычно проблемы, когда локальные задачи выполняются успешно, а облачные — нет, связаны с различиями в сетевой среде и программном обеспечении браузера, например:

  1. Структура страницы постоянно меняется: рекомендуется перейти на страницу категорий и выбрать точку мониторинга.
  2. Различия в сетевых условиях компьютера и облака: содержимое, доступное на компьютере, может быть недоступно в облачном центре обработки данных.
  3. Задержка обновления CDN: если обновление CDN на компьютере и облачном узле ещё не завершено, это может привести к тому, что некоторые элементы будут доступны на одном устройстве и недоступны на другом. Необходимо дождаться завершения обновления перед началом мониторинга.
  4. Плагины браузера изменили структуру страницы: например, AdBlock на локальном компьютере отфильтровал рекламу, но в облаке этого не произошло, что привело к различиям в структуре и сбоям мониторинга.

Из-за ограниченной памяти серверов по сравнению с домашними компьютерами, многие задачи, которые успешно выполняются локально, могут завершиться неудачно в облаке из-за недостаточного времени ожидания. Если возникает такая проблема, рекомендуется попробовать увеличить время ожидания.

Если эти меры не помогают, проблема может быть связана с тем, что отображение безголового браузера в облаке отличается от отображения на локальном компьютере. В этом случае мы создали снимок последней неудачной попытки. Его можно найти в меню «Облачные сервисы».

Если задача завершается неудачно и снимок не создаётся, это означает, что причина неудачи не связана с невозможностью выбора CSS-селектора. Попробуйте увеличить время ожидания, это может помочь решить проблему.

На этой странице также можно просмотреть журнал облачных задач. Этот журнал не содержит записей о задачах, запущенных вручную через кнопку «Мониторинг». Если нет доступных задач (задачи запускаются автоматически), журнал также может быть пустым.

Использование версии для удалённого рабочего стола

Помимо облачного сервиса, мы также включили удалённый рабочий стол в образ. Он позволяет подключаться к серверу через VNC и использовать его так же, как локальный браузер.

Версия для удалённого рабочего стола ранее была отдельным образом, теперь она интегрирована в easychen/checkchan, поэтому вы можете использовать её напрямую.

Использование через веб-интерфейс

  • Веб-интерфейс: http:///$BBB:8080
  • Пароль: 123 (можно изменить командой)

Подключение через VNC

После запуска службы можно подключиться через клиентское программное обеспечение VNC.

  • Соединение: IP-адрес сервера:5900
  • Пароль: 123 (можно изменить командой)

Подключение к облаку

В удалённом рабочем столе можно напрямую подключиться к тому же контейнеру, в котором работает облако. Для этого введите http://localhost в качестве адреса сервера и используйте API KEY, указанный в YML-файле.

Мобильная версия

Можно добавить переменные среды и изменить разрешение экрана, чтобы сделать его более удобным для мобильных устройств:

- WIN_WIDTH=414 
- WIN_HEIGHT=896 
- XVFB_WHD=500x896x16

Пример добавления в команду docker:

docker run -d -p 5900:5900 -v ${PWD}/data:/checkchan/data -e CKC_PASSWD=123 -e WIN_WIDTH=414 -e WIN_HEIGHT=896 -e XVFB_WHD=500x896x16 easychen/checkchan:latest

Особое примечание

Ежедневное использование контейнера составляет 300–500 МБ. Работа в среде с большим объёмом памяти будет более стабильной, и при возникновении проблем можно попробовать увеличить объём памяти.

Визуальная отладка

Используя тот же образ, можно визуально отлаживать облачные задачи. Для этого установите VDEBUG=ON в файле YML и перезапустите контейнер, чтобы увидеть подробный процесс мониторинга веб-страниц в облаке.

environment:
  - "CKC_PASSWD=123"
  - "VDEBUG=ON"

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/easychen-checkchan-dist.git
git@api.gitlife.ru:oschina-mirror/easychen-checkchan-dist.git
oschina-mirror
easychen-checkchan-dist
easychen-checkchan-dist
master