Мониторинг баланса via BASH

12
V
На сайте с 05.08.2007
Offline
87
#11
A_R_S:
Вы это про curl и wget?
Или есть что-то еще для работы с сессиями?

Думаю, есть и другие варианты, если Вам мало curl и wget :)

Для wget смотрите ключи --save-cookies, --keep-session-cookies, --load-cookies.

Что-то типа такого:

wget -O /dev/null --save-cookies cookies --keep-session-cookies.txt --post-data 'UserName=user&PassWord=pass' http://сайт/логин-форм

wget --load-cookies cookies.txt http://сайт/что-нужно

Думаю, для curl тоже легко найдете пример.

С уважением, Victor (http://adm-lib.ru)
AR
На сайте с 09.11.2014
Offline
4
#12
rustelekom:
сессии генерятся при авторизации. их надо сохранить куда-то и использовать в следующем запросе. в пхп и курле есть кажется изначально, насчет баша не уверен. сессия генерится же на сеанс, поэтому одного запроса на авторизацию не хватит.

Старые сессии не прокатывают. Пробовал вставлять ранее полученные сессии, увы. 😡

rustelekom
На сайте с 20.04.2005
Offline
523
#13

А я ничего не говорил о старых сессиях, я имел в виду актуальные. Обычно у них есть время жизни и в течении этого заданного времени они должны работать. Возможно, не только сессии используются, но и куки, тогда их тоже надо сохранять и использовать.

SSD VPS, SSD хостинг и выделенные серверы в Германии или РФ, FTP хранилища, регистрация доменов и SSL сертификаты ( https://www.robovps.biz/ ) Контакты: Telegram ( https://t.me/rustelekom_bot )
AR
На сайте с 09.11.2014
Offline
4
#14
rustelekom:
А я ничего не говорил о старых сессиях, я имел в виду актуальные. Обычно у них есть время жизни и в течении этого заданного времени они должны работать. Возможно, не только сессии используются, но и куки, тогда их тоже надо сохранять и использовать.

Это дело с куками юзаю так


wget \
--load-cookies "$COOKIE_FILE" \
--save-cookies "$COOKIE_FILE" \
--keep-session-cookies \
--user-agent="$UA" \
--quiet \

В файле куков такое, больше ничего


# HTTP cookie file.
# Generated by Wget on 2014-11-14 17:04:50.
# Edit at your own risk.

Вижу в fiddler такие куки, они должны ли попасть в файл cookies?


Request sent 42 bytes of Cookie data:

rid=dagestan; rtip=0; cross-numbers=%5B%5D



---------- Добавлено 14.11.2014 в 17:33 ----------

rustelekom:
А я ничего не говорил о старых сессиях, я имел в виду актуальные. Обычно у них есть время жизни и в течении этого заданного времени они должны работать. Возможно, не только сессии используются, но и куки, тогда их тоже надо сохранять и использовать.

Все таки я не могу понять откуда достать новые сессии? 😡

rustelekom
На сайте с 20.04.2005
Offline
523
#15

Ну я не кодер, не подскажу:) Но смысл такой при запросах:

1) Обращаемся на сайт

2) Авторизуемся

3) Сохраняем куда-то данные о сессии, куках.

4) Делаем свои дела.

Вот это все надо делать одним сеансом, так как новый запрос приведет к генерации уже новой сессии и возможно переписыванию куков.

AR
На сайте с 09.11.2014
Offline
4
#16

Вот нашел такой код на странице показывающий баланс:


<form id="j_idt582:j_idt584" name="j_idt582:j_idt584" method="post" action="./Личный кабинет «Мой Билайн»_files/Личный кабинет «Мой Билайн».html" enctype="application/x-www-form-urlencoded" style="display: none">
<input type="hidden" name="j_idt582:j_idt584" value="j_idt582:j_idt584">
<script type="text/javascript">loadingBalance = function() {PrimeFaces.ab({source:'j_idt582:j_idt584:j_idt585',formId:'j_idt582:j_idt584',updateSelector:'@(.pre-balance-block, .payment-form)',async:true,onstart:function(cfg){loadingBalanceBlock.show();;},oncomplete:function(xhr,status,args){loadingBalanceBlock.hide(); try{ avaibleServices();}catch(e) {};},params:arguments[0]});};$(function() {loadingBalance();});</script><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="747523851311306748:6362696473948308748" autocomplete="off">
</form>

Как его выполнить из BASH теперь?:)

---------- Добавлено 16.11.2014 в 11:55 ----------

Делал так:


curl -k -i --raw -o 0.dat -X POST -d "javax.faces.partial.ajax=true&javax.faces.source=j_idt582%%3Aj_idt724%%3Aj_idt752&javax.faces.partial.execute=%%40all&javax.faces.partial.render=j_idt582%%3Aj_idt724+headerBalance+&j_idt582%%3Aj_idt724%%3Aj_idt752=j_idt582%%3Aj_idt724%%3Aj_idt752&j_idt582%%3Aj_idt724=j_idt582%%3Aj_idt724&javax.faces.ViewState=-1028883408476721569%%3A6254645381703189495" "https://my.beeline.ru/c/pre/index.html" -H "Host: my.beeline.ru" -H "Connection: keep-alive" -H "Accept: application/xml, text/xml, */*; q=0.01" -H "Origin: https://my.beeline.ru" -H "X-Requested-With: XMLHttpRequest" -H "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36" -H "Faces-Request: partial/ajax" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Referer: https://my.beeline.ru/c/pre/index.html" -H "Accept-Encoding: gzip,deflate" -H "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4" -H "Cookie: GlobUserRegion=385; GlobUserRegionPath=mkl; GlobRegionAncestors=1%%7C384%%7C385; __utma=1.1726003945.1389105045.1389105045.1389105045.1; WT_FPC=id=ИП-418711440.30336735:lv=1389105046522:ss=1389105046522; usst=sjzUCw83FR; ui.language.current=ru_RU; SRV=WebNode26; WGID=mnWG2; _ym_visorc_20907550=b; _gat_UA-10061712-42=1; _gat_UA-10061712-32=1; _gat_UA-10061712-1=1; _ga=GA1.2.1726003945.1389105045; _gat_UA-10061712-37=1; JSESSIONID=g4O3l2qXNploAr0BvHLczPJLWBRluF8aCfkmcPLjQkGQok83EnzZ!-41650466; user_9674093113=9674093113; ticket=b5467ddcd44009ed5987a7fe626967e316bb0f9f; userType=B2C"

Результат нажатия кнопки обновить баланс в сервис гиде.

Может быть так запускать?

---------- Добавлено 16.11.2014 в 12:03 ----------

Файл 0.dat выглядит так:


HTTP/1.1 302 Moved Temporarily
Server: nginx/1.5.3
Date: Sun, 16 Nov 2014 08:01:57 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: http://my.beeline.ru/login.html
X-USS-SERVER-NAME: nWebNode16
X-Powered-By: Servlet/3.0 JSP/2.2
Set-Cookie: usst=JhY3XYexBd; domain=my.beeline.ru; path=/; secure; HttpOnly
Set-Cookie: SRV=WebNode16; path=/
Set-Cookie: WGID=mnWG1; path=/

103
<html><head><title>302 Moved Temporarily</title></head>
<body bgcolor="#FFFFFF">
<p>This document you requested has moved
temporarily.</p>
<p>It's now at <a href="http://my.beeline.ru/login.html">http://my.beeline.ru/login.html</a>.</p>
</body></html>

0


😡

AR
На сайте с 09.11.2014
Offline
4
#17

Для Билайна пробовал, но там все сложнее оказалось. Баланс формируется аяксом.


_WARN=`echo $_RESPONSE | grep "messages-error"`
if [ "$_WARN" == "" ];
then
_BALANCE=`echo $_RESPONSE | egrep -o "<span class=\"price[^\"]?\">[^<]+<span[^>]+>" | sed -e 's@<[^>]*>@@g' -e 's@\s*@ @' -e 's@\ @ @g' -e 's@^\s*@@'`

if [ "$_BALANCE" != "" ];
then
echo "$_BALANCE" | sed -e 's@\..*@.@' -e 's@,@.@'
else
echo "Error: balance not avaible"
fi
else
echo "Error: incorrect login or password"
fi

Выдает "Error: balance not avaible", потому что баланс пуст.

К примеру fiddler выдал мне такой запрос


javax.faces.partial.ajax=true&javax.faces.source=j_idt582%3Aj_idt584%3Aj_idt585&javax.faces.partial.execute=%40all&javax.faces.p...
kxk
На сайте с 30.01.2005
Offline
970
kxk
#18

A_R_S, Может запрос из С++ будет удобнее нежели издевательство над башем?

Ваш DEVOPS
AR
На сайте с 09.11.2014
Offline
4
#19
kxk:
A_R_S, Может запрос из С++ будет удобнее нежели издевательство над башем?

Может быть :-) Вы и правы, но C++ я не знаю.

---------- Добавлено 03.12.2014 в 22:52 ----------

kxk:
A_R_S, Может запрос из С++ будет удобнее нежели издевательство над башем?

Как это будет выглядеть на С++ ?

12

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