【cURL의 추천】유루 캐릭터 그랑프리의 어심군을 응원하자!
금기의 난민 테두리 「보통의 여고생이【로코도루】 해 보았다.」의 마스코트 캐릭터 「어심군」이 느슨한 캐릭터 그랑프리에 출전중입니다.
투표는 메일 주소 1개당 1일 1 회답표 가능합니다.
어심군은 현재 41위(2014년 9/21시점)로 상당히 엄격한 순위.
응원하고 싶지만 매일 HP에 가서 투표하는 것은 상당히 노력…
그래서 cURL 명령을 사용하여 투표를 자동화해 보았습니다.
유루 캐릭터 그랑프리에 등록
미리 유루 캐릭터 그랑프리 공식 웹 사이트 로 이메일 주소를 등록해 두어야 합니다.
자세한 내용은 할애
cURL을 사용한 인증 ~ 양식 제출
우선 주요 부분을 발췌
# 以下を自身のメールアドレスとパスワードに書き換える
MAIL='your-mail-address'
PASS='your-password'
ENTRY_ID=1482
CHARACTER_ID=00001509
TMPFILE='cookie.txt'
urlencode() {
echo "$1" | nkf -wMQ | tr = %
}
urlencode_param() {
local key value
key=$(urlencode "$1")
value=$(urlencode "$2")
echo "$key=$value"
}
MAIL_PARAM=$(urlencode_param 'data[Member][email]' "$MAIL")
PASS_PARAM=$(urlencode_param 'data[Member][password]' "$PASS")
curl -v -d "entry_id=$ENTRY_ID&character_id=$CHARACTER_ID" \
-c "$TMPFILE" \
https://yurugp2014.secureserv.jp/yurugp.jp2014/pc/vote/comp
curl -v -d "$MAIL_PARAM&$PASS_PARAM" \
-b "$TMPFILE" \
https://yurugp2014.secureserv.jp/yurugp.jp2014/pc/login/comp
curl -v \
-b "$TMPFILE" \
https://yurugp2014.secureserv.jp/yurugp.jp2014/pc/vote/comp
하는 일은 간단하고, HP에서의 투표 조작(POST에 의한 폼 송신)을 cURL 커멘드를 사용해 그대로 재현하고 있을 뿐입니다.
또한 인증이 필요하므로 쿠키를 인계하도록 합니다.
cURL 옵션 설명
이런 식으로 쉽게 폼 조작을 자동화할 수 있습니다.
명령화
명령화합니다. 어디까지나 일례입니다.
vote_yuru_uogokoro.sh
#!/bin/bash
#
# vote_yuru_uogokoro.sh
#
# Vote Uogokoro-kun at Yuru-GP
#
# http://www.yurugp.jp/vote/detail.php?id=00002402
#
# USAGE:
# vote_yuru_uogokoro.sh <mail address> <password>
# vote_yuru_uogokoro.sh <file>
#
# file format:
# MAIL=xxxx@yyyy
# PASS=xxxxxxxxx
#
#------------------------------------------------------------------------------
ENTRY_ID=${ENTRY_ID:-1482}
CHARACTER_ID=${CHARACTER_ID:-00001509}
urlencode() {
echo "$1" | nkf -wMQ | tr = %
}
urlencode_param() {
local key value
key=$(urlencode "$1")
value=$(urlencode "$2")
echo "$key=$value"
}
atexit() {
[[ -n ${TMPFILE-} ]] && rm -f "$TMPFILE"
}
if [[ $# -eq 1 && -r ${1-} ]]; then
source "$1"
fi
MAIL=${MAIL:-${1-}}
PASS=${PASS:-${2-}}
TMPFILE=
echo "MAIL=$MAIL"
echo "PASS=$PASS"
echo
if [[ -z ${MAIL-} || -z ${PASS-} ]]; then
echo 'ERROR: Illegal arguments' 1>&2
echo "USAGE: ${0##*/} <mail address> <password> | <file>"
exit 1
fi
MAIL_PARAM=$(urlencode_param 'data[Member][email]' "$MAIL")
PASS_PARAM=$(urlencode_param 'data[Member][password]' "$PASS")
if [[ $DEBUG ]]; then
echo "MAIL_PARAM=$MAIL_PARAM"
echo "PASS_PARAM=$PASS_PARAM"
echo
fi
trap atexit EXIT
trap 'trap - EXIT; atexit; exit -1' INT PIPE TERM
TMPFILE=$(mktemp "/tmp/${0##*/}.tmp.XXXXXX")
curl -d "entry_id=$ENTRY_ID&character_id=$CHARACTER_ID" \
-c "$TMPFILE" \
https://yurugp2014.secureserv.jp/yurugp.jp2014/pc/vote/comp
curl -d "$MAIL_PARAM&$PASS_PARAM" \
-b "$TMPFILE" \
https://yurugp2014.secureserv.jp/yurugp.jp2014/pc/login/comp \
2>&1 \
| GREP_OPTIONS= grep 'メールアドレスかパスワードが間違っています' \
| sed 's/<[^<]*>//g'
curl -v \
-b "$TMPFILE" \
https://yurugp2014.secureserv.jp/yurugp.jp2014/pc/vote/comp \
2>&1 \
| GREP_OPTIONS= grep -A 1 '<h3>投票エラー</h3>\|<h3>投票完了</h3>' \
| sed 's/<[^<]*>//g'
사용 예
$ vote_yuru_uogokoro.sh [email protected] passxxxxx
나머지는 cron 등에 등록하고 하루에 한 번 실행하면 OK!
끝
느슨한 캐릭터 그랑프리에 한정되지 않고, 이러한 조작은 비교적 간단하게 자동화할 수 있습니다.
여러분도 시험해 보는 것은 어떻습니까.
단! 말하지 않아 알겠다고 생각합니다만, 부디도 악용 엄금입니다!
어심군의 응원도 꼭! !
Reference
이 문제에 관하여(【cURL의 추천】유루 캐릭터 그랑프리의 어심군을 응원하자!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuyuchu3333/items/4eceac68a526a814ae28텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)