purebasic.info

PureBasic forum
Текущее время: Вт ноя 19, 2019 2:18 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: GET HTTPS Cookie и т.п.
СообщениеДобавлено: Ср ноя 06, 2019 2:50 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср май 18, 2016 11:52 pm
Сообщений: 49
Откуда: Нижегородская обл.
Благодарил (а): 21 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Здравствуйте.
Решил для себя сделать лаунчер местного провайдера интернета, чтоб баланс видеть около часов.
Сперва попробовал по старинке через SendNetworkString, вот код:

Код:
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
 
InitNetwork()
Conn = OpenNetworkConnection("bill.sv-tel.ru", 80, #PB_Network_TCP)
If Conn
  Restore get:
 getData$=""
  While s$<>#CRLF$
    Read.s s$
    getData$ + s$
  Wend
  Debug getdata$
 
  If SendNetworkString(Conn, getData$,#PB_UTF8 )  
    Delay(25)
    *Memory = AllocateMemory(15000)
    While NetworkClientEvent(Conn) <> #PB_NetworkEvent_Data
      Delay(1000)
    Wend
    If ReceiveNetworkData(Conn, *Memory,150000)
      htmlPage$ = PeekS(*Memory, 150000,#PB_UTF8 )
      FreeMemory(*Memory)
      CloseNetworkConnection(Conn)
      Debug htmlPage$
    EndIf
  EndIf
Else
  MessageRequester("", "Нет соединения")
EndIf
 
DataSection
  get:
  Data.s "GET /index.php HTTP/1.1"+#CRLF$
  Data.s "Host:bill.sv-tel.ru"+#CRLF$
  Data.s #CRLF$
EndDataSection



Ответ получил печальный:
Цитата:
GET /index.php HTTP/1.1
Host:bill.sv-tel.ru


HTTP/1.1 307 Moved Temporarily
Content-Type: text/html; charset=UTF-8
Location: https://bill.sv-tel.ru/index.php
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Wed, 06 Nov 2019 11:24:14 GMT
Content-Length: 223

<head><title>Документ перемещен</title></head>
<body><h1>Объект перемещен</h1>Документ теперь находится <a HREF="https://bill.sv-tel.ru/index.php">здесь</a></body>


То-есть сервер отправляет на HTTPS.
Попытки узнать про HTTPS были обречены, нет точной информации на русском языке, вокруг поверхностная. Через SendNetworkString не смог ничего получить с сервера по HTTPS.

И тут я узнал что есть PureBasic более новей и там есть HTTPRequest


Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
  InitNetwork()
  HttpRequest = HTTPRequest(#PB_HTTP_Get, "https://bill.sv-tel.ru/?mode=auth&user=****&passw=*****")
  If HttpRequest
    s$= HTTPInfo(HTTPRequest, #PB_HTTP_Response)
    Debug HTTPInfo(HTTPRequest, #PB_HTTP_Response)
 
 
    If Mid(s$,FindString(s$,"Необходимо авторизоваться"),10)= "Необходимо"
   
    ElseIf Mid(s$,FindString(s$,"Вы успешно авториз"),10)="Вы успешно"
           ;FinishHTTP(HTTPRequest)
           FreeMemory(*Response)
           Delay(25)
           HttpRequest = HTTPRequest(#PB_HTTP_Post, "https://bill.sv-tel.ru/?mode=stat")
           If HttpRequest
             *Response = HTTPMemory(HTTPRequest)
             s$= HTTPInfo(HTTPRequest, #PB_HTTP_Response)
             Debug s$
             
             EndIf
    EndIf



Ответ (точней два ответа, один от авторизации, а другой при переходе на страницу статистики - авторизация утеряна):
"Полученный в Debug"
Ответ от HTTPRequest(#PB_HTTP_Get, "https://bill.sv-tel.ru/?mode=auth&user=****&passw=*****") (Простите, не могу светить логин и пароль).
Цитата:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Web-портал абонента</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<link type="text/css" rel="stylesheet" media="screen" href="styles.css">
<script type="text/javascript">
<!--
function query_detail()
{
if((document.det_form.amts_s.checked) || (document.det_form.amts_f.checked) ||
(document.det_form.rmts_s.checked) || (document.det_form.rmts_f.checked) ||
(document.det_form.inet_traf_f.checked) || (document.det_form.inet_sess_f.checked) ||
(document.det_form.tele_s.checked) || (document.det_form.tele_f.checked) ||
(document.det_form.razo_s.checked) || (document.det_form.razo_f.checked) ||
(document.det_form.apus_s.checked) || (document.det_form.apus_f.checked))
{
if(window.confirm(' Загрузка данных может занять несколько \n\r минут. Продолжить?'))
{
if(document.det_form.format_pdf.checked)
{
document.det_form.action = 'detail.php';
document.det_form.submit();
}
else
{
document.det_form.action = '';
document.det_form.submit();
}
}
else
{
return false;
}
}
else
{
window.alert('Необходимо выбрать хотя бы одну услугу!');
return false;
}
}

function checkpass()
{
if((document.change_pass_form.reg_pass_old.value == '') ||
(document.change_pass_form.reg_pass_new.value == '') ||
(document.change_pass_form.reg_pass_newcon.value == ''))
{
window.alert('Все поля должны быть заполнены!');
return false;
}
else
{
if(document.change_pass_form.reg_pass_new.value == document.change_pass_form.reg_pass_newcon.value)
{
document.change_pass_form.submit();
}
else
{
window.alert('Пароли должны совпадать!');
return false;
}
}
}

function checkcard()
{
if((document.pay_inet_form.card_login.value == '') ||
(document.pay_inet_form.card_pass.value == ''))
{
window.alert('Все поля должны быть заполнены!');
return false;
}
else
{
document.pay_inet_form.submit();
}
}

function load_tarplans()
{




var type_acc = inet_accounts[document.change_tp_form.inet_logins.value];

var objDDL = document.change_tp_form.inet_tarplans;

objDDL.options.length = 0;

for(i=0; i<inet_tp.length; i=i+1)
{
if(inet_tp[i].tp_type == type_acc)
{
var theText = inet_tp[i].tp_name;
var theValue = inet_tp[i].tp_code;
var option = new Option(theText, theValue);

objDDL.options.add(option, objDDL.options.length);
}
}

if(type_acc > -1)
{
document.change_tp_form.curr_inet_tarplans.value = curr_inet_tp[document.change_tp_form.inet_logins.value];
}
else
{
document.change_tp_form.curr_inet_tarplans.value = "";
}
}


function changetp()
{
if(document.change_tp_form.inet_tarplans.options[document.change_tp_form.inet_tarplans.selectedIndex].text == document.change_tp_form.curr_inet_tarplans.value)
window.alert('Выбранный тарифный план совпадает с текущим. Выберите другой!');
else
window.alert('Выбор сделан!');
}
-->
</script>
</head>
<body>

<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter13392958 = new Ya.Metrika({id:13392958, enableAll: true});
} catch(e) {}
});

var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";

if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="//mc.yandex.ru/watch/13392958" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->

<div id="top">
<!-- Блок аутентификации -->
<div id="auth">
<form method="post" action="?mode=logout">
<table>
<tr>
<td>ЛОГИН<br><input class="input" name="user" type="text" value="mishin_ea" style="width: 150px" maxlength="20" disabled></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>ПАРОЛЬ<br><input class="input" name="passw" type="password" value="" style="width: 150px" maxlength="30" disabled></td>
<td><br><input class="button_out" type="submit" value=""></td>
</tr>
</table>
</form>
</div>
</div>

<div id="menu">
<!-- Меню -->

<div class="right">
<!--<img src="images/menu_split.gif" alt="" />-->
<a href="?mode=acompany" title="Информация о компании">О&nbsp;&nbsp;компании</a>
<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<a href="?mode=aabonent" title="Информация об абоненте">Об&nbsp;&nbsp;абоненте</a>
<a href="?mode=state" title="Состояние счета">Состояние&nbsp;&nbsp;счета</a>
<a href="?mode=detail" title="Услуги">Услуги</a>
<a href="?mode=menu_claims" title="Заявления">Заявления</a>
<a href="?mode=pay" title="Оплата">ОПЛАТА УСЛУГ</a>
<a href="?mode=config" title="Управление">Управление</a>


</div>
</div>

<div id="head">
<!-- Основной блок -->
&nbsp; Вы успешно авторизовались ...
<style type="text/css">
<!--
.spaninfoBlack{
color: blue;
font-size: 10pt;
text-align: left;
font-weight: bold;
}
.spaninfoRed{
color: red;
font-size: 10pt;
text-align: left;
font-weight: bold;
}
-->
</style>
<div class="div">&nbsp;</div>
<div class="div">&nbsp;</div>



<hr>
<div style=" font-weight:bold; font-size:12px; width:100%;text-align: center; margin:0 0 0 0" >
<div style="color:red">Уважаемые абоненты!</div>
</p>
<p>
<div style="color:blue;"
<p style="text-align: center;">Поддержите второй этап благоустройства Лукерьинского пруда!
Отдать свой голос за дальнейшее развитие территории вы можете посредством онлайн-голосования на портале проекта golosza.ru, а так же в пунктах опроса, которые открыты в МФЦ и ТЦ «Атолл».
Голосование проводится до 31 октября 2019 года. Минимальный возраст гражданина для голосования — 14 лет</p>
<p>

<p><img width=100% src="/images/22102019.jpg"></p>


</div>

<div id="footer">
<div class="bottom">
<div class="width auto_margin"><br>
<b>Copyright &copy; ДонТелеСофт. Все права сохранены.</b>
</div>
</div>
</div>
<script src="js/init.js"></script>
<script src="js/jquery.min.js"></script>
<script src="js/jquery.maskedinput.min.js"></script>
</body>
</html>


И Degab после второй отправки HTTPRequest(#PB_HTTP_Post, "https://bill.sv-tel.ru/?mode=stat")
Цитата:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Web-портал абонента</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<link type="text/css" rel="stylesheet" media="screen" href="styles.css">
<script type="text/javascript">
<!--
function query_detail()
{
if((document.det_form.amts_s.checked) || (document.det_form.amts_f.checked) ||
(document.det_form.rmts_s.checked) || (document.det_form.rmts_f.checked) ||
(document.det_form.inet_traf_f.checked) || (document.det_form.inet_sess_f.checked) ||
(document.det_form.tele_s.checked) || (document.det_form.tele_f.checked) ||
(document.det_form.razo_s.checked) || (document.det_form.razo_f.checked) ||
(document.det_form.apus_s.checked) || (document.det_form.apus_f.checked))
{
if(window.confirm(' Загрузка данных может занять несколько \n\r минут. Продолжить?'))
{
if(document.det_form.format_pdf.checked)
{
document.det_form.action = 'detail.php';
document.det_form.submit();
}
else
{
document.det_form.action = '';
document.det_form.submit();
}
}
else
{
return false;
}
}
else
{
window.alert('Необходимо выбрать хотя бы одну услугу!');
return false;
}
}

function checkpass()
{
if((document.change_pass_form.reg_pass_old.value == '') ||
(document.change_pass_form.reg_pass_new.value == '') ||
(document.change_pass_form.reg_pass_newcon.value == ''))
{
window.alert('Все поля должны быть заполнены!');
return false;
}
else
{
if(document.change_pass_form.reg_pass_new.value == document.change_pass_form.reg_pass_newcon.value)
{
document.change_pass_form.submit();
}
else
{
window.alert('Пароли должны совпадать!');
return false;
}
}
}

function checkcard()
{
if((document.pay_inet_form.card_login.value == '') ||
(document.pay_inet_form.card_pass.value == ''))
{
window.alert('Все поля должны быть заполнены!');
return false;
}
else
{
document.pay_inet_form.submit();
}
}

function load_tarplans()
{




var type_acc = inet_accounts[document.change_tp_form.inet_logins.value];

var objDDL = document.change_tp_form.inet_tarplans;

objDDL.options.length = 0;

for(i=0; i<inet_tp.length; i=i+1)
{
if(inet_tp[i].tp_type == type_acc)
{
var theText = inet_tp[i].tp_name;
var theValue = inet_tp[i].tp_code;
var option = new Option(theText, theValue);

objDDL.options.add(option, objDDL.options.length);
}
}

if(type_acc > -1)
{
document.change_tp_form.curr_inet_tarplans.value = curr_inet_tp[document.change_tp_form.inet_logins.value];
}
else
{
document.change_tp_form.curr_inet_tarplans.value = "";
}
}


function changetp()
{
if(document.change_tp_form.inet_tarplans.options[document.change_tp_form.inet_tarplans.selectedIndex].text == document.change_tp_form.curr_inet_tarplans.value)
window.alert('Выбранный тарифный план совпадает с текущим. Выберите другой!');
else
window.alert('Выбор сделан!');
}
-->
</script>
</head>
<body>

<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter13392958 = new Ya.Metrika({id:13392958, enableAll: true});
} catch(e) {}
});

var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";

if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="//mc.yandex.ru/watch/13392958" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->

<div id="top">
<!-- Блок аутентификации -->
<div id="auth">
<form method="post" action="?mode=auth">
<table>
<tr>
<td>ЛОГИН<br><input class="input" name="user" type="text" value="" style="width: 150px" maxlength="20"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>ПАРОЛЬ<br><input class="input" name="passw" type="password" value="" style="width: 150px" maxlength="30"></td>
<td><br><input class="button_in" type="submit" value=""></td>
</tr>
</table>
</form>
</div>
</div>

<div id="menu">
<!-- Меню -->

</div>

<div id="head">
<!-- Основной блок -->

&nbsp; Необходимо авторизоваться ...
<style type="text/css">
<!--
.spaninfoBlack{
color: blue;
font-size: 10pt;
text-align: left;
font-weight: bold;
}
.spaninfoRed{
color: red;
font-size: 10pt;
text-align: left;
font-weight: bold;
}
-->
</style>
<div class="div">&nbsp;</div>
<div class="div">&nbsp;</div>



<hr>
<div style=" font-weight:bold; font-size:12px; width:100%;text-align: center; margin:0 0 0 0" >
<div style="color:red">Уважаемые абоненты!</div>
</p>
<p>
<div style="color:blue;"
<p style="text-align: center;">Поддержите второй этап благоустройства Лукерьинского пруда!
Отдать свой голос за дальнейшее развитие территории вы можете посредством онлайн-голосования на портале проекта golosza.ru, а так же в пунктах опроса, которые открыты в МФЦ и ТЦ «Атолл».
Голосование проводится до 31 октября 2019 года. Минимальный возраст гражданина для голосования — 14 лет</p>
<p>
<p><img width=100% src="/images/22102019.jpg"></p>






</div>

<div id="footer">
<div class="bottom">
<div class="width auto_margin"><br>
<b>Copyright &copy; ДонТелеСофт. Все права сохранены.</b>
</div>
</div>
</div>
<script src="js/init.js"></script>
<script src="js/jquery.min.js"></script>
<script src="js/jquery.maskedinput.min.js"></script>
</body>
</html>



:?: :?: :?: :?: :?: :?: :?: :?:
То-есть первый раз я спокойно прохожу авторизацию на странице, но мне нужна страница с данными и тут я теряю авторизацию при следующем запросе.
Если правильно понял, то есть Sookie - такая штука, но как с ней работать?
Получить Sookie могу вот так:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
 
 InitNetwork()
 Header$ = GetHTTPHeader("https://bill.sv-tel.ru")
 Delay (25)
 s$=""
 p1=FindString(Header$,"SSID=")+5
 p2=FindString(Header$,"; path=/")
 s$=Mid(Header$,p1,p2-p1)
 Debug header$
 Debug ">>>>>>"+s$+"<<<<<"
 ; Header$("Cookie")=s$
 


ответ:
Цитата:
HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 0
Content-Type: text/html; charset=cp1251
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.6.24
Set-Cookie: PHPSESSID=kd5qp7lolstgu5ij9bc98ic7g4; path=/
X-Powered-By: ASP.NET
Date: Wed, 06 Nov 2019 11:34:26 GMT


>>>>>>kd5qp7lolstgu5ij9bc98ic7g4<<<<<


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: GET HTTPS Cookie и т.п.
СообщениеДобавлено: Ср ноя 06, 2019 4:10 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 339
Благодарил (а): 14 раз.
Поблагодарили: 41 раз.
Пункты репутации: 2
Примерно так:
Код:
1
2
3
4
NewMap Header$()
Header$("Cookie") = "PHPSESSID=u60vtqng46gn3h6l0pep2kgnd0"
 
HTTPRequest(#PB_HTTP_Get, "https://bill.sv-tel.ru/?mode=stat", "", 0, Header$())


Почему #PB_HTTP_Post? У меня браузер засылает в GET :? Хотя, проверить без логина-пароля сложно :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: GET HTTPS Cookie и т.п.
СообщениеДобавлено: Ср ноя 06, 2019 11:25 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср май 18, 2016 11:52 pm
Сообщений: 49
Откуда: Нижегородская обл.
Благодарил (а): 21 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
repeat писал(а):
Примерно так:
Код:
1
2
3
4
NewMap Header$()
Header$("Cookie") = "PHPSESSID=u60vtqng46gn3h6l0pep2kgnd0"
 
HTTPRequest(#PB_HTTP_Get, "https://bill.sv-tel.ru/?mode=stat", "", 0, Header$())

...

Спасибо тебе добрый человек!!!!
СПАСИБО!!! СПАСИБО!!!! СПАСИБО!!!! :wink:


Работает :D !


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB