Automatyczne zapisywanie czasu w Czytniku WeChat

Asystent wyzwania członkostwa Czytnika WeChat to narzędzie, które pomaga użytkownikom uzyskać członkostwo Czytnika WeChat w niższym koszcie. Dzięki automatycznemu czytaniu i funkcji zapisywania pomaga użytkownikom wykonać zadania wyzwania Czytnika WeChat, aby uzyskać korzyści z członkostwa. Narzędzie obsługuje wiele platform, wiele przeglądarek oraz oferuje bogate opcje konfiguracji i funkcje zadań zaplanowanych.

Tylko dla taniego członkostwa Czytnika WeChat.

Ta dokumentacja może być nieaktualna. Najnowsze informacje dostępne są pod adresem: https://github.com/jqknono/weread-challenge-selenium

Tylko dla taniego członkostwa Czytnika WeChat

Zasady Czytnika WeChat

  • Czytanie w trybie offline jest uwzględniane w całkowitym czasie, ale wymaga synchronizacji online
  • Czas czytania na wersji internetowej, ekranie atramentowym, w mini-programie, słuchaniu audiobooków i audiobooków jest uwzględniany w całkowitym czasie
  • Dla długotrwałego automatycznego czytania lub słuchania platforma oceni to w połączeniu z cechami zachowania użytkownika, przekroczony czas nie będzie uwzględniany w całkowitym czasie
  • Dzień jest uznawany za ważny dzień czytania, jeśli czas czytania przekroczy 5 minut
  • Płatność 5 yuanów natychmiast przekształca się w 2-dniowe członkostwo, a następnie w ciągu 30 dni trzeba zapisywać się 29 dni, a czas czytania musi przekroczyć 30 godzin, aby uzyskać 30-dniowe członkostwo i 30 monet książkowych
  • Płatność 50 yuanów natychmiast przekształca się w 30-dniowe członkostwo, a następnie w ciągu 365 dni trzeba zapisywać się 360 dni, a czas czytania musi przekroczyć 300 godzin, aby uzyskać 365-dniowe członkostwo i 500 monet książkowych

Zgodnie z rzeczywistymi operacjami, istnieją również następujące niejasne cechy:

  • Po zapisaniu się 29. dnia nagroda za wyzwanie członkostwa jest natychmiast przyznawana, a następnie można natychmiast rozpocząć kolejną rundę wyzwania członkostwa. Nie trzeba czekać do 31. dnia, aby rozpocząć kolejną rundę wyzwania. Zapisanie się 29. dnia liczy się zarówno jako zapis na poprzednią rundę, jak i na kolejną rundę.
  • Poza pierwszą rundą, która wymaga 29 dni, kolejne rundy wymagają tylko 28 dni, aby uzyskać 32 dni członkostwa. 1+28*13=365, w ciągu roku można ukończyć 13 rund, koszt wyniesie 65 yuanów, a uzyskane zostaną 32*13=416 dni członkostwa i 390 monet książkowych.
  • Coraz bardziej opłacalne jest nadal coroczne wyzwanie członkostwa, ale cykl jest dłuższy i ryzyko większe.

Funkcje narzędzia

  • Użycie przeglądarki z graficznym interfejsem użytkownika
  • Obsługa lokalnej i zdalnej przeglądarki
  • Losowe szerokości i wysokości przeglądarki
  • Obsługa oczekiwania na logowanie
  • Obsługa odświeżania kodu QR logowania
  • Obsługa zapisywania plików cookies
  • Obsługa ładowania plików cookies
  • Obsługa wyboru książki do czytania z ostatnio czytanych (numer X)
  • Domyślnie losowo wybiera książkę do czytania
  • Obsługa automatycznego czytania
  • Obsługa przejścia do następnego rozdziału
  • Obsługa powrotu do pierwszego rozdziału po zakończeniu czytania
  • Obsługa wyboru prędkości czytania
  • Losowy czas czytania na stronie
  • Losowy czas przełączania stron
  • Zrzut ekranu co minutę
  • Obsługa dzienników
  • Obsługa zadań zaplanowanych
  • Obsługa ustawiania czasu czytania
  • Obsługa powiadomień e-mail
  • Obsługa wielu platform: linux | windows | macos
  • Obsługa przeglądarek: chrome | MicrosoftEdge | firefox
  • Obsługa wielu użytkowników
  • Wymuszone odświeżenie w przypadku wyjątku
  • Używanie statystyk

Linux

Bezpośrednie uruchamianie

# Instalacja nodejs
sudo apt install nodejs
# Starsze wersje nodejs wymagają instalacji npm
sudo apt install npm
# Utworzenie folderu uruchomieniowego
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Instalacja zależności
npm install selenium-webdriver
# Pobranie skryptu
wget https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -O weread-challenge.js
# Ustawienie parametrów uruchomienia za pomocą zmiennych środowiskowych
export WEREAD_BROWSER="chrome"
# Uruchomienie
WEREAD_BROWSER="chrome" node weread-challenge.js

W przypadku potrzeby powiadomień e-mail, należy zainstalować nodemailer: npm install nodemailer

Uruchamianie za pomocą 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

Zapisz jako docker-compose.yml, uruchom docker compose up -d.
Po pierwszym uruchomieniu należy zeskanować kod QR w celu zalogowania się przez WeChat, kod QR zapisany jest w ./data/login.png

Uruchamianie za pomocą Docker

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

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

# dodanie kolejnego użytkownika
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

Po pierwszym uruchomieniu należy zeskanować kod QR w celu zalogowania się przez WeChat, kod QR zapisany jest w ./data/login.png

Tworzenie zadań zaplanowanych

Sposób 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
# Po pierwszym uruchomieniu należy zeskanować kod QR w celu zalogowania się przez WeChat, kod QR zapisany jest w $HOME/weread-challenge/data/login.png
# Codziennie o 7 rano uruchomienie, czytanie 68 minut
(crontab -l 2>/dev/null; echo "00 07 * * *  cd $WORKDIR && docker compose up -d") | crontab -

Sposób docker

# Uruchomienie przeglądarki
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

# Pobierz adres IP kontenera
Selenium_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' selenium-live)

# Po pierwszym uruchomieniu należy zeskanować kod QR w celu zalogowania się przez WeChat, kod QR zapisany jest w $HOME/weread-challenge/$WEREAD_USER/data/login.png
# Codziennie o 7 rano uruchomienie, czytanie 68 minut
(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

# Instalacja nodejs
winget install -e --id Node.js.Node.js
# Utworzenie folderu uruchomieniowego
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Instalacja zależności
npm install selenium-webdriver
# Pobranie skryptu powershell
Invoke-WebRequest -Uri https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -OutFile weread-challenge.js
# Ustawienie parametrów uruchomienia za pomocą zmiennych środowiskowych
$env:WEREAD_BROWSER="MicrosoftEdge"
# Uruchomienie
node weread-challenge.js

Uruchamianie Docker jest takie samo jak w Linux.

MacOS

# Instalacja nodejs
brew install node
# Utworzenie folderu uruchomieniowego
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# Instalacja zależności
npm install selenium-webdriver
# Pobranie skryptu
wget https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -O weread-challenge.js
# Ustawienie parametrów uruchomienia za pomocą zmiennych środowiskowych
export WEREAD_BROWSER="chrome"
# Uruchomienie
node weread-challenge.js

Uruchamianie Docker jest takie samo jak w Linux.

Obsługa wielu użytkowników

# Uruchomienie przeglądarki
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

# Pobierz adres IP kontenera
Selenium_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' selenium-live)

# Po pierwszym uruchomieniu należy zeskanować kod QR w celu zalogowania się przez WeChat, kod QR zapisany jest w:
# /$HOME/weread-challenge/${WEREAD_USER1}/data/login.png
# /$HOME/weread-challenge/${WEREAD_USER2}/data/login.png
# Codziennie o 7 rano uruchomienie, czytanie 68 minut
(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 -

Konfigurowalne opcje

Zmienna środowiskowa Wartość domyślna Dostępne wartości Opis
WEREAD_USER weread-default - Identyfikator użytkownika
WEREAD_REMOTE_BROWSER "" - Adres zdalnej przeglądarki
WEREAD_DURATION 10 - Czas czytania
WEREAD_SPEED slow slow,normal,fast Szybkość czytania
WEREAD_SELECTION random [0-4] Wybór książki do czytania
WEREAD_BROWSER chrome chrome,MicrosoftEdge,firefox Przeglądarka
ENABLE_EMAIL false true,false Powiadomienia e-mail
EMAIL_SMTP "" - Serwer SMTP e-mail
EMAIL_USER "" - Nazwa użytkownika e-mail
EMAIL_PASS "" - Hasło e-mail
EMAIL_TO "" - Odbiorca
WEREAD_AGREE_TERMS true true,false Zgoda na zasady prywatności

Uwagi

  • Aby w ciągu 28 dni nagrać 30 godzin, trzeba codziennie co najmniej 65 minut, a nie 60 minut.
  • Statystyki Czytnika WeChat mogą pomijać kilka minut, oczekiwany czas to 65 minut dziennie. Zaleca się dostosować czas czytania do 68 minut.
  • Cookies z logowania przez kod QR na stronie internetowej są ważne przez 30 dni, po 30 dniach trzeba ponownie zeskanować kod QR, co jest odpowiednie dla miesięcznego wyzwania członkostwa.
  • Powiadomienia e-mail mogą być uznane za spam, zaleca się dodać białą listę do odbiorcy.
  • Projekt jest przeznaczony wyłącznie do celów nauki i wymiany, nie należy go wykorzystywać w celach komercyjnych ani nielegalnych.
  • W przypadku ewentualnych naruszeń praw autorskich prosimy o kontakt: [email protected], projekt zostanie natychmiast usunięty.

Polityka prywatności

  • Pobieranie prywatności
    • Projekt zbiera część informacji cookies użytkownika w celach statystycznych i prezentacyjnych.
    • Zbiera informacje o użytkowaniu przez użytkownika, zawierające: nazwa użytkownika | czas pierwszego użycia | czas ostatniego użycia | całkowita liczba użycia | typ przeglądarki | kategoria systemu operacyjnego | ustawienia czasu czytania | przyczyna wyjątkowego wyjścia
    • Jeśli użytkownik nie chce, aby jakiekolwiek informacje były zbierane, może ustawić parametr uruchomienia WEREAD_AGREE_TERMS=false
  • Ostrzeżenia o ryzyku
    • cookies mogą być używane do logowania na stronie internetowej Czytnika WeChat, po zalogowaniu można wykonywać operacje na półce z książkami, ale narzędzie nie będzie używać zebranych informacji do logowania.
    • Mechanizm ochrony Tencent zapewnia, że w przypadku niezwykłego logowania aplikacja mobilna otrzyma ostrzeżenie o ryzyku, można potwierdzić urządzenie logowania w aplikacji mobilnej Ustawienia -> Urządzenia logowania.
    • Narzędzie jest czysto realizowane w js, łatwo je dezasemblować i rozszerzać, strona trzecia może dalej rozwijać. Nawet jeśli zaufasz temu narzędziu, powinieneś często potwierdzać urządzenie logowania podczas korzystania z narzędzi automatyzacji, aby uniknąć złośliwych operacji na półce z książkami.

Referencje