В этой статье я покажу как зайти на игровой аккаунт по DoSid-у (DarkOrbit Session ID), и спарсить некоторые данные с нуля!
Я использую [Ссылки могут видеть только зарегистрированные пользователи. ] (Ссылка на microsoft.com)
1. Для начала создадим новый проект. 1.1. Создаем на форме 5 текстбоксов, называем serv, sid, textbox1, textbox2, uridiym (textbox1 и textbox2 делаем visible = false). 1 кнопку с названием login. Textbox1 = "xcred": ". Textbox2 = ","jackpot": 2. Кликаем 2 раза на форму, что бы перейти к коду. В самом начале кода, перед Public Class Form1 пишем:
Код:
Imports System.Net
Imports System.IO
2.1. Вставляем функцию парса:
Код:
Public Function Pars(ByRef strSource As String, ByRef strStart As String, ByRef strEnd As String, Optional ByRef startPos As Integer = 0) As String
Dim iPos As Integer, iEnd As Integer, lenStart As Integer = strStart.Length
Dim strResult As String
strResult = String.Empty
iPos = strSource.IndexOf(strStart, startPos)
iEnd = strSource.IndexOf(strEnd, iPos + lenStart)
If iPos <> -1 AndAlso iEnd <> -1 Then
strResult = strSource.Substring(iPos + lenStart, iEnd - (iPos + lenStart))
End If
Return strResult
End Function
3. Теперь кликаем 2 раза на кнопку что бы перейти к коде кнопки, и пишем.
Код:
Dim WC As New WebClient
Dim DarkO, internalStartPageCode, uridium As String
DarkO = "http://" & serv.Text & ".darkorbit.com/indexInternal.es?action=internalStart&dosid=" & sid.Text ''генерируем ссылку
WC.Headers.Add("Cookie: __utma=1.120236064.1316868271.1316868271.1316868271.1; __utmb=1.12.10.1316868271; __utmc=1; __utmz=1.1316868271.1.1.utmcsr=darkorbit.bigpoint.com|utmccn=(referral)|utmcmd=referral|utmcct=/index.es; dosid=" & sid.Text) ''отправляем куки
internalStartPageCode = WC.DownloadString(DarkO) ''качаем исходный код странички
uridium = Pars(internalStartPageCode, TextBox1.Text, TextBox2.Text) '' парсим
uridiym.Text = uridium ''вставляем в текстбокс
Готово, в текстбоксе uridiym должно появится число, кол-во уридиума на аккауте, кому что неясно качаем исходник. Или спрашивайте здесь.
[Ссылки могут видеть только зарегистрированные пользователи. ][Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось OrBiT_DaRk[2]; 30.11.2011 в 19:00.
Re: Авторизация по Sid-y в DarkOrbit, парс информации
Хммм... Не советовал бы я в ДО парсить подобным образом, особенно, когда собираешься парсить не один игровой сервер. На одном, конечно прокатит... Но у программеров-хтмл ДО ручки кривоватые иногда, или софт ихний такой. На разных игровых серверах одна и та же страница не будет одинаковой. И дело даже не в том что - локализация надписей. Просто - среди серверов - обязательно найдется один, два, где в одном и том же месте окажутся лишние пробелы, или же наоборот - не будет хватать... Лучше всего пользоваться библиотекой, указанной выше - HtmlAgilityPack, но для парсинга одного, двух значений - это лишнее. Проще и надежнее пользоваться Регексом... Мощная штука, если в правильных руках.
Я обычно пользуюсь примерно такой функцией.
Например, чтобы найди сид -
Код:
static string Parse(string inputstring, string patternstring, int group)
{
string outstring = string.Empty;
Match pattResult = Regex.Match(inputstring, patternstring, RegexOptions.IgnoreCase);
if (patt.Success)
return outstring = pattResult.Groups[group].ToString();
return outstring;
}
использовать примерно так:
string input = "Здесь страница для парсинга, которую мы получили раньше, или же строка в которой желаем что то найти";
string pattern = @"(dosid=)(\S+)('))";
string resultat = Parse(input, pattern, 2);
if(resultat != string.Empty)
{
здесь у нас действия, если функция нашла sid
}
Не забываем подключить регекс
using System.Text.RegularExpression;
Студии под рукой нет, мог ошибиться при написании...
Последний раз редактировалось QwintO; 02.12.2011 в 06:58.