[C#] Авторизация в браузерной игре

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by IGL, 15 Mar 2012.

  1. IGL

    IGL New Member

    Joined:
    16 Nov 2007
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    Не получается авторизоватся в игре

    перепробовал много вариантов
    get_number() цифры нормально
    получает и передает в login()
    дальше должна происходить
    авторизация в игре на не про-
    исходит

    PHP:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.IO;
    using System.Text.RegularExpressions;

    namespace 
    WindowsFormsApplication4
    {
        public 
    partial class Form1 Form
        
    {
            public 
    Form1()
            {
                
    InitializeComponent();
            }

            public static 
    String CoreGame ""//Весь код HTML для парсинга.
            
    public static CookieContainer cookie = new CookieContainer();

            public 
    void get_number()
            {
                
    HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create("http://tx3.travian.ru/login.php");
                
    request1.AllowAutoRedirect false;
                
    request1.Timeout 100000;
                
    request1.KeepAlive true;
                
    request1.CookieContainer cookie;
                
    HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();
                
    StreamReader streamread1 = new StreamReader(response1.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
                
    string page1 streamread1.ReadToEnd();
                
    Regex number_regex = new Regex("name=\"login\" value=\"([0-9]+)\" />");
                
    Match number_match number_regex.Match(page1);
                
    string number number_match.Groups[1].Value;
                
    login(numbercookie);
                
            }

            public 
    void login(string numberCookieContainer cookie)
            {
                
    HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create("http://tx3.travian.ru/dorf1.php?");
                
    String name "tester"// логин
                
    String password "tester123"//пароль
                
    String s1 "%C2%EE%E9%F2%E8"// кнопка "Войти"
                
    String w "1600%3A900"// Разрешение экрана 1600:900
                
    string data String.Format("name={0}&password={1}&s1={2}&w={3}&login={4}"namepasswords1wnumber);
                
    byte[] Send Encoding.UTF8.GetBytes(data);
                
    request2.AllowAutoRedirect false;
                
    request2.UserAgent "Opera/11.80";
                
    request2.Method "POST";
                
    request2.KeepAlive true;
                
    request2.CookieContainer cookie;
                
    HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
                
    StreamReader streamread2 = new StreamReader(response2.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
                
    string page2 streamread2.ReadToEnd();
                
    //MessageBox.Show(page2);
                
    Regex gold_regex = new Regex("class=\"gold\" /><br />([0-9]+)</a>"RegexOptions.Singleline); // находит количество золота сейчас 0
                
    Regex name_regex = new Regex("<span class=\"wrap\">(.*?)</span>"RegexOptions.Singleline); // находит имя героя такое же как и логин
                
    Match gold_match gold_regex.Match(page2);
                
    Match name_match name_regex.Match(page2);
                
    String gold_value gold_match.Groups[1].Value;
                
    String name_value name_match.Groups[1].Value;
                
    label1.Text String.Format("Золото: {0}"gold_value);
                
    this.Text += name_value;
            }

            public 
    void button2_Click(object senderEventArgs e)
            {
                
    get_number();
            }
        }
    }

     
  2. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    вот пост авторизации
    Code:
    http://tx3.travian.ru/dorf1.php?name=[COLOR=DarkRed]<your mail>[/COLOR]&password=[COLOR=DarkRed]<your pass>[/COLOR]&s1=Войти&w=1600:900&login=1331791735
    сравни свой пост с моим
    Code:
    public void login(string number, CookieContainer cookie)
            {
                HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create("http://tx3.travian.ru/dorf1.php");
                String name = "tester"; // логин
                String password = "tester123"; //пароль
                String s1 = "Войти"; // кнопка "Войти"
                String w = "1600:900"; // Разрешение экрана 1600:900
                string data = String.Format("name={0}&password={1}&s1={2}&w={3}&login={4}", name, password, s1, w, number);
                byte[] Send = Encoding.UTF8.GetBytes(data);
                request2.AllowAutoRedirect = false;
                request2.UserAgent = "Opera/11.80";
                request2.Method = "POST";
                request2.KeepAlive = true;
                request2.CookieContainer = cookie;
                request2.ContentLength = Send.Length;
                System.IO.Stream sendStream = request2.GetRequestStream();
                sendStream.Write(Send, 0, Send.Length);
                sendStream.Close();
                HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
                StreamReader streamread2 = new StreamReader(response2.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
                string page2 = streamread2.ReadToEnd();
                //MessageBox.Show(page2);
                Regex gold_regex = new Regex("class=\"gold\" /><br />([0-9]+)</a>", RegexOptions.Singleline); // находит количество золота сейчас 0
                Regex name_regex = new Regex("<span class=\"wrap\">(.*?)</span>", RegexOptions.Singleline); // находит имя героя такое же как и логин
                Match gold_match = gold_regex.Match(page2);
                Match name_match = name_regex.Match(page2);
                String gold_value = gold_match.Groups[1].Value;
                String name_value = name_match.Groups[1].Value;
                //label1.Text = String.Format("Золото: {0}", gold_value);
                this.Text += name_value;
            }
    
    И потом разберись с куками и хедерами. снифером пользуйся
     
    #2 cheater_man, 15 Mar 2012
    Last edited: 15 Mar 2012
  3. IGL

    IGL New Member

    Joined:
    16 Nov 2007
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    там не нужно вводить мыло там только по логину авторизация
     
  4. IGL

    IGL New Member

    Joined:
    16 Nov 2007
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    пользуюсь Fiddler2 но все равно непонятно почему не получается...
    параметры передаются правильные
     
  5. bafoed

    bafoed Member

    Joined:
    14 Jul 2009
    Messages:
    88
    Likes Received:
    12
    Reputations:
    10

    urlencode не нужен