Автоматическая проверка времени чтения в WeChat

Помощник для вызова членства в WeChat Reading — это инструмент, помогающий пользователям получать членство в WeChat Reading по более низкой цене, с помощью функций автоматического чтения и проверки, помогающих пользователям выполнять задачи вызова WeChat Reading, чтобы получить права членства. Инструмент поддерживает несколько платформ, несколько браузеров и предоставляет богатые параметры конфигурации и функции запланированных задач.

Только ради более дешевой покупки членства в WeChat Reading.

Этот документ может устареть, самую свежую информацию можно найти по адресу: https://github.com/jqknono/weread-challenge-selenium

Только ради более дешевой покупки членства в WeChat Reading

Правила WeChat Reading

  • Офлайнное чтение включается в общее время, но требует подключения к Интернету для отправки отчетов
  • Версия для веб-браузера, электронные чернила, мини-программа, прослушивание, прослушивание аудиокниг все включаются в общее время
  • Для действий по автоматическому чтению или прослушиванию, превышающих определенную продолжительность, платформа будет определять на основе характеристик поведения пользователя, часть, превышающая лимит, не включается в общее время
  • Чтение в течение дня считается действительным днем чтения только при превышении 5 минут
  • Оплата 5 юаней сразу дает 2 дня членства, в последующие 30 дней необходимо пройти проверку 29 дней, общее время чтения должно превышать 30 часов, можно получить 30 дней членства и 30 книжных монет
  • Оплата 50 юаней сразу дает 30 дней членства, в последующие 365 дней необходимо пройти проверку 360 дней, общее время чтения должно превышать 300 часов, можно получить 365 дней членства и 500 книжных монет

Согласно практическим операциям, также есть следующие неясные особенности:

  • После проверки на 29-й день сразу получается награда в виде членства в книжном клубе, и можно сразу начать следующий цикл проверки членства, не нужно ждать 31-го дня для начала следующего цикла проверки, проверка на 29-й день считается как проверка предыдущего цикла, так и проверка следующего цикла.
  • Кроме первого цикла, который требует 29 дней, в последующих циклах можно получить 32 дня членства за каждые 28 дней, 1+28*13=365, можно завершить 13 циклов в год, потратив 65 юаней, получить 32*13=416 дней членства и 390 книжных монет.
  • Более выгодным все еще остается годовой вызов членства, но цикл дольше, риски больше.

Характеристики инструмента

  • Использование браузера с графическим интерфейсом
  • Поддержка локального и удаленного браузеров
  • Случайная ширина и высота браузера
  • Поддержка ожидания входа в систему
  • Поддержка обновления QR-кода для входа
  • Поддержка сохранения cookies
  • Поддержка загрузки cookies
  • Поддержка выбора книги X из недавно читаемых для начала чтения
  • По умолчанию случайный выбор книги для начала чтения
  • Поддержка автоматического чтения
  • Поддержка перехода к следующей главе
  • Поддержка возврата к первой главе после окончания чтения
  • Поддержка выбора скорости чтения
  • Случайное время чтения на странице
  • Случайное время переворота страницы
  • Скриншот текущего интерфейса каждую минуту
  • Поддержка журнала
  • Поддержка запланированных задач
  • Поддержка настройки времени чтения
  • Поддержка уведомлений по электронной почте
  • Поддержка нескольких платформ: linux | windows | macos
  • Поддержка браузеров: chrome | MicrosoftEdge | firefox
  • Поддержка нескольких пользователей
  • Принудительное обновление при исключении
  • Использование статистики

Linux

Прямой запуск

# Установка nodejs
sudo apt install nodejs
# Устаревшие версии nodejs требуют установки npm
sudo apt install npm
# Создание папки для запуска
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Установка зависимостей
npm install selenium-webdriver
# Скачивание скрипта
wget https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -O weread-challenge.js
# Настройка параметров запуска через переменные окружения
export WEREAD_BROWSER="chrome"
# Запуск
WEREAD_BROWSER="chrome" node weread-challenge.js

Для уведомлений по электронной почте необходимо установить nodemailer: npm install nodemailer

Запуск через Docker Compose

services:
  app:
    image: jqknono/weread-challenge:latest
    pull_policy: always
    environment:
      - WEREAD_REMOTE_BROWSER=http://selenium:4444
      - WEREAD_DURATION=68
    volumes:
      - ./data:/app/data
    depends_on:
      selenium:
        condition: service_healthy

  selenium:
    image: selenium/standalone-chrome:4.26
    pull_policy: if_not_present
    shm_size: 2gb
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - SE_ENABLE_TRACING=false
      - SE_BIND_HOST=false
      - SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4444/wd/hub/status"]
      interval: 5s
      timeout: 60s
      retries: 10

Сохраните как docker-compose.yml, запустите docker compose up -d.
После первого запуска необходимо отсканировать QR-код в WeChat для входа, QR-код сохраняется в ./data/login.png

Запуск через Docker

# Запуск selenium standalone
docker run --restart always -d --name selenium-live \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --shm-size="2g" \
  -p 4444:4444 \
  -p 7900:7900 \
  -e SE_ENABLE_TRACING=false \
  -e SE_BIND_HOST=false \
  -e SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false \
  -e SE_NODE_MAX_INSTANCES=10 \
  -e SE_NODE_MAX_SESSIONS=10 \
  -e SE_NODE_OVERRIDE_MAX_SESSIONS=true \
  selenium/standalone-chrome:4.26

# Запуск weread-challenge
docker run --rm --name user-read \
  -v $HOME/weread-challenge/user/data:/app/data \
  -e WEREAD_REMOTE_BROWSER=http://172.17.0.2:4444 \
  -e WEREAD_DURATION=68 \
  weread-challenge:latest

# Добавление другого пользователя
docker run --rm --name user2-read \
  -v $HOME/weread-challenge/user2/data:/app/data \
  -e WEREAD_REMOTE_BROWSER=http://172.17.0.2:4444 \
  -e WEREAD_DURATION=68 \
  weread-challenge:latest

После первого запуска необходимо отсканировать QR-код в WeChat для входа, QR-код сохраняется в ./data/login.png

Создание запланированных задач

Способ docker-compose

WORKDIR=$HOME/weread-challenge
mkdir -p $WORKDIR
cd $WORKDIR
cat > $WORKDIR/docker-compose.yml <<EOF
services:
  app:
    image: jqknono/weread-challenge:latest
    pull_policy: always
    environment:
      - WEREAD_REMOTE_BROWSER=http://selenium:4444
      - WEREAD_DURATION=68
    volumes:
      - ./data:/app/data
    depends_on:
      selenium:
        condition: service_healthy

  selenium:
    image: selenium/standalone-chrome:4.26
    pull_policy: if_not_present
    shm_size: 2gb
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - SE_ENABLE_TRACING=false
      - SE_BIND_HOST=false
      - SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4444/wd/hub/status"]
      interval: 5s
      timeout: 60s
      retries: 10
EOF
# После первого запуска необходимо отсканировать QR-код в WeChat для входа, QR-код сохраняется в $HOME/weread-challenge/data/login.png
# Запуск каждый день в 7 утра, чтение 68 минут
(crontab -l 2>/dev/null; echo "00 07 * * *  cd $WORKDIR && docker compose up -d") | crontab -

Способ docker

# Запуск браузера
docker run --restart always -d --name selenium-live \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --shm-size="2g" \
  -p 4444:4444 \
  -p 7900:7900 \
  -e SE_ENABLE_TRACING=false \
  -e SE_BIND_HOST=false \
  -e SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false \
  -e SE_NODE_MAX_INSTANCES=3 \
  -e SE_NODE_MAX_SESSIONS=3 \
  -e SE_NODE_OVERRIDE_MAX_SESSIONS=true \
  -e SE_SESSION_REQUEST_TIMEOUT=10 \
  -e SE_SESSION_RETRY_INTERVAL=3 \
  selenium/standalone-chrome:4.26

WEREAD_USER="user"
mkdir -p $HOME/weread-challenge/$WEREAD_USER/data

# Получение IP контейнера
Selenium_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' selenium-live)

# После первого запуска необходимо отсканировать QR-код в WeChat для входа, QR-код сохраняется в $HOME/weread-challenge/$WEREAD_USER/data/login.png
# Запуск каждый день в 7 утра, чтение 68 минут
(crontab -l 2>/dev/null; echo "00 07 * * * docker run --rm --name ${WEREAD_USER}-read -v $HOME/weread-challenge/${WEREAD_USER}/data:/app/data -e WEREAD_REMOTE_BROWSER=http://${Selenium_IP}:4444 -e WEREAD_DURATION=68 -e WEREAD_USER=${WEREAD_USER} jqknono/weread-challenge:latest") | crontab -

Windows

# Установка nodejs
winget install -e --id Node.js.Node.js
# Создание папки для запуска
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Установка зависимостей
npm install selenium-webdriver
# Скачивание скрипта powershell
Invoke-WebRequest -Uri https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -OutFile weread-challenge.js
# Настройка параметров запуска через переменные окружения
$env:WEREAD_BROWSER="MicrosoftEdge"
# Запуск
node weread-challenge.js

Запуск Docker аналогичен Linux.

MacOS

# Установка nodejs
brew install node
# Создание папки для запуска
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Установка зависимостей
npm install selenium-webdriver
# Скачивание скрипта
wget https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -O weread-challenge.js
# Настройка параметров запуска через переменные окружения
export WEREAD_BROWSER="chrome"
# Запуск
node weread-challenge.js

Запуск Docker аналогичен Linux.

Поддержка нескольких пользователей

# Запуск браузера
docker run --restart always -d --name selenium-live \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --shm-size="2g" \
  -p 4444:4444 \
  -p 7900:7900 \
  -e SE_ENABLE_TRACING=false \
  -e SE_BIND_HOST=false \
  -e SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false \
  -e SE_NODE_MAX_INSTANCES=10 \
  -e SE_NODE_MAX_SESSIONS=10 \
  -e SE_NODE_OVERRIDE_MAX_SESSIONS=true \
  selenium/standalone-chrome:4.26

WEREAD_USER1="user1"
WEREAD_USER2="user2"
mkdir -p $HOME/weread-challenge/$WEREAD_USER1/data
mkdir -p $HOME/weread-challenge/$WEREAD_USER2/data

# Получение IP контейнера
Selenium_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' selenium-live)

# После первого запуска необходимо отсканировать QR-код в WeChat для входа, QR-код сохраняется в:
# /$HOME/weread-challenge/${WEREAD_USER1}/data/login.png
# /$HOME/weread-challenge/${WEREAD_USER2}/data/login.png
# Запуск каждый день в 7 утра, чтение 68 минут
(crontab -l 2>/dev/null; echo "00 07 * * * docker run --rm --name ${WEREAD_USER1}-read -v $HOME/weread-challenge/${WEREAD_USER1}/data:/app/data -e WEREAD_REMOTE_BROWSER=http://${Selenium_IP}:4444 -e WEREAD_DURATION=68 -e WEREAD_USER=${WEREAD_USER1} jqknono/weread-challenge:latest") | crontab -
(crontab -l 2>/dev/null; echo "00 07 * * * docker run --rm --name ${WEREAD_USER2}-read -v $HOME/weread-challenge/${WEREAD_USER2}/data:/app/data -e WEREAD_REMOTE_BROWSER=http://${Selenium_IP}:4444 -e WEREAD_DURATION=68 -e WEREAD_USER=${WEREAD_USER2} jqknono/weread-challenge:latest") | crontab -

Конфигурационные параметры

Переменная окруженияЗначение по умолчаниюДопустимые значенияОписание
WEREAD_USERweread-default-Идентификатор пользователя
WEREAD_REMOTE_BROWSER""-Адрес удаленного браузера
WEREAD_DURATION10-Время чтения
WEREAD_SPEEDslowslow,normal,fastСкорость чтения
WEREAD_SELECTIONrandom[0-4]Выбор книги для чтения
WEREAD_BROWSERchromechrome,MicrosoftEdge,firefoxБраузер
ENABLE_EMAILfalsetrue,falseУведомления по электронной почте
EMAIL_SMTP""-SMTP-сервер электронной почты
EMAIL_USER""-Имя пользователя электронной почты
EMAIL_PASS""-Пароль электронной почты
EMAIL_TO""-Адресат
WEREAD_AGREE_TERMStruetrue,falseСогласие с условиями конфиденциальности

Примечания

  • Для накопления 30 часов за 28 дней необходимо читать не менее 65 минут каждый день, а не 60 минут.
  • WeChat Reading может пропустить несколько минут при подсчете, ожидается получение 65 минут в день, рекомендуется настроить время чтения на 68 минут
  • Сookie для входа по QR-коду в веб-версии действительны 30 дней, через 30 дней необходимо снова отсканировать QR-код для входа, подходит для месячного вызова членства
  • Уведомления по электронной почте могут быть распознаны как спам, рекомендуется добавить белый список на стороне получателя
  • Этот проект предназначен только для обучения и обмена, не используйте в коммерческих целях, не используйте в противоправных целях
  • В случае возможного нарушения авторских прав, пожалуйста, свяжитесь с weread-challenge@techfetch.dev, проект будет немедленно удален

Политика конфиденциальности

  • Получение конфиденциальной информации
    • Этот проект собирает частичную информацию cookies пользователя для статистики и отображения пользователей.
    • Собирает информацию об использовании пользователя, включая: имя пользователя | время первого использования | время последнего использования | общее количество использований | тип браузера | категория операционной системы | настройка времени чтения | причина аномального выхода
    • Если вы не хотите, чтобы собирались какие-либо данные, установите параметр запуска WEREAD_AGREE_TERMS=false
  • Предупреждение о рисках
    • cookies можно использовать для входа в WeChat Reading через веб-браузер, после входа можно выполнять операции с книжной полкой, но этот инструмент не будет использовать собранные данные для входа.
    • Защитные механизмы Tencent обеспечивают, что при аномальном входе в систему клиент WeChat на телефоне получит предупреждение о риске, можно подтвердить устройство входа в настройках->устройствах входа на клиенте WeChat.
    • Этот инструмент полностью реализован на js, легко декомпилируется и расширяется, третьи стороны могут продолжить разработку. Даже доверяя этому инструменту, следует регулярно подтверждать устройства входа при использовании автоматизированных инструментов, чтобы избежать вредоносных операций с книжной полкой.

Ссылки