mirror of
https://github.com/DoctorMcKay/node-steamcommunity.git
synced 2025-03-23 21:50:10 +08:00
Initial commit
This commit is contained in:
parent
760ca7e19f
commit
903cd854fb
104
index.js
Normal file
104
index.js
Normal file
@ -0,0 +1,104 @@
|
||||
var Request = require('request');
|
||||
var RSA = require('node-bignumber').Key;
|
||||
var hex2b64 = require('node-bignumber').hex2b64;
|
||||
|
||||
module.exports = SteamCommunity;
|
||||
|
||||
function SteamCommunity(username, password, steamID, machineAuth) {
|
||||
this._username = username;
|
||||
this._password = password;
|
||||
this._steamID = steamID;
|
||||
this._sentry = machineAuth;
|
||||
}
|
||||
|
||||
SteamCommunity.prototype.login = function(authCode, callback) {
|
||||
if(typeof authCode === 'function') {
|
||||
callback = authCode;
|
||||
authCode = "";
|
||||
}
|
||||
|
||||
var request;
|
||||
if(this._steamID && this._sentry) {
|
||||
var jar = Request.jar();
|
||||
request = Request.defaults({"jar": jar});
|
||||
jar.setCookieSync(Request.cookie('steamMachineAuth' + this._steamID + '=' + this._sentry), 'https://steamcommunity.com');
|
||||
} else {
|
||||
request = Request;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
request.post("https://steamcommunity.com/login/getrsakey/", {"form": {"username": this._username}}, function(err, response, body) {
|
||||
if(err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
var json;
|
||||
try {
|
||||
json = JSON.parse(body);
|
||||
} catch(e) {
|
||||
callback(e);
|
||||
return;
|
||||
}
|
||||
|
||||
var key = new RSA();
|
||||
key.setPublic(json.publickey_mod, json.publickey_exp);
|
||||
|
||||
var form = {
|
||||
"captcha_text": "",
|
||||
"captchagid": -1,
|
||||
"emailauth": authCode || "",
|
||||
"emailsteamid": "",
|
||||
"loginfriendlyname": "",
|
||||
"password": hex2b64(key.encrypt(self._password)),
|
||||
"remember_login": false,
|
||||
"rsatimestamp": json.timestamp,
|
||||
"twofactorcode": "",
|
||||
"username": self._username
|
||||
};
|
||||
|
||||
request.post("https://steamcommunity.com/login/dologin/", {"form": form}, function(err, response, body) {
|
||||
if(err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
var json;
|
||||
try {
|
||||
json = JSON.parse(body);
|
||||
} catch(e) {
|
||||
callback(e);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!json.success) {
|
||||
callback(json.message);
|
||||
} else {
|
||||
var cookies = [];
|
||||
for(var i = 0; i < response.headers['set-cookie'].length; i++) {
|
||||
var header = response.headers['set-cookie'][i];
|
||||
var pos = header.indexOf(';');
|
||||
if(pos != -1) {
|
||||
header = header.substring(0, pos);
|
||||
}
|
||||
|
||||
cookies.push(header);
|
||||
}
|
||||
|
||||
var sessionID = Math.floor(Math.random() * 1000000000);
|
||||
cookies.push('sessionid=' + sessionID);
|
||||
|
||||
var steamguard = {};
|
||||
if(json.transfer_parameters.steamid && json.transfer_parameters.webcookie) {
|
||||
steamguard.steamID = json.transfer_parameters.steamid;
|
||||
steamguard.machineAuth = json.transfer_parameters.webcookie;
|
||||
|
||||
this._steamID = steamguard.steamID;
|
||||
this._sentry = steamguard.machineAuth;
|
||||
}
|
||||
|
||||
callback(null, sessionID, cookies, steamguard);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
Loading…
Reference in New Issue
Block a user