-
Notifications
You must be signed in to change notification settings - Fork 0
/
invote_bot.sh
65 lines (50 loc) · 2.63 KB
/
invote_bot.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env bash
umfrageid=$1
# Zufallszahl erzeugen, damit jeden Antwort einzigartig ist
start=$(echo $RANDOM)
# Seite abspeichern
link=$(echo "https://tud.invote.de/$umfrageid")
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15" $link >> seite.txt
# wichtige Elemente der Seite aus dem HTML-Quelltext ausschneiden mit hxselect
ueberschrift=$(cat seite.txt | ~/bin/hxselect -s "\n" h2 | head -n 1 | ~/bin/hxselect -c h2)
frage=$(cat seite.txt | ~/bin/hxselect -s "\n" -c p.mc | ~/bin/hxselect -c strong | head -n 2 | tail -n 1 | sed -e 's/^[[:space:]]*//')
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15" $link | ~/bin/hxselect -s "\n" -c p.antwort.mc >> antworten.txt
# Anzahl der Antworten bestimmen
anzahl=$(cat antworten.txt | wc -l | tr -d '[:space:]')
# Arrays für die Antworten und zugehörige Infos erstellen
declare -a antwortbuchstabe
declare -a antwortArray
declare -a values
# Antworten und Infos in die Arrays füllen
for (( i = 1; i <= $anzahl; i++ )); do
antwortbuchstabe[$i]=$(cat antworten.txt | head -n $i | tail -n 1 | ~/bin/hxselect -c strong)
values[$i]=$(cat antworten.txt | head -n $i | tail -n 1 | grep "antwort" | awk -F"\"" '{print $6}')
antwortArray[$i]=$(cat antworten.txt | head -n $i | tail -n 1 | ~/bin/hxselect -c label | cut -c 20-)
done
clear
echo "================================= Invote - Bot ================================="
echo "version: 2.0"
echo ""
echo "Umfrage-ID: $umfrageid, Link: $link"
echo ""
echo "Frage: $frage"
echo ""
for (( i = 1; i <= $anzahl; i++ )); do
echo "$i: ${antwortArray[$i]}"
done
echo ""
echo "Für welche Antwort soll gestimmt werden?"
read spamZahl
echo "Wie viele sollen abstimmen?"
read spamAnzahl
antwort=$(echo ${values[$spamZahl]})
echo "Es wird für ${antwortbuchstabe[$spamZahl]}: ${antwort[$spamZahl]} $spamAnzahl mal gestimmt."
# Antworten erstellen und abschicken
for (( i = $start; i < $start+$spamAnzahl; i++ )); do
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15" --data "antwort=$antwort" --data "antwortort+senden" https://tud.invote.de/$umfrageid -H "Cookie: invoteSession=$i;invote=$i" -s -o /dev/null
echo "Fake-Antwort Nummer $(($i-$start+1)) abgegeben."
done
# nicht mehr benötigte Dateien löschen
rm antworten.txt
rm seite.txt
# evtl. Parallelisierung mit parallel: seq 1000 | parallel 'curl --data "antwort=352295" --data "antwortort+senden" https://tud.invote.de/78722 -H "Cookie: invoteSession={};invote={}" -s -o /dev/null'