Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Авторизация на сайте

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 17.06.2012, 17:48   #1
 Сержант
Аватар для mr*WOLF
 
mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(mr*WOLF сломал счётчик популярности :(
Регистрация: 02.12.2011
Сообщений: 102
Популярность: 18248
Золото Zhyk.Ru: 25
Сказал(а) спасибо: 611
Поблагодарили 457 раз(а) в 285 сообщениях
 
Arrow Авторизация на сайте

Цитата:
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.IO;

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

private void button1_Click(object sender, EventArgs e)
{
HtmlDocument hd = classb.Document;
HtmlElement login = hd.GetElementById("log");
HtmlElement pass = hd.GetElementById("pass");
HtmlElement enter = hd.GetElementById("enter");
try
{
login.InnerText = textBox1.Text;
pass.InnerText = textBox2.Text;
enter.InvokeMember("click");
}
catch //(Exception ex)
{
MessageBox.Show("Неправильный логин или пароль"); //MessageBox.Show("Error: " + ex.Message, "", MessageBoxButtons.OK);
}
HtmlElement login_name = hd.GetElementById("login_name");
try
{
label1.Text = "Вы вошли как: " + login_name.OuterText.ToString();
}
catch
{

}
}

private void button2_Click(object sender, EventArgs e)
{
HtmlDocument hd = classb.Document;
HtmlElement exit = hd.GetElementById("exit");
try
{
exit.InvokeMember("click");
}
catch
{
MessageBox.Show("Вы не авторизированы!");
}
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument hd = classb.Document;
HtmlElement login_name = hd.GetElementById("login_name");
try
{
label1.Text = "Вы вошли как: " + login_name.OuterText.ToString();
}
catch
{
label1.Text = "Вы не авторизированы!";
}
if (label1.Text != "Вы не авторизированы!")
{
//например выключаем отображение groupBox'a
//groupBox1.Visible = false;
}
}
}
}

Собствено нашёл исход, но как мне указать где будет происходить авторизация?
________________
offline user

Последний раз редактировалось mr*WOLF; 17.06.2012 в 22:06.
  Ответить с цитированием
Старый 18.06.2012, 15:51   #2
 Разведчик
Аватар для Буянь
 
Буянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражанияБуянь блестящий пример для подражания
Регистрация: 05.03.2011
Сообщений: 20
Популярность: 1883
Сказал(а) спасибо: 13
Поблагодарили 44 раз(а) в 36 сообщениях
Отправить сообщение для Буянь с помощью Skype™
 
По умолчанию Re: Авторизация на сайте

Да простит меня дядя Yukikaze за быдлокод...

Авторизация на примере сайта-игры [Ссылки могут видеть только зарегистрированные пользователи. ].

Первым делом нужно сходить в чарлик (или любой другой сниффер) и посмотреть, что мы передаем при авторизации... Для этого достаточно авторизоватся на сайте через браузер и посмотреть, как оно все выглядит в чарле. В моем случае все выглядит таким образом:
Headrs'ы:
[Ссылки могут видеть только зарегистрированные пользователи. ]
ну и сама форма авторизации:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Необязательно, но по моей привычке, я прописываю Headers'ы, чтобы быть максимально похожими на браузер.
Код:
var request = (HttpWebRequest)HttpWebRequest.Create ("http://www.darkorbit.com/?locale=en&aid=886&aip="); // Создаем сам запрос
request.Method = "Post"; //Здесь мы показываем, что это пост-запрос, что важно, при авторизации
request.Timeout = 150000;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5"; //Информация о браузере
request.Headers.Add ("Cashe-Control", "max-age=0"); 
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Referer = "http://www.darkorbit.com"; //откуда пришли
request.Headers.Add ("Accept-Language", "en-US,en;q=0.8");
request.Headers.Add ("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
request.CookieContainer = this.cc; //Я выделяю переменную cc, чтобы можно было использовать ее в других методах
Затем нужно программно прописать форму авторизации.
Код:
string arg = "loginForm_default_username="+HttpUtility.UrlEncode(login)+"&loginForm_default_password="+HttpUtility.UrlEncode(pass)+"&loginForm_default_login_submit=Login"; //Encode - нет проблем с хренобуквами
byte[] Bytes = Encoding.UTF8.GetBytes(arg);
request.ContentLength = Bytes.Length;
using(var sr = request.GetRequestStream()) 
{
	sr.Write(Bytes, 0, Bytes.Length);	
}
Теперь все это дело нужно соеденить. Я делаю это в методе, возвращающим исходный код страницы(имхо так удобнее).
Код:
string AuthDO (string login, string pass, string serv)
	{
		var request = (HttpWebRequest)HttpWebRequest.Create ("http://www.darkorbit.com/?locale=en&aid=886&aip=");
		request.Timeout = 150000;
		request.UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.165 Safari/535.19";
		request.Headers.Add ("Cashe-Control", "max-age=0");
		request.ContentType = "application/x-www-form-urlencoded";
		request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
		request.Referer = "http://www.darkorbit.com";
		request.Headers.Add ("Accept-Language", "en-US,en;q=0.8");
		request.Headers.Add ("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
		request.Method = "Post";
		request.CookieContainer = this.cc;
		request.AllowAutoRedirect = true;
		string arg = "loginForm_default_username="+HttpUtility.UrlEncode(login)+"&loginForm_default_password="+HttpUtility.UrlEncode(pass)+"&loginForm_default_login_submit=Login"; //Encode - нет проблем с хренобуквами
		byte[] Bytes = Encoding.UTF8.GetBytes(arg);
		request.ContentLength = Bytes.Length;
		using(var sr = request.GetRequestStream()) 
		{
			sr.Write(Bytes, 0, Bytes.Length);	
		}
		using (var sr = new StreamReader(request.GetResponse().GetResponseStream())) 
		{
			this.page = sr.ReadToEnd();	//Тоже самое, что и с куками		
		}
			return page;
	}
Затем метод можно вызвать так:
Код:
Console.WriteLine("Ник: "); string login = Console.ReadLine();
Console.WriteLine("Пароль: "); string password = Console.ReadLine();
Console.WriteLine("Сервер: "); string server = Console.ReadLine();
page = this.AuthDO(login, password, server); //не забываем, что page уже вынесена из методов
Дальше, в DO нужно будет выбрать сервер, но для стандартной авторизации этого вполне достаточно...
Пользуйся
  Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] Авторизация на сайте с помощью Indy. Delphi. VeTaL_UA Pascal/Delphi 13 11.01.2015 20:01
Авторизация на сайте (пример c vBulletin) TakeThat Pascal/Delphi 9 25.05.2013 23:26
[Помогите!] авторизация на сайте Roverpcs6 Вопросы и ответы, обсуждения 3 26.05.2012 12:53
[Помогите!] Авторизация на сайте Andrei543 Вопросы и ответы, обсуждения 0 15.04.2012 15:16

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 19:00.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net