Reimplemented test_login() via graphql query
Fixes # 76.
This commit is contained in:
parent
e97411a502
commit
4628f1cc8d
@ -919,11 +919,10 @@ class Instaloader:
|
|||||||
self.session = session
|
self.session = session
|
||||||
self.username = username
|
self.username = username
|
||||||
|
|
||||||
def test_login(self, session: Optional[requests.Session]) -> Optional[str]:
|
def test_login(self) -> Optional[str]:
|
||||||
"""Returns the Instagram username to which given :class:`requests.Session` object belongs, or None."""
|
"""Returns the Instagram username to which given :class:`requests.Session` object belongs, or None."""
|
||||||
if session:
|
data = self.graphql_query("d6f4427fbe92d846298cf93df0b937d3", {})
|
||||||
data = self.get_json('', params={'__a': 1}, session=session)
|
return data["data"]["user"]["username"] if "username" in data["data"]["user"] else None
|
||||||
return data['graphql']['user']['username'] if 'graphql' in data else None
|
|
||||||
|
|
||||||
def login(self, user: str, passwd: str) -> None:
|
def login(self, user: str, passwd: str) -> None:
|
||||||
"""Log in to instagram with given username and password and internally store session object"""
|
"""Log in to instagram with given username and password and internally store session object"""
|
||||||
@ -940,10 +939,12 @@ class Instaloader:
|
|||||||
data={'password': passwd, 'username': user}, allow_redirects=True)
|
data={'password': passwd, 'username': user}, allow_redirects=True)
|
||||||
session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
|
session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
|
||||||
if login.status_code == 200:
|
if login.status_code == 200:
|
||||||
if user == self.test_login(session):
|
self.session = session
|
||||||
|
if user == self.test_login():
|
||||||
self.username = user
|
self.username = user
|
||||||
self.session = session
|
|
||||||
else:
|
else:
|
||||||
|
self.username = None
|
||||||
|
self.session = None
|
||||||
raise BadCredentialsException('Login error! Check your credentials!')
|
raise BadCredentialsException('Login error! Check your credentials!')
|
||||||
else:
|
else:
|
||||||
raise ConnectionException('Login error! Connection error!')
|
raise ConnectionException('Login error! Connection error!')
|
||||||
@ -1484,7 +1485,7 @@ class Instaloader:
|
|||||||
if sessionfile is not None:
|
if sessionfile is not None:
|
||||||
print(err, file=sys.stderr)
|
print(err, file=sys.stderr)
|
||||||
self._log("Session file does not exist yet - Logging in.")
|
self._log("Session file does not exist yet - Logging in.")
|
||||||
if not self.is_logged_in or username != self.test_login(self.session):
|
if not self.is_logged_in or username != self.test_login():
|
||||||
if password is not None:
|
if password is not None:
|
||||||
self.login(username, password)
|
self.login(username, password)
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user