Leitor WeChat - Registro Automático e Acúmulo de Tempo de Leitura
Categories:
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

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
cookiesdos 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
- Este projeto coleta parte das informações de
- Aviso de risco
cookiespodem 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 celular
Dispositivos 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
- Link de download do script: weread-challenge.js
- Endereço de código aberto: https://github.com/jqknono/weread-challenge-selenium
- Estatísticas: https://weread-challenge.techfetch.dev
- Fonte do artigo: https://blog.techfetch.dev