索引超出范围错误? Roblox 使用 Cookie 自动登录

Posted

技术标签:

【中文标题】索引超出范围错误? Roblox 使用 Cookie 自动登录【英文标题】:Index out of range error? Roblox Auto-login using Cookie(s) 【发布时间】:2019-04-10 05:17:37 【问题描述】:

我是***的新手,你们好吗?

无论如何,对于使用我的 cookie 的 roblox 自动登录程序,我收到关于索引超出范围的错误,错误统计:

在线错误:183:

int End = resp.Headers[item].IndexOf("\n domain=", Start);

完整的错误信息是:

The index is out of range. It can not be negative and must be smaller than the size of the collection.
Parameter name: startIndex'

我的代码:

private string RBLXAutoLogin(string user, string pass)

    try
    
        string json = $"\"password\":\" pass \", \"username\":\" user \"";
        HttpWebRequest loginReq = (HttpWebRequest)WebRequest.Create("https://www.roblox.com/newlogin");
        loginReq.Method = "POST";
        loginReq.ContentType = "application/json; charset=utf-8";
        loginReq.ContentLength = Encoding.UTF8.GetBytes(json).Length;

        using (var sr = new StreamWriter(loginReq.GetRequestStream()))
        
            sr.Write(json);
            sr.Flush();
            sr.Close();
        

        using (HttpWebResponse resp = (HttpWebResponse)loginReq.GetResponse())
        
            foreach (string item in resp.Headers.Keys)
            
                if (item == "Set-Cookie")
                
                    int Start = resp.Headers[item].IndexOf(".ROBLOSECURITY=_", 0);   
                    Console.WriteLine(resp.Headers[item].IndexOf(".ROBLOSECURITY=_", 0));
                    int End = resp.Headers[item].IndexOf("\n domain=", Start);
                    Console.WriteLine(resp.Headers[item].Substring(Start, End - Start).Replace(".ROBLOSECURITY=", ""));
                    return resp.Headers[item].Substring(Start, End - Start).Replace(".ROBLOSECURITY=", "");
                
            
            return null;
        
    
    catch(WebException wex)
    
        return wex.ToString();
    

【问题讨论】:

嗨!您能否发布完整的错误消息,它来自哪一行? 当然,让我编辑! 您的起始值为负数; IndexOf 没有找到搜索到的字符串。 【参考方案1】:

你想要这个吗?

if (item == "Set-Cookie")

    int Start = resp.Headers[item].IndexOf(".ROBLOSECURITY=_", 0);   
    if (Start >= 0)
    
        Console.WriteLine(resp.Headers[item].IndexOf(".ROBLOSECURITY=_", 0));
        int End = resp.Headers[item].IndexOf("\n domain=", Start);
        Console.WriteLine(resp.Headers[item].Substring(Start, End - Start).Replace(".ROBLOSECURITY=", ""));
        return resp.Headers[item].Substring(Start, End - Start).Replace(".ROBLOSECURITY=", "");
    

【讨论】:

以上是关于索引超出范围错误? Roblox 使用 Cookie 自动登录的主要内容,如果未能解决你的问题,请参考以下文章

findspark.init() 列表索引超出范围错误

使用 TensorFlow 的“IndexError:列表索引超出范围”错误

Swift TableView ImageView + Label = 致命错误:索引超出范围

使用 onDelete 时索引超出范围

为啥使用 BeautifulSoup find_all 方法会导致错误(列表索引超出范围)?

线程 1:致命错误:索引超出范围