Jump to content
McKay Development

RezzziRA

Member
  • Posts

    1
  • Joined

  • Last visited

Posts posted by RezzziRA

  1. Testing new login system with api (at this time old login system works fine)
    Attached 2 methods from bot class. I think general problem arises on PollAuthSessionStatus.
    I never got access_token prop with i think JWT for https://login.steampowered.com/jwt/finalizelogin
    Maybe someone know what i made wrong
    Some info in code comments

    async sendRequest(url, body = {}, method = 'GET', headers = {}, fetchOptions = {}){
            let createSteamQueryStringBody = (body) => {
                if(Object.keys(body).length == 0)
                    return ``
    
                let newBody = ``
                for(let key in body){
                    if(typeof body[key] == 'object')
                        body[key] = JSON.stringify(body[key])
                        
                    newBody += `${key}=${encodeURIComponent(body[key])}&`
                }
    
                return `?${newBody}`.slice(1, -1)
            }
    
            let requestOptions = {
                headers: {
                    'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
                }
            }
    
            if(this.proxy && this.proxy.includes('http')){
                requestOptions['agent'] = new httpsProxyAgent(this.proxy)
            }
    
            if(method != 'GET')
                requestOptions.body = createSteamQueryStringBody(body)
    
            requestOptions.method = method
            requestOptions.headers = Object.assign(requestOptions.headers, headers)
    
            requestOptions = {...requestOptions, ...fetchOptions}
            
            let response = await fetch(url, requestOptions)
            return response
    }   
    
    async setupSessionNew(){
            try {
                //generating and setup default cookies for session
                let sessionID = generateSessionID()
                let sessionIDCookie = `sessionid=${sessionID}`
                let responseCookies = await this.sendRequest('https://steamcommunity.com/login', {}, 'GET', {cookies: `${sessionIDCookie}`})
                let cookies = this.getSetCookieHeaderCookies(responseCookies.headers.raw()['set-cookie'])
                cookies.push(`timezoneOffset=10800,0`)
                cookies.push(`Steam_Language=english`)
                cookies.push(`ActListPageSize=100`)
    
                //create default headers 
                let headers = {cookie: cookies.join(';'), "referer": "https://steamcommunity.com/"}
    
                //getting rsa
                let responseRSA = await this.sendRequest(`https://api.steampowered.com/IAuthenticationService/GetPasswordRSAPublicKey/v1/?account_name=${this.login}`, {}, 'GET', {cookie: cookies.join(';'), "referer": "https://steamcommunity.com/login"})
                let jsonRSA = await responseRSA.json()
    
                let key = new RSA()
                key.setPublic(jsonRSA.response.publickey_mod, jsonRSA.response.publickey_exp)
    
                //begin auth session
                let json = {
                    device_friendly_name: '',
                    encrypted_password: hex2b64(key.encrypt(this.password)),
                    account_name: this.login,
                    encryption_timestamp: jsonRSA.response.timestamp,
                    platform_type: 'WebBrowser'
                }
    
                let responseAuthBegin = await this.sendRequest(`https://api.steampowered.com/IAuthenticationService/BeginAuthSessionViaCredentials/v1/`, json, 'POST', headers)
                let jsonAuthBegin = await responseAuthBegin.json()
    
                //this is default response for begin
                //jsonAuthBegin { 
                //     response: {
                //          client_id: '1668888137126125xxxx',
                //          request_id: 'xxxxxAVTm7NzQF56pk3q5A==',
                //          interval: 5,
                //          allowed_confirmations: [ { confirmation_type: 3 } ],
                //          steamid: '76561199217xxxxxx'
                //     }
                //}
    
                //updating twofa code 
                json = {
                    client_id: jsonAuthBegin.response.client_id,
                    steamid: this.steamID,
                    code: steamTotp.getAuthCode(this.shared),
                    code_type: 'DeviceCode'
                }
    
                let responseSteamGuard = await this.sendRequest(`https://api.steampowered.com/IAuthenticationService/UpdateAuthSessionWithSteamGuardCode/v1`, json, 'POST', headers)
                let jsonSteamGuard = await responseSteamGuard.json()
    
                //this is default response for update (protobuf response - empty)
                //jsonSteamGuard { response: {} }
    
                //poll auth status by ids
                json = {
                    client_id: jsonAuthBegin.response.client_id,
                    request_id: jsonAuthBegin.response.request_id
                }
    
                setInterval(async () => {
                    let responsePoll = await this.sendRequest(`https://api.steampowered.com/IAuthenticationService/PollAuthSessionStatus/v1/`, json, 'POST', headers)
                    let jsonPoll = await responsePoll.json()
    
                    //jsonPoll { response: { had_remote_interaction: false } }
                    //sometimes got {new_client_id, new_challenge_url} 
                    //never got response with {refresh_token and access_token}
                }, 5000)
            } catch (error) {
                console.log(error)
            }
    }
×
×
  • Create New...