Browse Source

Merge e81772b6b0 into cd39231b9a

pull/60/merge
Konstantin 8 years ago
committed by GitHub
parent
commit
7bd3d01a0a
  1. 43
      steam/webauth.py

43
steam/webauth.py

@ -76,9 +76,10 @@ else:
class WebAuth(object): class WebAuth(object):
key = None key = None
complete = False #: whether authentication has been completed successfully complete = False #: whether authentication has been completed successfully
session = None #: :class:`requests.Session` (with auth cookies after auth is complete) session = None #: :class:`requests.Session` (with auth cookies after auth is complete)
captcha_gid = -1 captcha_gid = -1
steam_id = None #: :class:`.SteamID` (after auth is complete) steam_id = None #: :class:`.SteamID` (after auth is complete)
_session_id = None
def __init__(self, username, password): def __init__(self, username, password):
self.__dict__.update(locals()) self.__dict__.update(locals())
@ -107,17 +108,34 @@ class WebAuth(object):
""" """
try: try:
resp = self.session.post('https://steamcommunity.com/login/getrsakey/', resp = self.session.post('https://steamcommunity.com/login/getrsakey/',
timeout=15, timeout=15,
data={ data={
'username': username, 'username': username,
'donotchache': int(time() * 1000), 'donotchache': int(time() * 1000),
}, },
).json() ).json()
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
raise HTTPError(str(e)) raise HTTPError(str(e))
return resp return resp
@property
def session_id(self):
if self._session_id:
return self._session_id
try:
headers = {
'X-Requested-With': 'com.valvesoftware.android.steam.community'}
self.session.get('https://steamcommunity.com/login',
params={'oauth_client_id': 'DE45CD61',
'oauth_scope': 'read_profile write_profile read_client write_client'
},
headers=headers, timeout=15)
except requests.exceptions.RequestException as e:
raise HTTPError(str(e))
self._session_id = self.session.cookies['sessionid']
return self._session_id
def _load_key(self): def _load_key(self):
if not self.key: if not self.key:
resp = self.get_rsa_key(self.username) resp = self.get_rsa_key(self.username)
@ -131,7 +149,7 @@ class WebAuth(object):
def _send_login(self, captcha='', email_code='', twofactor_code=''): def _send_login(self, captcha='', email_code='', twofactor_code=''):
data = { data = {
'username' : self.username, 'username': self.username,
"password": b64encode(self.key.encrypt(self.password.encode('ascii'), PKCS1v15())), "password": b64encode(self.key.encrypt(self.password.encode('ascii'), PKCS1v15())),
"emailauth": email_code, "emailauth": email_code,
"emailsteamid": str(self.steam_id) if email_code else '', "emailsteamid": str(self.steam_id) if email_code else '',
@ -216,7 +234,7 @@ class MobileWebAuth(WebAuth):
def _send_login(self, captcha='', email_code='', twofactor_code=''): def _send_login(self, captcha='', email_code='', twofactor_code=''):
data = { data = {
'username' : self.username, 'username': self.username,
"password": b64encode(self.key.encrypt(self.password.encode('ascii'), PKCS1v15())), "password": b64encode(self.key.encrypt(self.password.encode('ascii'), PKCS1v15())),
"emailauth": email_code, "emailauth": email_code,
"emailsteamid": str(self.steam_id) if email_code else '', "emailsteamid": str(self.steam_id) if email_code else '',
@ -251,17 +269,22 @@ class MobileWebAuth(WebAuth):
class WebAuthException(Exception): class WebAuthException(Exception):
pass pass
class HTTPError(WebAuthException): class HTTPError(WebAuthException):
pass pass
class LoginIncorrect(WebAuthException): class LoginIncorrect(WebAuthException):
pass pass
class CaptchaRequired(WebAuthException): class CaptchaRequired(WebAuthException):
pass pass
class EmailCodeRequired(WebAuthException): class EmailCodeRequired(WebAuthException):
pass pass
class TwoFactorCodeRequired(WebAuthException): class TwoFactorCodeRequired(WebAuthException):
pass pass

Loading…
Cancel
Save