PC関連のチラ裏

自分用(素人)

ラズパイに毎日Webサイトのログボを踏ませる

毎日ログインすることでポイントとかが貰えるサイトありますよね。
手動で毎日ログインするのがダルいので、ラズパイにやらせることに。

ブラウザの開発者ツールを開きながら挙動(どのURLに何を送信してるか)を確認しながら作成した。
curl -bは複数同時に使えないけど、 -H "Cookie: ~~" という形で記述すると大丈夫。

daily-point.sh

#!/bin/sh
cd `dirname $0`
logfull=full-log.txt
logshort=log.txt


#24時間+4分程度待機したい。
#前回の待機秒数読み出し
waitbefore=$(cat waitsec.txt)
#10s~8minの乱数作成
wait=$((waitbefore + 10 + ($RANDOM % 470)))
date=`date '+%Y-%m-%d %H:%M:%S'`
echo ${date} wait=${wait} >> ${logfull}
echo ${wait} > waitsec.txt
sleep ${wait}



#HTML内のトークン取得
curl -s -c cookie.txt -b cookie.txt -H "Cookie: Confirmation=1" https://example.com/mypage/ > login.html

token=`grep -E 'name="token"' login.html | awk -F\" '{print $6}'`
date=`date '+%Y-%m-%d %H:%M:%S'`
echo ${date} token=${token} >> ${logfull}



#ログイン用セッションのクッキーを取得
curl -s -c cookie.txt -b cookie.txt -H "Cookie: Confirmation=1" --referer "https://example.com/mypage/" -X POST -d email=めあど -d pass=ぱすわーど -d token=${token} https://example.com/mypage/login > /dev/null



#mypageダウンロード
curl -s -c cookie.txt -b cookie.txt -H "Cookie: Confirmation=1" https://example.com/mypage/ > mypage.html

point=`grep -E "ぽいんよ" mypage.html | awk '{print $2}'`
date=`date '+%Y-%m-%d %H:%M:%S'`
echo ${date} point=${point:0:-2} >> ${logfull}
echo ${date} point=${point:0:-2} >> ${logshort}



#echo "続けるにはEnterを入力してください"
#read Wait



#ファイル削除
rm -rf cookie.txt
rm -rf login.html
rm -rf mypage.html

あとはこれをcron.dに登録。毎日12:01に実行(スクリプト内で0~55分待機)

nano /etc/cron.d/example
	1 12 * * * root sh /path/to/daily-point.sh

自分用、どのサイトのためかは言わない(適当に書き換えてる)。

2025/1/14更新: 0~55分ランダムに待機するよう変更

2025/1/23更新: 24時間ごとに付与されるサイトだったので、24時間+平均4分程度待機することに

 




参考