Automatyczne zapisywanie czasu w Czytniku WeChat
Categories:
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

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
cookiesuż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
- Projekt zbiera część informacji
- Ostrzeżenia o ryzyku
cookiesmogą 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
- Link do pobrania skryptu: weread-challenge.js
- Adres otwartego źródła: https://github.com/jqknono/weread-challenge-selenium
- Statystyki: https://weread-challenge.techfetch.dev
- Źródło artykułu: https://blog.techfetch.dev