Баланс оператора сотовой связи возможностями Bash

AR
На сайте с 09.11.2014
Offline
4
1024

Здравствуйте!

Необходимо отслеживать баланс сотовых операторов(Билайн, МТС, МегаФон) для своевременного уведомления абонентов

об остатке менеджером компании.

Реализовать такое решил возможностями BASH (OS Debian 6).

Для отслеживания HTTP трафика использую программу Fiddler4 (На Windows 7).

Есть наработка для МТС.


#!/bin/sh -e
USERNAME='arsen' ; T1="root"
if [ "$T1" = "$USERNAME" ]; then
echo 'Please do not run this script as root' ; exit
fi

# Input: LOGIN, PASSWORD
# Output: account balance
# e.g. LOGIN=9107637702 PASS=xxxxxx mts

request()
{
wget \
--load-cookies /tmp/cookies.txt \
--save-cookies /tmp/cookies.txt \
--keep-session-cookies \
--quiet \
$@
}

request -O /tmp/1.html https://ihelper.ug.mts.ru/SelfCarePda/Security.mvc/LogOn?returnLink=https://ihelper.ug.ru/SelfCarePda/Home.mvc
request -O /tmp/2.html --post-data="username=МойНомерМТС&password=МойПароль" https://ihelper.ug.mts.ru/SelfCarePda/Security.mvc/LogOn?returnLink=https%3A%2F%2Fihelper.ug.mts.ru%2FSelfCarePda%2FHome$

sed -ne '/<br\/>Баланс:/ { s,.*>\([0-9.]*\)</.*$,\1,; p }' </tmp/2.html
#elinks /tmp/2.html

Данный скрипт работал при запуске на работе, а дома нет!

Также обнаружил в сети интересное решение написанное нашим земляком (спасибо ему за это).

Делаю как описано для МТС:


#!/bin/sh

OLDPATH=$PATH; PATH=".:..:$(dirname $0):$PATH"; . _spmon_lib; PATH=$OLDPATH

# Input: LOGIN, PASSWORD
# Output: account balance

UA='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'

request -O /tmp/1.html 'https://ihelper.ug.mts.ru/SelfCarePda/Security.mvc/LogOn'
request -O /tmp/2.html --post-data="username=Номер&password=Пароль" 'https://ihelper.ug.mts.ru/SelfCarePda/Security.mvc/LogOn'

# <br/>Баланс: <strong><strong>123.45</strong> руб.</strong>

sed -ne '/<br\/>Баланс:/ { s,.*>\([0-9.]*\)</.*$,\1,; p }' </tmp/2.html

Результата нет.

Вот с Билайном сложновато, они ведь сменили личный кабинет, у автора приводится в старом варианте.

Делаю так для Билайна:


#!/bin/sh -e

OLDPATH=$PATH; PATH=".:..:$(dirname $0):$PATH"; . _spmon_lib; PATH=$OLDPATH

# Input: LOGIN, PASSWORD
# Output: account balance

request_curl()
{
local add_arg=
[ -z "$DEBUG" ] && add_arg=--silent || add_arg=--verbose
curl \
--user-agent "$UA" \
--cookie "$COOKIE_FILE" \
--cookie-jar "$COOKIE_FILE" \
--location \
$add_arg $@
}

request_curl -o /tmp/1.html https://my.beeline.ru/login.html
request_curl -o /tmp/2.html \
--data "loginFormB2C%3AloginForm=loginFormB2C%3AloginForm&loginFormB2C%3AloginForm%3Alogin=МойНомер&loginFormB2C%3AloginForm%3Apassword=Пароль&loginFormB2C$
https://my.beeline.ru/login.html
request_curl -o /tmp/3.html \
--referer https://my.beeline.ru/login.html \
Referer: https://my.beeline.ru/c/pre/index.html

# <td class="tabred">
# 123,45&nbsp;руб.&nbsp;<small class="gray">на&nbsp;12:34</small>
# </td>

iconv -f windows-1251 -t utf-8 /tmp/3.html | sed -ne '/руб./ { s/&nbsp;.*$//; s/^\s*//; s/,/./; p }'

Соответственно и тут промах, к сожалению.

Прошу помочь разобраться с этими двумя операторами.

Спасибо все ответившим!.

N
На сайте с 06.05.2007
Offline
419
#1

A_R_S, а это не вопрос, на который может быть кому-то интересно ответить, а работа.

Просто сделай свою работу или заплати другому.

Кнопка вызова админа ()
AR
На сайте с 09.11.2014
Offline
4
#2

Цена вопроса?

---------- Добавлено 10.11.2014 в 10:20 ----------

В принципе сделал все сам :-). На МТС-е авторизовался и вижу баланс выдергиваемый из созданной при авторизации страницы 2.html.

На сайте Билайна тоже авторизовался, но в выгруженной странице не вижу сумму баланса.

Выгруженную страницу просмотрел elinks-сом баланс не обнаружил.

Осталось сделать:

1) Почему баланс невиден хотя авторизация прошла?

2) Как написать регулярку чтоб выдергивала номер как в МТС.

---------- Добавлено 10.11.2014 в 10:24 ----------

Вот код Билайна


#!/bin/sh -e

OLDPATH=$PATH; PATH=".:..:$(dirname $0):$PATH"; . _spmon_lib; PATH=$OLDPATH

# Input: LOGIN, PASSWORD Output: account balance

request_curl() {
local add_arg=
[ -z "$DEBUG" ] && add_arg=--silent || add_arg=--verbose
curl \
--user-agent "$UA" \
--cookie "$COOKIE_FILE" \
--cookie-jar "$COOKIE_FILE" \
--location \
$add_arg $@
}

#request_curl -o /tmp/1.html https://my.beeline.ru/login.html

request_curl -o /tmp/beeline.html \
--data "loginFormB2C%3AloginForm=loginFormB2C%3AloginForm&loginFormB2C%3AloginForm%3Alogin=ЛОГИН&loginFormB2C%3AloginForm%3Apassword=ПАРОЛЬ&loginFormB2C%3AloginForm%3ApasswordVisibl$
https://my.beeline.ru/login.html

#request_curl -o /tmp/3.html \
# --referer https://my.beeline.ru/login.html \ https://my.beeline.ru/c/pre/index.html
#iconv -f windows-1251 -t utf-8 $TM/3.html | sed -ne /руб./ '{ s/&nbsp;.*$//; s/^\s*//; s/,/./; p }'

Вот код МТС


#!/bin/sh -e
USERNAME='arsen' ; T1="root"
if [ "$T1" = "$USERNAME" ]; then
echo 'Please do not run this script as root' ; exit
fi

request() {
wget \
--load-cookies /tmp/cookies.txt \
--save-cookies /tmp/cookies.txt \
--keep-session-cookies \
--quiet \
$@
}
#request -O /tmp/1.html https://ihelper.mts.ru/SELFCAREPDA/Security.mvc/LogOn
request -O /tmp/mts.html --post-data="username=ЛОГИН&password=ПАРОЛЬ" https://ihelper.ug.mts.ru/SelfCarePda/Security.mvc/LogOn?returnLink=http%3A%2F%2Fihelper.ug.mts.ru%3A8087%2FSelfCarePd$
sed -ne '/<br\/>Баланс:/ { s,.*>\([0-9.]*\)</.*$,\1,; p }'</tmp/mts.html

Библиотека


# -*- mode: shell-script -*-

# Make sure that all regular expressions work locale-independently
export LC_ALL=C

exit_handler()
{
local rc=$?
trap - EXIT
rm -f $TM/1.html $TM/2.html $TM/3.html "$CA_BUNDLE" "$COOKIE_FILE"
rmdir $TM
exit $rc
}

if [ -z "$DEBUG" ]; then
TM=$(mktemp -d)
trap exit_handler HUP PIPE INT QUIT TERM EXIT
WGET_OPTIONS=--quiet
else
TM=.
WGET_OPTIONS=
fi

COOKIE_FILE="$TM/cookies.txt"

UA='Mozilla/5.0 (X11; U; Linux x86_64; ru-RU) AppleWebKit/534.5 (KHTML, like Gecko) Chrome/6.0.482.0 Safari/534.5'

# Workaround for missing / invalid CA chains in some distros
# C=US, O=Thawte, Inc., CN=Thawte SSL CA
CA_BUNDLE=$TM/ca-bundle.pem
rm -f $CA_BUNDLE
cat >>$CA_BUNDLE <<__EOF__
-----BEGIN CERTIFICATE-----
MIIEbDCCA1SgAwIBAgIQTV8sNAiyTCDNbVB+JE3J7DANBgkqhkiG9w0BAQUFADCB
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTAwMjA4MDAwMDAwWhcNMjAw
MjA3MjM1OTU5WjA8MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMu
MRYwFAYDVQQDEw1UaGF3dGUgU1NMIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAmeSFW3ZJfS8F2MWsyMip09yY5tc0pi8M8iIm2KPJFEyPBaRF6BQM
WJAFGrfFwQalgK+7HUlrUjSIw1nn72vEJ0GMK2Yd0OCjl5gZNEtB1ZjVxwWtouTX
7QytT8G1sCH9PlBTssSQ0NQwZ2ya8Q50xMLciuiX/8mSrgGKVgqYMrAAI+yQGmDD
7bs6yw9jnw1EyVLhJZa/7VCViX9WFLG3YR0cB4w6LPf/gN45RdWvGtF42MdxaqMZ
pzJQIenyDqHGEwNESNFmqFJX1xG0k4vlmZ9d53hR5U32t1m0drUJN00GOBN6HAiY
XMRISstSoKn4sZ2Oe3mwIC88lqgRYke7EQIDAQABo4H7MIH4MDIGCCsGAQUFBwEB
BCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3RlLmNvbTASBgNVHRMB
Af8ECDAGAQH/AgEAMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVQQ0EuY3JsMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0w
GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItOTAdBgNVHQ4EFgQUp6KDuzRFQD38
1TBPErk+oQGf9tswHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutXSFAwDQYJ
KoZIhvcNAQEFBQADggEBAIAigOBsyJUW11cmh/NyNNvGclYnPtOW9i4lkaU+M5en
S+Uv+yV9Lwdh+m+DdExMU3IgpHrPUVFWgYiwbR82LMgrsYiZwf5Eq0hRfNjyRGQq
2HGn+xov+RmNNLIjv8RMVR2OROiqXZrdn/0Dx7okQ40tR0Tb9tiYyLL52u/tKVxp
EvrRI5YPv5wN8nlFUzeaVi/oVxBw9u6JDEmJmsEj9cIqzEHPIqtlbreUgm0vQF9Y
3uuVK6ZyaFIZkSqudZ1OkubK3lTqGKslPOZkpnkfJn1h7X3S5XFV2JMXfBQ4MDzf
huNMrUnjl1nOG5srztxl1Asoa06ERlFE9zMILViXIa4=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIERTCCA66gAwIBAgIQM2VQCHmtc+IwueAdDX+skTANBgkqhkiG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTA2MTExNzAwMDAwMFoXDTIwMTIzMDIzNTk1OVow
gakxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xKDAmBgNVBAsT
H0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xODA2BgNVBAsTLyhjKSAy
MDA2IHRoYXd0ZSwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYD
VQQDExZ0aGF3dGUgUHJpbWFyeSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEArKDw+4BZ1JzHpM+doVlzCRBFDA0sbmjxbFtIaElZN/wLMxnC
d3/MEC2VNBzm600JpxzSuMmXNgK3idQkXwbAzESUlI0CYm/rWt0RjSiaXISQEHoN
vXRmL2o4oOLVVETrHQefB7pv7un9Tgsp9T6EoAHxnKv4HH6JpOih2HFlDaNRe+68
0iJgDblbnd+6/FFbC6+Ysuku6QToYofeK8jXTsFMZB7dz4dYukpPymgHHRydSsbV
L5HMfHFyHMXAZ+sy/cmSXJTahcCbv1N9Kwn0jJ2RH5dqUsveCTakd9h7h1BE1T5u
KWn7OUkmHgmlgHtALevoJ4XJ/mH9fuZ8lx3VnQIDAQABo4HCMIG/MA8GA1UdEwEB
/wQFMAMBAf8wOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHBz
Oi8vd3d3LnRoYXd0ZS5jb20vY3BzMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
e1tFz6/Oy3r9MZIaarbzRutXSFAwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2Ny
bC50aGF3dGUuY29tL1RoYXd0ZVByZW1pdW1TZXJ2ZXJDQS5jcmwwDQYJKoZIhvcN
AQEFBQADgYEAhKhMyT4qvJrizI8LsiV3xGGJiWNa1KMVQNT7Xj+0Q+pjFytrmXSe
Cajd1FYVLnp5MV9jllMbNNkV6k9tcMq+9oKp7dqFd8x2HGqBCiHYQZl/Xi6Cweiq
95OBBaqStB+3msAHF/XLxrRMDtdW3HEgdDjWdMbWj2uvi42gbCkLYeA=
-----END CERTIFICATE-----
__EOF__

request()
{
wget \
--user-agent="$UA" \
--load-cookies "$COOKIE_FILE" \
--save-cookies "$COOKIE_FILE" \
--keep-session-cookies \
"--ca-certificate=$CA_BUNDLE" \
$WGET_OPTIONS \
$@
}

grab()
{
perl -e "undef \$/; \$_ = <>; print \$$2 if /$1/m;"
}

Взята от суда

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий