예제 #1
0
        /// <summary>
        /// Attempts to login, sets authCookies to the cookie string needed to perform authenticated tasks if successful.
        /// </summary>
        /// <param name="username">ROBLOX account username</param>
        /// <param name="password">ROBLOX account password</param>
        /// <param name="cookies">CookieContainer storing SetCookie values</param>
        public RobloxLogin(String username, String password, out CookieContainer cookies)
        {
            cookies = new CookieContainer();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://m.roblox.com/login");

            request.CookieContainer = cookies;
            request.KeepAlive       = true;
            request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
            request.Headers.Add("Origin", @"https://m.roblox.com");
            request.UserAgent   = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Referer     = "https://m.roblox.com/Login?ReturnUrl=%2f";
            request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.8");
            request.AllowAutoRedirect = false;

            request.Method = "POST";
            request.ServicePoint.Expect100Continue = false;

            string body = @"UserName="******"&Password="******"&IdentificationCode=";

            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
            request.ContentLength = postBytes.Length;
            Stream stream = request.GetRequestStream();

            stream.Write(postBytes, 0, postBytes.Length);
            stream.Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Tuple <HttpWebResponse, CookieContainer> tuple = RobloxUtils.getGeneralRequestVerificationToken(cookies, RobloxUtils.buildCookieString(cookies, response));

            authCookies = RobloxUtils.buildCookieString(tuple.Item2, tuple.Item1);
        }
예제 #2
0
        public RobloxResponse sendTrade(TradeResponseType type, String tradeJSON, String XRSFToken, String tradeID, String cookies)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.roblox.com/Trade/TradeHandler.ashx");

            request.KeepAlive = true;
            request.Accept    = "application/json, text/javascript, */*; q=0.01";
            request.Headers.Add("Origin", @"http://www.roblox.com");
            request.Headers.Add("X-CSRF-TOKEN", XRSFToken);
            request.Headers.Add("X-Requested-With", @"XMLHttpRequest");
            request.UserAgent   = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36";
            request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            request.Referer     = "http://www.roblox.com/Trade/TradeWindow.aspx?TradePartnerID=85503967";
            request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.8");
            request.Headers.Set(HttpRequestHeader.Pragma, "no-cache");
            request.Headers.Set(HttpRequestHeader.CacheControl, "no-cache");
            request.Headers.Set(HttpRequestHeader.Cookie, cookies);
            request.Method = "POST";
            request.ServicePoint.Expect100Continue = false;
            String body = "";

            if (type == TradeResponseType.Accept)
            {
                body = "TradeID=" + tradeID + "&cmd=maketrade&TradeJSON=" + tradeJSON;
            }
            else if (type == TradeResponseType.Decline)
            {
                body = "TradeID=" + tradeID + "&cmd=decline";
            }
            else if (type == TradeResponseType.Send)
            {
                body = "cmd=send&TradeJSON=" + tradeJSON;
            }
            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
            request.ContentLength = postBytes.Length;
            Stream stream = request.GetRequestStream();

            stream.Write(postBytes, 0, postBytes.Length);
            stream.Close();

            HttpWebResponse response       = (HttpWebResponse)request.GetResponse();
            Stream          responseStream = RobloxUtils.decodeStream(response);

            using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8))
            {
                RobloxResponse robloxResponse = JsonConvert.DeserializeObject <RobloxResponse>(readStream.ReadToEnd());
                robloxResponse.data = (TradeResponseInfo)robloxResponse.data;
                return(robloxResponse);
            }
        }
예제 #3
0
        public RobloxTradeInfoResponse getTradeInfo(String tradeSessionId, String XRSFToken, String cookies)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.roblox.com/Trade/TradeHandler.ashx");

            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0";
            request.Accept    = "application/json, text/javascript, */*; q=0.01";
            request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5");
            request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            request.Headers.Add("X-CSRF-TOKEN", XRSFToken);
            request.Headers.Add("X-Requested-With", @"XMLHttpRequest");
            request.Referer = "http://www.roblox.com/My/Money.aspx";
            request.Headers.Set(HttpRequestHeader.Cookie, cookies);
            request.KeepAlive = true;
            request.Headers.Set(HttpRequestHeader.Pragma, "no-cache");
            request.Headers.Set(HttpRequestHeader.CacheControl, "no-cache");

            request.Method = "POST";
            request.ServicePoint.Expect100Continue = false;

            string body = @"TradeID=" + tradeSessionId + "&cmd=pull";

            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
            request.ContentLength = postBytes.Length;
            Stream stream = request.GetRequestStream();

            stream.Write(postBytes, 0, postBytes.Length);
            stream.Close();

            HttpWebResponse response       = (HttpWebResponse)request.GetResponse();
            Stream          responseStream = RobloxUtils.decodeStream(response);

            using (BufferedStream receiveStream = new BufferedStream(responseStream))
            {
                using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
                {
                    String s = readStream.ReadToEnd().Replace("\\\\", "").Replace("\\\"", "\"").Replace("\"{", "{").Replace("}\"", "}");
                    return(JsonConvert.DeserializeObject <RobloxTradeInfoResponse>(RobloxUtils.unicodeStringToNET(s)));
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Sends a message with the supplied subject and content an ID
        /// </summary>
        /// <param name="receiverId">ID of the receiver</param>
        /// <param name="subject">Message subject</param>
        /// <param name="content">Message body</param>
        /// <param name="cookies">Authentication cookie string</param>
        /// <returns>Returns the success of the message sending</returns>
        public bool sendMessage(int receiverId, String subject, String content, String cookies)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://m.roblox.com/messages/sendmessagework");

            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0";
            request.Accept    = "text/html, */*; q=0.01";
            request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5");
            request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            request.Headers.Add("X-Requested-With", @"XMLHttpRequest");
            request.Referer = "http://m.roblox.com/messages/sendmessage?Id=" + receiverId;
            request.Headers.Set(HttpRequestHeader.Cookie, cookies);
            request.KeepAlive = true;
            request.Headers.Set(HttpRequestHeader.Pragma, "no-cache");
            request.Headers.Set(HttpRequestHeader.CacheControl, "no-cache");

            request.Method = "POST";
            request.ServicePoint.Expect100Continue = false;

            string body = @"__RequestVerificationToken=" + getRequestVerificationToken(receiverId, cookies) + "&RecipientId=" + receiverId + "&Subject=" + subject + "&Body=" + content + "";

            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
            request.ContentLength = postBytes.Length;
            Stream stream = request.GetRequestStream();

            stream.Write(postBytes, 0, postBytes.Length);
            stream.Close();

            HttpWebResponse response       = (HttpWebResponse)request.GetResponse();
            Stream          responseStream = RobloxUtils.decodeStream(response);

            using (BufferedStream receiveStream = new BufferedStream(responseStream))
            {
                using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
                {
                    return(readStream.ReadToEnd().Contains("sent"));
                }
            }
        }
        internal String getToken(long assetID, int expectedPrice, String cookies, CurrencyType currency)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://m.roblox.com/Catalog/VerifyPurchase?assetid=" + assetID + "&type=" + ((currency == CurrencyType.ROBUX) ? "robux" : "tickets") + "&expectedPrice=" + expectedPrice);

            request.KeepAlive = true;
            request.Accept    = "text/html, */*; q=0.01";
            request.Headers.Add("X-Requested-With", @"XMLHttpRequest");
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36";
            request.Referer   = "https://m.roblox.com/items/" + assetID;
            request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, sdch");
            request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.8");
            request.Headers.Set(HttpRequestHeader.Cookie, cookies);
            HttpWebResponse response       = (HttpWebResponse)request.GetResponse();
            Stream          responseStream = RobloxUtils.decodeStream(response);

            using (BufferedStream receiveStream = new BufferedStream(responseStream))
            {
                using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
                {
                    return(RobloxUtils.parseToken(readStream.ReadToEnd()));
                }
            }
        }
예제 #6
0
        /// <summary>
        /// Gets an RVT for sending a message to the supplied receiverID
        /// </summary>
        /// <param name="receiverId">ID of the receiver</param>
        /// <param name="cookies">Authentication cookie string</param>
        /// <returns>Functional RVT</returns>
        public String getRequestVerificationToken(int receiverID, String cookies)
        {
            String response = RobloxUtils.readPage("http://m.roblox.com/messages/sendmessage?Id=" + receiverID, cookies);

            return(RobloxUtils.parseToken(response));
        }
예제 #7
0
        /// <summary>
        /// Fetches 20 messages from the pageNumber specified, requires authentication
        /// </summary>
        /// <param name="pageNumber">Page number to get</param>
        /// <param name="cookies">Authentication cookie string</param>
        /// <returns>MessageCollection object containing all messages on the pageNumber</returns>
        public MessageCollection getNewMessages(String pageNumber, String cookies)
        {
            String page = RobloxUtils.readPage("http://www.roblox.com/messages/api/get-messages?messageTab=0&pageNumber=" + pageNumber + "&pageSize=20", cookies);

            return(JsonConvert.DeserializeObject <MessageCollection>(page));
        }
예제 #8
0
        public TradeList fetchTrades(String cookies, String XRSFToken, TradeType type, int startIndex)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.roblox.com/My/Money.aspx/GetMyItemTrades");

            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0";
            request.Accept    = "*/*";
            request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5");
            request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            request.ContentType = "application/json; charset=utf-8";
            request.Headers.Add("X-CSRF-TOKEN", XRSFToken);
            request.Headers.Add("X-Requested-With", @"XMLHttpRequest");
            request.Referer = "http://www.roblox.com/My/Money.aspx";
            request.Headers.Set(HttpRequestHeader.Cookie, cookies);
            request.KeepAlive = true;
            request.Headers.Set(HttpRequestHeader.Pragma, "no-cache");
            request.Headers.Set(HttpRequestHeader.CacheControl, "no-cache");

            request.Method = "POST";
            request.ServicePoint.Expect100Continue = false;

            String a = "";

            if (type == TradeType.Completed)
            {
                a = "completed";
            }
            else if (type == TradeType.Outbound)
            {
                a = "outbound";
            }
            else if (type == TradeType.Inbound)
            {
                a = "inbound";
            }
            else if (type == TradeType.Inactive)
            {
                a = "inactive";
            }
            string body = "{\"statustype\":\"" + a + "\",\"startindex\":" + startIndex + "}";

            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
            request.ContentLength = postBytes.Length;
            Stream stream = request.GetRequestStream();

            stream.Write(postBytes, 0, postBytes.Length);
            stream.Close();
            HttpWebResponse response;

            response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = RobloxUtils.decodeStream(response);

            using (BufferedStream receiveStream = new BufferedStream(responseStream))
            {
                using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
                {
                    String        s   = readStream.ReadToEnd().Replace("\\\\", "").Replace("\\\"", "\"").Replace("\"{", "{").Replace("}\"", "}");
                    RootTradeList obj = JsonConvert.DeserializeObject <RootTradeList>(s);
                    return(obj.d);
                }
            }
        }