Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
vuasya
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
1

Авторизация на "чужом" сайте через стим

04.06.2016, 22:07. Просмотров 383. Ответов 1
Метки нет (Все метки)

Нужно авторизоваться на сайте при помощи аккаунта стим, проблема в том, что после отправки нужных данных редиректит не на сайт , а на главную страницу стим, вот код :
C#
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
        public void Post() {
 
 
                        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://steamcommunity.com/openid/login");
           
            webRequest.Referer = "https://steamcommunity.com/openid/login?openid.ns=http://specs.openid.net/auth/2.0&openid.mode=checkid_setup&openid.return_to=https://www.csgozone.net/openid%3Fhash%3Dcheck&openid.realm=https://www.csgozone.net&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&openid.identity=http://specs.openid.net/auth/2.0/identifier_select";
            webRequest.Headers["Accept-Encoding"] = "gzip, deflate, br";
            webRequest.Headers["Accept-Language"] = "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4";
            webRequest.Headers["Accept-Charset"] = "iso-8859-1,*,utf-8";
            webRequest.Headers["Upgrade-Insecure-Requests"] = "1";
            webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36";
            webRequest.CookieContainer = this.cookiesContainer;
           // webRequest.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
 
            using (MultiPartForm multiPart = new MultiPartForm(webRequest))
            {
                //    multiPart.AddData("method", "post");
                multiPart.AddData("action", "steam_openid_login");
                multiPart.AddData("openid.mode", "checkid_setup");
                multiPart.AddData("openidparams", richTextBox2.Text); 
                multiPart.AddData("nonce", this.sessionID);
 
            }
 
            HttpWebResponse webResponse = null;
            webResponse = (HttpWebResponse)webRequest.GetResponse();
        }
Код класса MultiPartForm :
C#
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Security.Cryptography;
 
namespace WebTools
{
    class MultiPartForm : IDisposable
    {
        private Stream _stream;        
        private string _boundary;
        private string _templateData = "--{0}\r\nContent-Disposition: form-data; name="{1}"\r\n\r\n{2}\r\n";
        private string _templateFile = "--{0}\r\nContent-Disposition: form-data; name="{1}"; filename="{2}"\r\nContent-Type: {3}\r\n\r\n";
        private string _templateEnd = "--{0}--\r\n\r\n";
 
        public MultiPartForm(WebRequest Request)
        {
            _boundary = String.Format("--{0}", GetMD5());
            Request.Method = "POST"; //multipart/form-data; boundary=----WebKitFormBoundaryXJOBZB5tPBFDMbL9 - так выглядит content type, который отсылает стим
            Request.ContentType = String.Format("multipart/form-data; boundary=----WebKitFormBoundary{0}", _boundary);
            
            _stream = Request.GetRequestStream();
        }
 
        public void AddData(string Name, string Value)
        {
            byte[] contentData = Encoding.UTF8.GetBytes(String.Format(_templateData, _boundary, Name, Value));
            _stream.Write(contentData, 0, contentData.Length);
        }
 
        public void AddFile(string Name, string FilePath)
        {
            AddFile(Name, FilePath, "application/octet-stream");
        }
 
        public void AddFile(string Name, string FilePath, string FileType)
        {
            using (FileStream fileStream = new FileStream(FilePath, FileMode.Open))
            {
                AddFile(Name, FilePath, fileStream, FileType);
            }
        }
 
        public void AddFile(string Name, string FilePath, Stream FileStream)
        {
            AddFile(Name, FilePath, FileStream, "application/octet-stream");
        }
 
        public void AddFile(string Name, string FilePath, Stream FileStream, string FileType)
        {
            FileStream.Seek(0, SeekOrigin.Begin);
            byte[] contentFile = Encoding.UTF8.GetBytes(String.Format(_templateFile, _boundary, Name, FilePath, FileType));
            _stream.Write(contentFile, 0, contentFile.Length);
            FileStream.CopyTo(_stream);
            byte[] _lineFeed = Encoding.UTF8.GetBytes("\r\n");
            _stream.Write(_lineFeed, 0, _lineFeed.Length);
        }
 
        public void Dispose()
        {
            Close();
            GC.SuppressFinalize(this);
        }
 
        public void Close()
        {
            byte[] contentEnd = Encoding.UTF8.GetBytes(String.Format(_templateEnd, _boundary));
            _stream.Write(contentEnd, 0, contentEnd.Length);
        }
 
        private string GetMD5()
        {
            Random randNum = new Random();
            MD5CryptoServiceProvider md5hash = new MD5CryptoServiceProvider();
            byte[] randByte = Encoding.UTF8.GetBytes(randNum.NextDouble().ToString());
            byte[] computeHash = md5hash.ComputeHash(randByte);
            string resultHash = String.Empty;
            foreach (byte currentByte in computeHash)
            {
                resultHash += currentByte.ToString("x2");
            }
            return resultHash;
        }
    }
}
на самом стиме я авторизован... можете подсказать ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2016, 22:07
Ответы с готовыми решениями:

Как через Stream "разобрать" файл в одном месте и "собрать" в другом?
Пожалуйста, покажите как стримить файлы, например, у меня есть большой файл....

Описать класс "поезд", содержащий поля "пункт назначения", "номер поезда", "время отправления"
Помогите пожалуйста с классом Описать класс «поезд», содержащий следующие...

Методом вычислить тип треугольника: "не существует", "тупоугольный", "прямоугольный", "остроугольный"
Помогите пожалуйста С помощью метода вычислить тип треугольника::cry: 1) если...

Построить иерархию классов "Студент", "преподаватель", "персона", "заведующий кафедрой"
Построить иерархию классов: Студент, преподаватель, персона, заведующий...

Проблема при сравнении: "Оператор ">" не может применяться к операндам типа "Т" и "Т""
Добрый день , пишу сортировку , все делаю на основе Т , но вот в чем проблемма...

1
speed5.Mexanik
6 / 6 / 2
Регистрация: 06.06.2012
Сообщений: 79
08.06.2016, 17:03 2
Хороший вопрос. Но я вообще пытаюсь разобраться с OpenId для стима. Результаты пока плачевны((
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2016, 17:03

Напишите программу, которая подсчитывает, сколько учащихся получило "2", "3", "4" и "5"
Помогите, пожалуйста, с решением следующей задачи: учащиеся сдают экзамены по...

Составить программу по управлению манипулятором "мышь". Выбор типа курсора организовать по нажатию на клавиши "q","w","r
Составить программу по управлению манипулятором "мышь". Выбор типа курсора...

Поиск в массиве. Ошибка "Оператор "&&" не может применяться к операндам типа "bool" и "double""
Найти номер последнего минимального элемента среди положительных четных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru