Oryginalny komentarz
Kusiło mnie żeby popróbować na podbij.pl, czy jestem sprytniejszy od innych lemingów, ale stwierdziłem, że najpierw poprzyglądam się jak to działa. „Przyglądanie się” zrealizowałem za pomocą prymitywnego skryptu w bash-u (wget w pętli, proste parsowanie pod kątem pozostałego czasu i osiągniętej ceny). No i wyszło mi, że niby można by napisać jakiś skrypcik pod np. greasemonkey, który cierpliwie poczeka i klepnie „podbij” w drugiej połowie ostatniej sekundy – czasem trafi, częściej nie trafi, ale nie zmarnowałby tylu podbić co matołki klepiące „podbij” 15s przed końcem. Tyle że problem ze zmartwychwstawaniem aukcji wciąż istnieje – np. 341 – 100 podbić „skończyła się” wczoraj ok. 21:02 na jakichś 58zł a trwa do teraz i na razie jest 201zł. „Aukcja” jest „darmowa”, więc dla klikaczy cena nie gra roli, ale podbij.pl zarobił >1400zł + VAT.
Może ten system po prostu sypie się. Ale może być też tak, że jest oszukiwany nawet bardziej niż to widać.
Jakby się ktoś chciał pobawić to wklejam ostatnią wersję wspomnianego skryptu (na licencji GPL v.3). Pewnie wklejenie źle go połamie, ale ci, co kumają basha to sobie poradzą.
#!/bin/bash
#Czas krytyczny
ct=6
hct=$(( $ct / 2 ))
#Licznik zakończeń
endmax=20
endcnt=0
url=http://podbij.pl/auction/ #au=270-kino-domowe-lg-ht552ph
#./podbij.sh 340-tv-philips-32pfl-5322
if [ $# -lt 1 ] ; then
echo „Usage: $0 aukcja”
exit 1
else
au=$1
fi
while [ $endcnt -le $endmax ] ; do
[ -e $au ] && rm $au
wget -q ${url}${au}
if [ -e $au ] ; then
t=$( grep „class=\„time\”„ $au | sed ‘s-.class=„time”>\(.\)</div>\1;s-:-: -g’ | awk ‘{if ($1 ! „:”) print 3600*$1+60*$2+$3; }’ )
end=$( grep „class=\„time msg\”„ $au | sed ‘s-.class=„time msg”>\(.\)</div>\1‘ )
p=$( grep „class=\„price\”„ $au | sed ‘s-.class=„price”>\(.\)</span></td>\1‘ | awk ‘{if ($0 ~ „,”) print $0}’)
if [ -z $end ] ; then
if [ $t -ge $ct ] ; then # dużo czasu
echo `date`” Czas: „$t” Cena: „$p
sleep $(( $t – $ct + 1 ))
else # mało czasu
tr=$(( $( date +%s ) + $t ))
[ $t -le $hct ] && c=31 || c=33
echo -e $au” \e[1;${c}mKoniec: „$( date -d ’1970-01-01 ‘$tr’ sec’ +”%Y-%m-%d %T %z” )”\e[0m Czas: „$t” Cena: „$p
usleep 400000
fi
else # koniec, ale może odżyje
endcnt=$(( $endcnt + 1 ))
echo -e $au” \e[1;32m${end}\e[0m (${endcnt}) Data: „`date`” Cena: „$p
sleep $ct
fi
else # blad
echo -e `date`” \e[1;36mCannot find $au\e[0m”
usleep 600000
fi
done
Zmodyfikowany komentarz
Kusiło mnie żeby popróbować na podbij.pl, czy jestem sprytniejszy od innych lemingów, ale stwierdziłem, że najpierw poprzyglądam się jak to działa. „Przyglądanie się” zrealizowałem za pomocą prymitywnego skryptu w bash-u (wget w pętli, proste parsowanie pod kątem pozostałego czasu i osiągniętej ceny). No i wyszło mi, że niby można by napisać jakiś skrypcik pod np. greasemonkey, który cierpliwie poczeka i klepnie „podbij” w drugiej połowie ostatniej sekundy – czasem trafi, częściej nie trafi, ale nie zmarnowałby tylu podbić co matołki klepiące „podbij” 15s przed końcem. Tyle że problem ze zmartwychwstawaniem aukcji wciąż istnieje – np. 341 – 100 podbić „skończyła się” wczoraj ok. 21:02 na jakichś 58zł a trwa do teraz i na razie jest 201zł. „Aukcja” jest „darmowa”, więc dla klikaczy cena nie gra roli, ale podbij.pl zarobił >1400zł + VAT.
Może ten system po prostu sypie się. Ale może być też tak, że jest oszukiwany nawet bardziej niż to widać.
Jakby się ktoś chciał pobawić to wklejam ostatnią wersję wspomnianego skryptu (na licencji GPL v.3). Pewnie wklejenie źle go połamie, ale ci, co kumają basha to sobie poradzą.
#!/bin/bash
#Czas krytyczny
ct=6
hct=$(( $ct / 2 ))
#Licznik zakończeń
endmax=20
endcnt=0
url=http://podbij.pl/auction/ #au=270-kino-domowe-lg-ht552ph
#./podbij.sh 340-tv-philips-32pfl-5322
if [ $# -lt 1 ] ; then
echo „Usage: $0 aukcja”
exit 1
else
au=$1
fi
while [ $endcnt -le $endmax ] ; do
[ -e $au ] && rm $au
wget -q ${url}${au}
if [ -e $au ] ; then
t=$( grep „class=\„time\”„ $au | sed ‘s-.*class=„time”>\(.*\)</div>-\1-;s-:-: -g’ | awk ‘{if ($1 ! „:”) print 3600*$1+60*$2+$3; }’ )
end=$( grep „class=\„time msg\”„ $au | sed ‘s-.*class=„time msg”>\(.*\)</div>-\1-‘ )
p=$( grep „class=\„price\”„ $au | sed ‘s-.*class=„price”>\(.*\)</span></td>-\1-‘ | awk ‘{if ($0 ~ „,”) print $0}’)
if [ -z $end ] ; then
if [ $t -ge $ct ] ; then # dużo czasu
echo `date`” Czas: „$t” Cena: „$p
sleep $(( $t – $ct + 1 ))
else # mało czasu
tr=$(( $( date +%s ) + $t ))
[ $t -le $hct ] && c=31 || c=33
echo -e $au” \e[1;${c}mKoniec: „$( date -d ’1970-01-01 ‘$tr’ sec’ +”%Y-%m-%d %T %z” )”\e[0m Czas: „$t” Cena: „$p
usleep 400000
fi
else # koniec, ale może odżyje
endcnt=$(( $endcnt + 1 ))
echo -e $au” \e[1;32m${end}\e[0m (${endcnt}) Data: „`date`” Cena: „$p
sleep $ct
fi
else # blad
echo -e `date`” \e[1;36mCannot find $au\e[0m”
usleep 600000
fi
done