C# 以编程方式使用WebRequest登录Instagram 问题

C# 以编程方式使用WebRequest登录Instagram 问题,c#,http,authentication,https,request,C#,Http,Authentication,Https,Request,我想将登录请求发送到Instagram服务器,以用户身份登录,但不知道如何登录 源代码 这将不起作用,因为各种原因: Instagram使用Crsf代币,您在发出post请求时不会发送该代币。在您也不使用的其他标题中 第二个原因也是最重要的一个原因,即发送到instagram的POST请求中的参数是4(用户名、密码、查询参数、OptintOneTap)。虽然您可以使用用户名、查询参数和optionOneTap。你不能(你可以,但确实很难做到),将你的密码转换为他们正在制作的enc_密码。实现

我想将登录请求发送到Instagram服务器,以用户身份登录,但不知道如何登录


源代码
这将不起作用,因为各种原因:

  • Instagram使用Crsf代币,您在发出post请求时不会发送该代币。在您也不使用的其他标题中

  • 第二个原因也是最重要的一个原因,即发送到instagram的POST请求中的参数是4(用户名、密码、查询参数、OptintOneTap)。虽然您可以使用用户名、查询参数和optionOneTap。你不能(你可以,但确实很难做到),将你的密码转换为他们正在制作的enc_密码。实现这一点的唯一方法是使用开发工具分析instagram代码

  • 您最好模拟支持javascript的web浏览器,并尝试触发onClick事件,您可以使用该事件打开浏览器会话并模拟用户执行登录操作的行为。要获取用户会话并为编程操作维护它,您可能需要获取诸如cookie、csrfToken或JWT令牌之类的东西,不管instagram使用什么

    在以编程方式执行请求时,您可能希望提供普通浏览器提供的大多数标头,否则instagram服务器将不接受请求,并可能会将其关闭。包括(但不限于)
    User-Agent
    Referer
    x-csrftoken

    但是,如果您希望采用API路线,您可能希望按照中的建议实现Facebook登录

    using System;
    
    namespace WebRequests
    {
        public class Program
        {
            static void Main(string[] args)
            {
                System.Net.CookieContainer myCookies = new System.Net.CookieContainer();
                Console.Write("Enter the username: ");
                string username = Console.ReadLine();
                Console.Write("Enter the password: ");
                string password = Console.ReadLine();
    
                string postData = "username=" + username + "&password=" + password + "&security_level=0&form=submit";
    
                bool result = HttpMethods.Post("https://instagram.com/", postData, "https://instagram.com", myCookies);
                if (result)
                    Console.WriteLine("Valid!");
                else
                    Console.WriteLine("Invalid!");
    
            }
        }
    }