Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2018, 12:13   #1
BabaOla
Пользователь
 
Регистрация: 06.04.2018
Сообщений: 11
По умолчанию Авторизация в инстаграм - При нажатии кнопки вылетает исключение 405

Помогите пожалуйста. При нажатии кнопки вылетает исключение 405. В чем может быть проблема?

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using xNet;
using System.Text.RegularExpressions;
using System.IO;
using System.Diagnostics;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }
        HttpRequest http = new HttpRequest();
        string url = "https://www.instagram.com/";

        void HtmlTest(string html)
        {
            File.WriteAllText("a.html", html);
            Process.Start("a.html");
        }

     
        private void button1_Click(object sender, EventArgs e)
        {
            string login = textBox1.Text;
            string passw = textBox2.Text;
            http.Cookies = new CookieDictionary();
            string html = http.Get(url).ToString();

            string token = Regex.Match(html, "{\"csrf_token\":\"(.*?)\"").Groups[1].Value;
            http.AddHeader("X-CSFToken", token);
            http.AddHeader("X-Requested-With", "XMLHttpRequest");
            http.AddHeader("Referer", url);

            html = http.Post("https://www.instagram.com/accounts/login/ajax/", "username="+ login +"&password="+ passw,"application/x-www-form-urlencoded").ToString();
            //if (html.Contains("authenticated\":true"))
            //{
            //MessageBox.Show("Вы авторизованы");
            //}
            //else
            //{
            //MessageBox.Show("Ошибка авторизации");
            //}
            
        }

        private void button2_Click(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            
        }
    }
}
BabaOla вне форума Ответить с цитированием
Старый 13.04.2018, 12:49   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Используй либу, все уже придумали за тебя.
Еще одна.
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 13.04.2018 в 12:53.
Скарам вне форума Ответить с цитированием
Старый 13.04.2018, 12:55   #3
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Только хардкор, только олдскул ))
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 16.04.2018, 05:19   #4
BabaOla
Пользователь
 
Регистрация: 06.04.2018
Сообщений: 11
По умолчанию

Там многое мне не понятно. Оттуда все скопировать и в проект закинуть установив dll?
Там в начале говорится про ID, какой-то секрет и URL. ID ладно, найти еще можно а вот секрет откуда брать и URL. Как быть если логин-пароль только есть?
BabaOla вне форума Ответить с цитированием
Старый 16.04.2018, 09:02   #5
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Не поверите читать доку. а вот и либа https://github.com/InstaSharp/InstaSharp все что нужно сделать и уметь это читать
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 16.04.2018, 09:03   #6
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Цитата:
Сообщение от BabaOla Посмотреть сообщение
Там многое мне не понятно. Оттуда все скопировать и в проект закинуть установив dll?
Ставишь пакет
Пример логина
Код:
var api = new InstaApiBuilder()
                .UseLogger(new SomeLogger())
                .UseHttpClient(new SomeHttpClient())
                .SetUser(new UserCredentials(...You user...))
                .UseHttpClient(httpHandlerWithSomeProxy)
                .Build();
Читай примеры и документацию.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 16.04.2018, 09:28   #7
BabaOla
Пользователь
 
Регистрация: 06.04.2018
Сообщений: 11
По умолчанию

Я возьму это к себе на заметку. Очень полезная штука. Просто это вроде программа для официальных разработок. Если я например хочу сделать что то неофициальное? Есть возможность на моем коде исправить недочеты?)
BabaOla вне форума Ответить с цитированием
Старый 16.04.2018, 09:37   #8
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

InstaSharper нигде не говорит, что это официальное APi. Ограничения:
Цитата:
Terms and conditions
Anyone who uses this wrapper MUST follow Instagram Policy
Provided project MUST NOT be used for marketing purposes
I will not provide support to anyone who wants this API to send massive messages/likes/follows and so on
Use this API at your own risk
Legal
This code is in no way affiliated with, authorized, maintained, sponsored or endorsed by Instagram or any of its affiliates or subsidiaries. This is an independent and unofficial API wrapper.
По идее можно сделать свой форк InstaSharper и добавить то, что нужно в функционале, потом собрать и использовать. НО все это ты будешь делать на свой страх и риск.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 16.04.2018, 11:45   #9
BabaOla
Пользователь
 
Регистрация: 06.04.2018
Сообщений: 11
По умолчанию

Код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using InstaSharper.API;
using InstaSharper.API.Builder;
using InstaSharper.Classes;
using InstaSharper.Examples.Samples;
using InstaSharper.Logger;

namespace InstaSharper.Examples
{
    public class Program
    {
        /// <summary>
        ///     Api instance (one instance per Instagram user)
        /// </summary>
        private static IInstaApi _instaApi;

        private static void Main(string[] args)
        {
            var result = Task.Run(MainAsync).GetAwaiter().GetResult();
            if (result)
                return;
            Console.ReadKey();
        }

        public static async Task<bool> MainAsync()
        {
            try
            {
                Console.WriteLine("Starting demo of InstaSharper project");
                // create user session data and provide login details
                var userSession = new UserSessionData
                {
                    UserName = "username",
                    Password = "password"
                };

                var delay = RequestDelay.FromSeconds(2, 2);
                // create new InstaApi instance using Builder
                _instaApi = InstaApiBuilder.CreateBuilder()
                    .SetUser(userSession)
                    .UseLogger(new DebugLogger(LogLevel.Exceptions)) // use logger for requests and debug messages
                    .SetRequestDelay(delay)
                    .Build();
                //// create account
                //var username = "kajokoleha";
                //var password = "ramtinjokar";
                //var email = "ramtinak@live.com";
                //var firstName = "Ramtin";
                //var accountCreation = await _instaApi.CreateNewAccount(username, password, email, firstName);

                const string stateFile = "state.bin";
                try
                {
                    if (File.Exists(stateFile))
                    {
                        Console.WriteLine("Loading state from file");
                        using (var fs = File.OpenRead(stateFile))
                        {
                            _instaApi.LoadStateDataFromStream(fs);
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                if (!_instaApi.IsUserAuthenticated)
                {
                    // login
                    Console.WriteLine($"Logging in as {userSession.UserName}");
                    delay.Disable();
                    var logInResult = await _instaApi.LoginAsync();
                    delay.Enable();
                    if (!logInResult.Succeeded)
                    {
                        Console.WriteLine($"Unable to login: {logInResult.Info.Message}");
                        return false;
                    }
                }
                var state = _instaApi.GetStateDataAsStream();
                using (var fileStream = File.Create(stateFile))
                {
                    state.Seek(0, SeekOrigin.Begin);
                    state.CopyTo(fileStream);
                }

                Console.WriteLine("Press 1 to start basic demo samples");
                Console.WriteLine("Press 2 to start upload photo demo sample");
                Console.WriteLine("Press 3 to start comment media demo sample");
                Console.WriteLine("Press 4 to start stories demo sample");
                Console.WriteLine("Press 5 to start demo with saving state of API instance");
                Console.WriteLine("Press 6 to start messaging demo sample");
                Console.WriteLine("Press 7 to start location demo sample");
                Console.WriteLine("Press 8 to start collections demo sample");
                Console.WriteLine("Press 9 to start upload video demo sample");

                var samplesMap = new Dictionary<ConsoleKey, IDemoSample>
                {
                    [ConsoleKey.D1] = new Basics(_instaApi),
                    [ConsoleKey.D2] = new UploadPhoto(_instaApi),
                    [ConsoleKey.D3] = new CommentMedia(_instaApi),
                    [ConsoleKey.D4] = new Stories(_instaApi),
                    [ConsoleKey.D5] = new SaveLoadState(_instaApi),
                    [ConsoleKey.D6] = new Messaging(_instaApi),
                    [ConsoleKey.D7] = new LocationSample(_instaApi),
                    [ConsoleKey.D8] = new CollectionSample(_instaApi),
                    [ConsoleKey.D9] = new UploadVideo(_instaApi)


                };
                var key = Console.ReadKey();
                Console.WriteLine(Environment.NewLine);
                if (samplesMap.ContainsKey(key.Key))
                    await samplesMap[key.Key].DoShow();
                Console.WriteLine("Done. Press esc key to exit...");

                key = Console.ReadKey();
                return key.Key == ConsoleKey.Escape;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                // perform that if user needs to logged out
                // var logoutResult = Task.Run(() => _instaApi.LogoutAsync()).GetAwaiter().GetResult();
                // if (logoutResult.Succeeded) Console.WriteLine("Logout succeed");
            }
            return false;
        }
    }
}

Скажите пожалуйста, это код авторизации? Можете пожалуйста оттуда лишнее убрать?
BabaOla вне форума Ответить с цитированием
Старый 17.04.2018, 12:32   #10
BabaOla
Пользователь
 
Регистрация: 06.04.2018
Сообщений: 11
По умолчанию

Что то ничего не выходит(
BabaOla вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему кнопки передвигаются при нажатии? dima.karpov Python 1 23.11.2017 01:59
Обновление картинки при нажатии кнопки. Strangers JavaScript, Ajax 2 15.02.2012 08:12
pascalABC.net. При нажатии на кнопку вылетает ошибка на readln barygan Паскаль, Turbo Pascal, PascalABC.NET 4 15.04.2011 22:00
Прога вылетает при нажатии кнопки.. Дмитрий142 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 15.03.2011 08:36
Ошибка при нажатии кнопки Skynet91 БД в Delphi 1 08.02.2010 19:45