Leitor WeChat - Registro Automático e Acúmulo de Tempo de Leitura

WeChat Reader Challenge Member Helper é uma ferramenta que ajuda os usuários a obter o status de membro do WeChat Reader com menor custo, através de funções automatizadas de leitura e check-in, ajudando os usuários a completar as tarefas do WeChat Reader Challenge e assim obter os benefícios de membro. A ferramenta suporta múltiplas plataformas, múltiplos navegadores e fornece ricas opções de configuração e funções de tarefas agendadas.

Apenas para comprar o status de membro do WeChat Reader por um preço mais barato.

Este documento pode estar desatualizado. O mais recente pode ser acessado no endereço do código aberto: https://github.com/jqknono/weread-challenge-selenium

Apenas para comprar o status de membro do WeChat Reader por um preço mais barato

Regras do WeChat Reader

  • Leitura offline é contada no tempo total, mas precisa ser reportada online
  • Versão web, e-ink, mini-programa, audiolivro, escuta de audiolivro são contados no tempo total
  • Para comportamentos de leitura automática ou escuta por tempo muito longo, a plataforma julgará combinando características do comportamento do usuário, partes muito longas não são contadas no tempo total
  • Apenas dias de leitura efetiva superiores a 5 minutos no mesmo dia são considerados dias de leitura válidos
  • Pague 5 yuan para obter imediatamente 2 dias de status de membro, posteriormente complete 29 dias de check-in dentro de 30 dias, tempo de leitura superior a 30 horas, pode obter 30 dias de status de membro e 30 moedas de livros
  • Pague 50 yuan para obter imediatamente 30 dias de status de membro, posteriormente complete 360 dias de check-in dentro de 365 dias, tempo de leitura superior a 300 horas, pode obter 365 dias de status de membro e 500 moedas de livros

De acordo com a operação prática, há ainda as seguintes características não explicitamente descritas:

  • Após o check-in do 29º dia, o status de membro é concedido imediatamente e pode iniciar imediatamente o próximo ciclo de check-in do desafio de status de membro, não é necessário esperar até o 31º dia para iniciar o próximo ciclo de desafio de status de membro, o check-in do 29º dia serve tanto para o ciclo anterior quanto para o próximo ciclo.
  • Exceto o primeiro ciclo que requer 29 dias, os ciclos subsequentes podem obter 32 dias de status de membro a cada 28 dias, 1+28*13=365, pode-se completar 13 ciclos em um ano, gastando 65 yuan, obtendo 32*13=416 dias de status de membro e 390 moedas de livros.
  • Ainda mais vantajoso é o desafio anual de status de membro, mas com ciclo mais longo e risco maior.

Características da Ferramenta

  • Usa navegador com interface gráfica
  • Suporta navegador local e remoto
  • Largura e altura do navegador aleatórias
  • Suporta espera de login
  • Suporta atualização do código QR de login
  • Suporta salvar cookies
  • Suporta carregar cookies
  • Suporta escolher o livro X mais recentemente lido para iniciar a leitura
  • Por padrão escolhe aleatoriamente um livro para iniciar a leitura
  • Suporta leitura automática
  • Suporta pular para o próximo capítulo
  • Suporta voltar ao primeiro capítulo após terminar a leitura
  • Suporta escolher a velocidade de leitura
  • Tempo de leitura aleatório por página
  • Tempo de virada de página aleatório
  • Captura de tela da interface atual a cada minuto
  • Suporta registro de logs
  • Suporta tarefas agendadas
  • Suporta definir tempo de leitura
  • Suporta notificação por e-mail
  • Suporte multiplataforma: linux | windows | macos
  • Suporta navegadores: chrome | MicrosoftEdge | firefox
  • Suporta múltiplos usuários
  • Atualização forçada em caso de exceção
  • Uso estatístico

Linux

Execução Direta

# Instalar nodejs
sudo apt install nodejs
# Versões antigas do nodejs precisam instalar npm
sudo apt install npm
# Criar pasta de execução
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Instalar dependências
npm install selenium-webdriver
# Baixar script
wget https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -O weread-challenge.js
# Definir parâmetros de execução via variáveis de ambiente
export WEREAD_BROWSER="chrome"
# Executar
WEREAD_BROWSER="chrome" node weread-challenge.js

Para notificação por e-mail, é necessário instalar nodemailer: npm install nodemailer

Execução via 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

Salvar como docker-compose.yml, executar docker compose up -d.
Na primeira inicialização, é necessário escanear o código QR com WeChat para login, o código QR é salvo em ./data/login.png

Execução via Docker

# Executar 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

# Executar 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

# Adicionar outro usuário
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

Na primeira inicialização, é necessário escanear o código QR com WeChat para login, o código QR é salvo em ./data/login.png

Criar Tarefa Agendada

Forma 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
# Na primeira inicialização, é necessário escanear o código QR com WeChat para login, o código QR é salvo em $HOME/weread-challenge/data/login.png
# Iniciar todos os dias às 7h, ler por 68 minutos
(crontab -l 2>/dev/null; echo "00 07 * * *  cd $WORKDIR && docker compose up -d") | crontab -

Forma docker

# Iniciar navegador
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

# Obter IP do container
Selenium_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' selenium-live)

# Na primeira inicialização, é necessário escanear o código QR com WeChat para login, o código QR é salvo em $HOME/weread-challenge/$WEREAD_USER/data/login.png
# Iniciar todos os dias às 7h, ler por 68 minutos
(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

# Instalar nodejs
winget install -e --id Node.js.Node.js
# Criar pasta de execução
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Instalar dependências
npm install selenium-webdriver
# Baixar script powershell
Invoke-WebRequest -Uri https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -OutFile weread-challenge.js
# Definir parâmetros de execução via variáveis de ambiente
$env:WEREAD_BROWSER="MicrosoftEdge"
# Executar
node weread-challenge.js

Execução Docker igual ao Linux.

MacOS

# Instalar nodejs
brew install node
# Criar pasta de execução
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Instalar dependências
npm install selenium-webdriver
# Baixar script
wget https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -O weread-challenge.js
# Definir parâmetros de execução via variáveis de ambiente
export WEREAD_BROWSER="chrome"
# Executar
node weread-challenge.js

Execução Docker igual ao Linux.

Suporte Multiusuário

# Iniciar navegador
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

# Obter IP do container
Selenium_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' selenium-live)

# Na primeira inicialização, é necessário escanear o código QR com WeChat para login, o código QR é salvo em:
# /$HOME/weread-challenge/${WEREAD_USER1}/data/login.png
# /$HOME/weread-challenge/${WEREAD_USER2}/data/login.png
# Iniciar todos os dias às 7h, ler por 68 minutos
(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 -

Itens Configuráveis

Variável de Ambiente Valor Padrão Valores Opcionais Descrição
WEREAD_USER weread-default - Identificador do Usuário
WEREAD_REMOTE_BROWSER "" - Endereço do navegador remoto
WEREAD_DURATION 10 - Duração da leitura
WEREAD_SPEED slow slow,normal,fast Velocidade da leitura
WEREAD_SELECTION random [0-4] Seleção do livro a ler
WEREAD_BROWSER chrome chrome,MicrosoftEdge,firefox Navegador
ENABLE_EMAIL false true,false Notificação por e-mail
EMAIL_SMTP "" - Servidor SMTP do e-mail
EMAIL_USER "" - Nome de usuário do e-mail
EMAIL_PASS "" - Senha do e-mail
EMAIL_TO "" - Destinatário
WEREAD_AGREE_TERMS true true,false Termos de consentimento de privacidade

Observações

  • 28 dias para completar 30 horas, requer pelo menos 65 minutos por dia, não 60 minutos por dia.
  • O WeChat Reader pode perder alguns minutos na estatística, esperando obter 65 minutos por dia, recomenda-se ajustar o tempo de leitura para 68 minutos
  • Cookies de login via código QR da web são válidos por 30 dias, após 30 dias é necessário reescanear o código QR para login, adequado para desafio mensal de status de membro
  • Notificação por e-mail pode ser identificada como spam, recomenda-se adicionar à lista branca no lado do destinatário
  • Este projeto é apenas para estudo e troca, por favor não use para fins comerciais, por favor não use para fins ilegais
  • Caso haja possível violação de direitos autorais, entre em contato com [email protected], este projeto será imediatamente removido

Política de Privacidade

  • Coleta de privacidade
    • Este projeto coleta parte das informações de cookies dos usuários, para fins de estatísticas e exibição de usuários.
    • Coleta informações de uso dos usuários, contendo: Nome do Usuário | Data do Primeiro Uso | Data do Último Uso | Número Total de Usos | Tipo de Navegador | Categoria do Sistema Operacional | Configuração de Duração de Leitura | Motivo de Saída Anormal
    • Caso não deseje que nenhuma informação seja coletada, pode definir o parâmetro de inicialização WEREAD_AGREE_TERMS=false
  • Aviso de risco
    • cookies podem ser usados para login na versão web do WeChat Reader, após login pode executar operações na estante, mas esta ferramenta não usará as informações coletadas para login.
    • O mecanismo de proteção da Tencent garante que ao login anormal, o cliente do WeChat no celular receberá aviso de risco, pode-se confirmar o dispositivo de login nas configurações do cliente do celularDispositivos de Login.
    • Esta ferramenta é puramente implementada em js, fácil de desofuscar e estender, terceiros podem continuar desenvolvendo. Mesmo confiando nesta ferramenta, deve-se frequentemente confirmar o dispositivo de login ao usar ferramentas automatizadas, evitando operações maliciosas na estante.

Referências