Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

bbk_

Проверка баланса корбины на Basic

Рекомендованные сообщения

Я не программист но в школе изучал байсик. И вот захотелось мне программку для проверки баланса в корбине а так как у меня mac os и готовой софтины я не нашел - решил попробовать сам.

 

Выбор остановил на кроссплатформенном PureBasic(http://www.purebasic.com/) - он еще и под Linux работает - тоже хорошо.

 

Вот только чтото не выходит( может кто поможет?

 

Procedure.s HttpGet(Server$,Path$,Cookies$="",Download=#True);shitty one for testing 
 Protected Request$,Result$,BytesRead,BufferLength=40000,*Buffer = AllocateMemory(BufferLength) 
 Protected ServerID = OpenNetworkConnection(Server$,80);443 for https 
 If ServerID 

 Request$ = "POST "+Path$+" HTTP/1.1"+#CRLF$ 
 Request$ + "Host: "+Server$+#CRLF$ 
 Request$ + "Cookie: income=1"+#CRLF$
 Request$ + "Content-Type: application/x-www-form-urlencoded"+#CRLF$
 Request$ + "UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.6 (build 01425); InfoPath.1)"+#CRLF$
 Request$ + "Connection: Keep-Alive"+#CRLF$ 
 Request$ + "Content-Length: 32"+#CRLF$+#CRLF$
 Request$ + "login=логин&password=пароль"
SendNetworkData(ServerID,@Request$,Len(Request$));+1) 

If Download 
  J01: 
  Repeat 
	BytesRead = ReceiveNetworkData(ServerID,*Buffer,BufferLength) 
	Result$ + PeekS(*Buffer,BytesRead) 
  Until BytesRead < BufferLength 
  Delay(100) 
  If NetworkClientEvent(ServerID) = #PB_NetworkEvent_Data 
	Goto J01 
  EndIf 
EndIf 
CloseNetworkConnection(ServerID) 
 EndIf 
 FreeMemory(*Buffer) 
 ProcedureReturn Result$ 
EndProcedure 

InitNetwork() 
Result$ = HttpGet("stat.corbina.net","/userlogin.pl'") 
If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And	   CreateGadgetList(WindowID(0)) 

 EditorGadget(0, 8, 8, 306, 133, #PB_Editor_ReadOnly) 
SetGadgetText(0, Result$) 
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
EndIf

 

 

В итоге вместо страницы статистики получаю:

 

HTTP/1.1 302 Found

Server: nginx/0.4.13

Date: Tue, 09 Sep 2008 12:17:39 GMT

Content-Type: text/html; charset=koi8-r

Transfer-Encoding: chunked

Connection: keep-alive

Location: http://www3.corbina.ru/not-found/not-found.shtml

Expires: Thu, 01 Jan 1970 00:00:01 GMT

Last-Modified: Tue, 09 Sep 2008 12:17:39 GMT

 

e4

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<HTML><HEAD>

<TITLE>302 Found</TITLE>

</HEAD><BODY>

<H1>Found</H1>

The document has moved <A HREF="http://www3.corbina.ru/not-found/not-found.shtml">here</A>.<P>

</BODY></HTML>

 

0

 

 

 

Плиз Хелп!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Работает отлично) Собственно сидя на работе виндовую версию и мучаю)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему у тя там метки? С ними же криво и считается давно плохим стилем? Да и без них наверное можно обойтись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не спорю что метки уже не в моде - но как я говорил я не программист - так что уж как придумалось.

 

Вначале надо заставить работать а потом красоту наводить)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Я не спорю что метки уже не в моде - но как я говорил я не программист - так что уж как придумалось.

 

Вначале надо заставить работать а потом красоту наводить)

Метка у тя вроде одна так что можно сделать типа того

 

If Download
  Repeat
  Repeat
	BytesRead = ReceiveNetworkData(ServerID,*Buffer,BufferLength)
	Result$ + PeekS(*Buffer,BytesRead)
  Until BytesRead < BufferLength
  Delay(100)
  Until NetworkClientEvent(ServerID) <> #PB_NetworkEvent_Data
EndIf

 

Зачем делэй сделан? Типа паузы между запросами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да так лучше)

 

нашел опечатку надо так Result$ = HttpGet("stat.corbina.net","/userlogin.pl'")

 

Но все равно не работает(

 

Стал выдавать

 

HTTP/1.1 302 Found

Server: nginx/0.4.13

Date: Tue, 09 Sep 2008 13:37:52 GMT

Content-Type: text/html; charset=koi8-r

Transfer-Encoding: chunked

Connection: keep-alive

Set-Cookie: corbina-stat-hash=b0d40cf0d2897a61; domain=stat.corbina.net; path=/; expires=Wed, 10-Sep-2008 13:37:52 GMT

Set-Cookie: corbina-stat-login=логин; domain=stat.corbina.net; path=/; expires=Wed, 10-Sep-2008 13:37:52 GMT

Location: http://stat.corbina.net/testcookie.pl?url=/intindex.pl

Expires: Thu, 01 Jan 1970 00:00:01 GMT

Last-Modified: Tue, 09 Sep 2008 13:37:52 GMT

 

ea

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<HTML><HEAD>

<TITLE>302 Found</TITLE>

</HEAD><BODY>

<H1>Found</H1>

The document has moved <A HREF="http://stat.corbina.net/testcookie.pl?url=/intindex.pl">here</A>.<P>

</BODY></HTML>

 

0

 

 

 

Наваял вот такой код( на основе разных готовых исходников)

 

 

 If OpenWindow(0, 0, 0, 322, 150, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) 
  WebGadget(0, 10, 10, 580, 280, "http://stat.corbina.net/userlogin.pl?login=логин&password=пароль") 


Result$="" 
Repeat 
Event = WaitWindowEvent() 

Select Event 

	 Case #PB_Event_Gadget 
	   Select EventGadget() 
		 Case 0 

		Select EventType() 
		Case #PB_EventType_DownloadEnd 

		 Result$ = GetGadgetItemText(0,#PB_Web_HtmlCode) 

		 EndSelect 

	   EndSelect 
EndSelect	  


Until Len(Result$)>100


 EditorGadget(0, 8, 8, 306, 133, #PB_Editor_ReadOnly) 
 SetGadgetText(0, Result$) 
 Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
 EndIf

 

 

Но как то мне кажется это не правильно получать html через браузер. к тому же тормознуто работает.

 

Подскажите алгоритм как теперь в тексте найти слово ваш баланс и то что стоит за ним?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Басике есть функция instr http://www.google.ru/search?source=ig&...oogle&meta= Соответственно можно получит первое вхождение "ваш баланс" и потом с помощью подстроки (Mid например функция) вырезать оставшийся кусок

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Да,

On instr gosub

Это что значит on instr gosub? По вызову функции перейти на другую? Оо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

tour,

это ты stat.corbina.net сломал??? у меня чёт не заходит :horse:

плюс всегда казалось что он по https работает...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я конечно мало чего понимаю в бейсике, даже никогда его не открывал.

 

Ты пишеш процедура гет, хотя пользуешся функциями post :)

мб я ошибаюсь.

 

 

Я делал проще на дельфи , просто запрашивал введённый логин и пароль на

http://stat.corbina.net/userlogin.pl , получаеш ответ скрипта а оттуда уже вытаскиваеш нужную полученную информацию...

 

:(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Итак Взяв другой BASIC-REALBASIC попробовал еще немного поигратся)

 

Написал пока что прогу для запроса баланса и бонусного счета для Мегафон СевероЗапад

MyBalance

Windows версия939adf1453dfa8fa892c20bf4ad9.jpeg

MacOSX версия7056d0c71ad96c4992c7618a7d3d.jpeg

 

Вообще-то реалбасик сразу создает версию проги и под Linux но у меня линукса нет-так что не потестить-если кто поможет-респект!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну так поставь виртуалку и поставь там линукс лбой

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А чего вы удивляетесь, что получаете в ответ "The document has moved", ведь через старый сайт статистику никак не узнать теперь, после логина идет переадрессация на билайн.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах