diff --git a/index.js b/index.js index df51d81..5d84d31 100644 --- a/index.js +++ b/index.js @@ -62,22 +62,27 @@ SteamCommunity.prototype.login = function(details, callback) { var parts = details.steamguard.split('||'); this._setCookie(Request.cookie('steamMachineAuth' + parts[0] + '=' + encodeURIComponent(parts[1])), true); } - + + var disableMobile = details.disableMobile; + var self = this; // Delete the cache delete self._profileURL; // headers required to convince steam that we're logging in from a mobile device so that we can get the oAuth data - var mobileHeaders = { - "X-Requested-With": "com.valvesoftware.android.steam.community", - "Referer": "https://steamcommunity.com/mobilelogin?oauth_client_id=DE45CD61&oauth_scope=read_profile%20write_profile%20read_client%20write_client", - "User-Agent": "Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", - "Accept": "text/javascript, text/html, application/xml, text/xml, */*" - }; + var mobileHeaders = {}; + if(!disableMobile){ + mobileHeaders = { + "X-Requested-With": "com.valvesoftware.android.steam.community", + "Referer": "https://steamcommunity.com/mobilelogin?oauth_client_id=DE45CD61&oauth_scope=read_profile%20write_profile%20read_client%20write_client", + "User-Agent": "Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Google Nexus 4 - 4.1.1 - API 16 - 768x1280 Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", + "Accept": "text/javascript, text/html, application/xml, text/xml, */*" + }; - this._setCookie(Request.cookie("mobileClientVersion=0 (2.1.3)")); - this._setCookie(Request.cookie("mobileClient=android")); + this._setCookie(Request.cookie("mobileClientVersion=0 (2.1.3)")); + this._setCookie(Request.cookie("mobileClient=android")); + } this.httpRequestPost("https://steamcommunity.com/login/getrsakey/", { "form": {"username": details.accountName}, @@ -99,25 +104,30 @@ SteamCommunity.prototype.login = function(details, callback) { var key = new RSA(); key.setPublic(body.publickey_mod, body.publickey_exp); - + + var formObj = { + "captcha_text": details.captcha || "", + "captchagid": self._captchaGid, + "emailauth": details.authCode || "", + "emailsteamid": "", + "password": hex2b64(key.encrypt(details.password)), + "remember_login": "true", + "rsatimestamp": body.timestamp, + "twofactorcode": details.twoFactorCode || "", + "username": details.accountName, + "loginfriendlyname": "#login_emailauth_friendlyname_mobile", + "donotcache": Date.now() + }; + + if(!disableMobile){ + formObj.oauth_client_id = "DE45CD61"; + formObj.oauth_scope = "read_profile write_profile read_client write_client"; + } + self.httpRequestPost({ "uri": "https://steamcommunity.com/login/dologin/", "json": true, - "form": { - "captcha_text": details.captcha || "", - "captchagid": self._captchaGid, - "emailauth": details.authCode || "", - "emailsteamid": "", - "password": hex2b64(key.encrypt(details.password)), - "remember_login": "true", - "rsatimestamp": body.timestamp, - "twofactorcode": details.twoFactorCode || "", - "username": details.accountName, - "oauth_client_id": "DE45CD61", - "oauth_scope": "read_profile write_profile read_client write_client", - "loginfriendlyname": "#login_emailauth_friendlyname_mobile", - "donotcache": Date.now() - }, + "form": formObj, "headers": mobileHeaders }, function(err, response, body) { deleteMobileCookies(); @@ -146,20 +156,32 @@ SteamCommunity.prototype.login = function(details, callback) { callback(error); } else if(!body.success) { callback(new Error(body.message || "Unknown error")); - } else if(!body.oauth) { + } else if(!disableMobile && !body.oauth) { callback(new Error("Malformed response")); } else { - var sessionID = generateSessionID(); - var oAuth = JSON.parse( body.oauth ); + var sessionID = generateSessionID(), oAuth; self._setCookie(Request.cookie('sessionid=' + sessionID)); - - self.steamID = new SteamID(oAuth.steamid); - self.oAuthToken = oAuth.oauth_token; var cookies = self._jar.getCookieString("https://steamcommunity.com").split(';').map(function(cookie) { return cookie.trim(); }); + if(!disableMobile){ + oAuth = JSON.parse( body.oauth ); + self.steamID = new SteamID(oAuth.steamid); + self.oAuthToken = oAuth.oauth_token; + }else{ + for(var i = 0; i < cookies.length; i++) { + var parts = cookies[i].split('='); + if(parts[0] == 'steamLogin') { + self.steamID = new SteamID(decodeURIComponent(parts[1]).split('||')[0]) + break; + } + } + + self.oAuthToken = null; + } + // Find the Steam Guard cookie var steamguard = null; for(var i = 0; i < cookies.length; i++) { @@ -172,7 +194,7 @@ SteamCommunity.prototype.login = function(details, callback) { self.setCookies(cookies); - callback(null, sessionID, cookies, steamguard, oAuth.oauth_token); + callback(null, sessionID, cookies, steamguard, disableMobile ? null : oAuth.oauth_token); } }, "steamcommunity"); }, "steamcommunity");