위챗 독서 자동 체크인 및 시간 연장

위챗 독서 챌린지 멤버십 헬퍼는 사용자가 더 낮은 비용으로 위챗 독서 멤버십을 얻을 수 있도록 도와주는 도구로, 자동 독서 및 체크인 기능을 통해 위챗 독서 챌린지 작업을 완료하고 멤버십 혜택을 받을 수 있도록 합니다. 이 도구는 다중 플랫폼 및 다중 브라우저를 지원하며, 풍부한 구성 옵션과 예약 작업 기능을 제공합니다.

위챗 독서 멤버십을 약간이라도 저렴하게 구매하기 위해서.

이 문서는 최신 버전이 아닐 수 있습니다. 최신 정보는 오픈소스 주소에서 확인할 수 있습니다: https://github.com/jqknono/weread-challenge-selenium

위챗 독서 멤버십을 약간이라도 저렴하게 구매하기 위해서

위챗 독서 규칙

  • 오프라인 독서는 총 시간에 포함되지만, 인터넷에 연결되어 보고되어야 함
  • 웹 버전, 잉크 스크린, 소형 프로그램, 오디오 북, 유성 북 청취는 총 시간에 포함됨
  • 자동 독서 또는 청취 시간이 지나치게 긴 행동에 대해서는 플랫폼이 사용자 행동 특성을 결합하여 판단하며, 지나치게 긴 부분은 총 시간에 포함되지 않음 -当日에 5분 이상 독서해야 유효한 독서 일수로 인정됨
  • 5위안을 지불하면 즉시 2일 멤버십을 얻고, 이후 30일 이내에 29일 체크인과 30시간 이상 독서를 하면 30일 멤버십과 30책 코인을 받을 수 있음
  • 50위안을 지불하면 즉시 30일 멤버십을 얻고, 이후 365일 이내에 360일 체크인과 300시간 이상 독서를 하면 365일 멤버십과 500책 코인을 받을 수 있음

실제 작업에 따르면, 다음과 같은 명확히 설명되지 않은 특징들이 있습니다:

  • 29일 차에 체크인하면 즉시 독서 멤버십 보상을 받으며, 바로 다음 라운드 챌린지 멤버십 체크인을 시작할 수 있습니다. 31일 차를 기다릴 필요 없이, 29일 차 체크인은 이전 라운드와 다음 라운드 모두에 포함됩니다.
  • 첫 라운드는 29일이 필요하지만, 이후에는 28일마다 32일 멤버십을 얻을 수 있습니다. 1+28*13=365, 1년에 13라운드를 완료할 수 있으며, 비용은 65위안, 32*13=416일 멤버십과 390책 코인을 얻을 수 있습니다.
  • 여전히 연간 카드 챌린지 멤버십이 더划算하지만, 주기가 더 길고 위험이 더 큽니다.

도구 특징

  • 헤드리스 브라우저 사용
  • 로컬 브라우저 및 원격 브라우저 지원
  • 랜덤 브라우저 너비 및 높이
  • 로그인 대기 지원
  • 로그인 QR코드 새로 고침 지원
  • 쿠키 저장 지원
  • 쿠키 로드 지원
  • 최근에 읽은 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코드를 스캔하여 로그인해야 합니다. 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코드를 스캔하여 로그인해야 합니다. 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코드를 스캔하여 로그인해야 합니다. 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코드를 스캔하여 로그인해야 합니다. 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코드를 스캔하여 로그인해야 합니다. 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_USER weread-default - 사용자 식별자
WEREAD_REMOTE_BROWSER "" - 원격 브라우저 주소
WEREAD_DURATION 10 - 독서 시간
WEREAD_SPEED slow slow,normal,fast 독서 속도
WEREAD_SELECTION random [0-4] 선택 독서 책
WEREAD_BROWSER chrome chrome,MicrosoftEdge,firefox 브라우저
ENABLE_EMAIL false true,false 이메일 알림
EMAIL_SMTP "" - 이메일 SMTP 서버
EMAIL_USER "" - 이메일 사용자명
EMAIL_PASS "" - 이메일 비밀번호
EMAIL_TO "" - 수신자
WEREAD_AGREE_TERMS true true,false 개인정보 동의条款

주의 사항

  • 28일 동안 30시간을 채우려면 하루에 최소 65분이 필요하며, 60분이 아님
  • 위챗 독서 통계는 몇 분을 누락할 수 있으므로, 하루에 65분을 얻기 위해 68분으로 독서 시간을 조정하는 것이 좋습니다
  • 웹 페이지 QR코드 로그인 쿠키는 30일 유효기간이 있으며, 30일 후 다시 QR코드를 스캔하여 로그인해야 합니다. 월 챌린지 멤버십에 적합합니다
  • 이메일 알림이 스팸으로 인식될 수 있으므로 수신 측에 화이트리스트를 추가하는 것이 좋습니다
  • 이 프로젝트는 학습 및 교류 목적으로만 사용되며, 상업적 용도나 불법 용도로 사용하지 마십시오
  • 잠재적 저작권 침해가 있는 경우 [email protected]로 연락 주시면 이 프로젝트는 즉시 삭제됩니다

개인정보 정책

  • 개인정보 수집
    • 이 프로젝트는 사용자의 쿠키 일부 정보를 수집하여 사용자 통계 및 표시에 사용합니다.
    • 사용자의 사용 정보를 수집합니다: 사용자 이름 | 첫 사용 시간 | 최근 사용 시간 | 총 사용 횟수 | 브라우저 유형 | 운영 체제 유형 | 독서 시간 설정 | 예외 종료 원인
    • 어떠한 정보도 수집되지 않기를 원한다면, 시작 매개변수 WEREAD_AGREE_TERMS=false로 설정할 수 있습니다.
  • 위험 경고
    • 쿠키는 위챗 독서 웹 로그인에 사용할 수 있으며, 로그인 후 책장 작업을 수행할 수 있지만 이 도구는 수집한 정보를 사용하여 로그인 작업을 수행하지 않습니다.
    • 텐센트 보호 메커니즘은 비정상 로그인 시 모바일 클라이언트에 위험 알림을 보내며, 모바일 클라이언트 설정 -> 로그인 장치에서 로그인 장치를 확인할 수 있습니다.
    • 이 도구는 순수 JS로 구현되어 있어 역혼합 및 확장이 용이하며, 제3자는 계속 개발할 수 있습니다. 이 도구를 신뢰한다 하더라도 자동화 도구를 사용할 때는 종종 로그인 장치를 확인하여 책장이 악의적으로 조작되는 것을 방지해야 합니다.

참조