Написал скриптик, который срёт заходит на иссу БТК. Старался предусмотреть всё: реферер, версию браузера попопсовее, паузу при логине, выпиливание из говноразметки бабла.
UPD: Теперь скрипт сам умеет выколачивать обещанный платёж, если сумма на счёте слишком мала. Всем госам из БТК смерти и зла!
Господа из LikeCBOSS, умрите, пожалуйста (приимущественно все) от анально-кирпичного разрыва. Так http-гуйню свою писать – это просто стыдно.
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 | #!/bin/sh # #Расейска-беларускім адкатам прысвячаецца... # L='1706-0004417-08' # лоуджен P='расдватры-в-этом-мире-так-легко...' # паролямана O='3000' # парох, када ннада класть S='10000' # сикока ннада накласть на щот # Потроллим админов БТК зоопарком версий, которые просрёт mod_security: # http://ru.wikipedia.org/wiki/User_Agent B="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" K='/tmp/.byfly_cookies' RL='https://issa.beltelecom.by/cgi-bin/cgi.exe?function=' R1=$RL'is_newlog';R2=$RL'is_login';R3=$RL'is_account';R4=$RL'regobpldone' CU=`which curl`; if [ ! "$CU" ]; then echo поставьте curl; exit; fi IC=`which iconv`; if [ ! "$IC" ]; then echo поставьте iconv; exit; fi echo Лезем в говнобиллинг... $CU -c $K -d "mobnum=$L&Password=$P&Lang=2" -s -m 9 --user-agent "$B" \ --referer "$R1" $R2 > /dev/null 2>&1 if [ ! -f $K ]; then echo Сибосс испортился! Ситуп экзема! exit fi echo Прикидываемся шлангом... sleep 2 echo Смотрим на баланс... CASH=`$CU -b $K -c $K -s -m 9 --user-agent "$B" --referer "$R2" $R3 \ 2>&1 /dev/null | sed -e 's/<[^>]*>//g' | $IC -f CP1251 -t UTF-8 | grep -m \ 1 -e '[-0-9]\+ Бел.рубль' | sed -e 's/[^-0-9]*//g'` if [ $CASH ]; then if [ $CASH -lt $O ]; then echo Наш баланс равен $CASH этихсамых, пора брать обещанный платёж... sleep 2 echo Берём обещанный платёж на сумму $S этихсамых... RESULT=`$CU -b $K -c $K -d "Sum=$S&Currency=2" -s \ -m 9 --user-agent "$B" --referer "$R2" $R4 | $IC -f CP1251 -t UTF-8 \ | grep -m 1 -e 'К сожалению, обещанный платеж принять невозможно' \ | tr -d '\015' | sed -e 's#<[^>]*>##g'` if [ "$RESULT" != '' ]; then echo УГенка не даёт :\"\( else echo Ура! На пару дней есть инторнет! fi else echo Наш баланс равен $CASH этихсамых fi else echo Чота нитак \(cgi мозга\) fi if [ -f $K ]; then unlink $K fi |
Вот. Сегодня дошёл до той стадии нищебродства, когда давно минус, а инторнетиков хоцца. Перед обещанным платежом проверил баланс. Оказался не минус. Подправил скрипт, чтобы минус тоже показывало. Гудлак.
А ещё пофиксил, чтобы запускать можно было не только находясь в хоумдире (прибавил K=$HOME’/.byfly_cookies’). Так-то!
внезапно перестал работать скрипт, новой версии нету?
Видимо Вас забанили. Такое бывает у них, если часто входить. Подождите минут 10 и снова попробуйте. У меня всё ок, как часики работает.
уже несколько дней выдает error. ну ладно, на выходных сам покалупаю тогда, спасибо
Здесь я смотрю при обновлении curl до 7.24 всё стало работать несколько иначе. Проблемка была в первом вызове (а конкретно не корректно зануляся аутпут).
Пофикшено.
видимо так и есть. на самолично разобраться не смог, поэтому пользуюсь по сей день кастрированной версией (выдает только баланс для конки) этого
https://github.com/peleccom/ByFlyPy
я хуй и уебак!
Ты што, УГенка?!
Погоди-ка, только УГенка может да?
экзактли! с 1 марта достаём старые роутеры и натим на пол города. :В
УГенка!!! Мы не потерпим повышения интернету на один долар, НИКОГДА!!! >:-E
Сделал, чтобы баланс сохранялся в файл (немного пришлось повозиться, при запросе откуда-то бралось число 50 перед балансом, потом понял в чём дело), но не могу настроить запуск в cron, в файл сохраняет сообщение об ошибке, при запуске из консоли всё ок
Думается мне, что к курлу, иконву, грепу, седу и т.д. командам нужно указать полный путь к бинарнику. По крайней мере у меня такие проблемы были, когда я пытался некоторые свои скрипты пускать кроном… Подумаю на досуге и модифицирую скрипт.
Алсо, чтобы писать баланс в файл, всего-то нужно:
echo $CASH > /путь/на/диске/ФАЙЛ
так и делаю, просто запускаю скрипт – работает, а кроном не хочет
Пробуйте /usr/local/bin/curl (для БДСМ) или /usr/bin/curl (для лайнукс).
Проверено, работает.
у меня файл curl находится /opt/bin/curl
не работает…
и у меня не совсем на компьютере стоит линукс, на небольшом роутере d-link dir 320
Всё так и не работает из crontab, а из консоли или из mc, запускается, и когда пути к курл, иконв и др. прописаны и когда не прописаны…
Честно сказать не имел с подобного рода обрубками дел… Поэтому не подскажу. Хотя… Есть ещё мысль: Выставить права 777 (запуск всем).
А ещё вот же в скрипте у меня относительный путь к кукам.
Попробуйте
K=’/tmp/.byfly_cookies’
Ооо… спасибо большое, заработало!!!
Сделал, чтобы баланс сохранялся в файл (немного пришлось повозиться, при запросе откуда-то бралось число 50 перед балансом, потом понял в чём дело), но не могу настроить запуск в cron, в файл сохраняет сообщение об ошибке, при запуске из консоли всё ок
блин, два раза отправил((
Ну перекомпилили свой cgi.exe. Ну стало
td class=light width=”50%” nbsp;666nbsp;Бел.рубль вместо пробелов.В чём профит – не понял… Всё равно DOCTYPE забыт, алсо, бабоньки, залипает капслок?)))К чему эти HEAD и center? Московія мозга, okaaaayyyyyy….
По мотивам скрипта чекер для нагиоса, который принимает логин пароль и пароги параметрами
[email protected]:/usr/lib/nagios/plugins# cat check_byfly_balance
#!/bin/sh
CASH=’10’
L=’John’ # login
P=’Secret’ # passwd
warning=’100000′
critical=’10000′
B=”Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)”
K=’/tmp/.byfly_cookies’
RL=’https://issa.beltelecom.by/cgi-bin/cgi.exe?function=’
R1=$RL’is_newlog’;R2=$RL’is_login’;R3=$RL’is_account’;R4=$RL’regobpldone’
CU=
which curl
; if [ ! “$CU” ]; then echo There is no curl, please fix this problem ; exit 3; fiIC=
which iconv
; if [ ! “$IC” ]; then echo There is no iconv, please fix this problem ; exit 3; fishow_usage() {
echo “”
echo “Usage: ${0} -u John -p Secret -w 1000 -c 100”
echo “”
echo “Usage: ${0} –user John –password Secret –warning 1000 –critical 100”
echo “”
echo “You can also define the default settings in the text of the script, to run it without parameters ”
echo “”
}
while [ $# -gt 0 ]
do
PARAM=”$1″
case “$PARAM” in
–user|-u)
if [ $# -gt 1 ]; then
L=”$2″
shift
else
echo ” You must specify username ”
exit 3
fi
;;
–pass|–password|-p)
if [ $# -gt 1 ]; then
P=”$2″
shift
else
echo ” You must specify password ”
exit 3
fi
;;
–warn|–warning|-w)
if [ $# -gt 1 ]; then
warning=”$2″
shift
else
echo ” You must specify warning limit ”
exit 3
fi
;;
–crit|–critical|-c)
if [ $# -gt 1 ]; then
critical=”$2″
shift
else
echo ” You must specify critical limit ”
exit 3
fi
;;
–help|–usage|-h)
show_usage
exit 0
;;
*)
echo “Unknown argument supplied $PARAM”
show_usage
exit 3
esac
shift
done
#echo Лезем в биллинг
$CU -c $K -d “mobnum=$L&Password=$P&Lang=2” -s -m 9 –user-agent “$B”
–referer “$R1” $R2 > /dev/null 2>&1
if [ ! -f $K ];
then
echo Unknown status. Page unavailable.
exit
fi
#echo Смотрим на баланс
CASH=
$CU -b $K -c $K -s -m 9 --user-agent "$B" --referer "$R2" $R3
2>&1 /dev/null | sed -e 's/]*>//g' | $IC -f CP1251 -t UTF-8 | grep -m
1 -e '[-0-9]+ Бел.рубль' | sed -e 's/[^-0-9]*//g'
if [ “$CASH” -lt “$critical” ]
then
echo Critical – balance = $CASH rub
exit 2
else
if [ “$CASH” -lt “$warning” ]
then
echo Warning – balance = $CASH rub
exit 1
else
echo OK : balance = $CASH rub
fi
fi
if [ -f $K ];
then
unlink $K
fi