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):
key = None
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
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):
self.__dict__.update(locals())
@ -107,17 +108,34 @@ class WebAuth(object):
"""
try:
resp = self.session.post('https://steamcommunity.com/login/getrsakey/',
timeout=15,
data={
'username': username,
'donotchache': int(time() * 1000),
},
).json()
timeout=15,
data={
'username': username,
'donotchache': int(time() * 1000),
},
).json()
except requests.exceptions.RequestException as e:
raise HTTPError(str(e))
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):
if not self.key:
resp = self.get_rsa_key(self.username)
@ -131,7 +149,7 @@ class WebAuth(object):
def _send_login(self, captcha='', email_code='', twofactor_code=''):
data = {
'username' : self.username,
'username': self.username,
"password": b64encode(self.key.encrypt(self.password.encode('ascii'), PKCS1v15())),
"emailauth": email_code,
"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=''):
data = {
'username' : self.username,
'username': self.username,
"password": b64encode(self.key.encrypt(self.password.encode('ascii'), PKCS1v15())),
"emailauth": email_code,
"emailsteamid": str(self.steam_id) if email_code else '',
@ -251,17 +269,22 @@ class MobileWebAuth(WebAuth):
class WebAuthException(Exception):
pass
class HTTPError(WebAuthException):
pass
class LoginIncorrect(WebAuthException):
pass
class CaptchaRequired(WebAuthException):
pass
class EmailCodeRequired(WebAuthException):
pass
class TwoFactorCodeRequired(WebAuthException):
pass

Loading…
Cancel
Save