Compare commits

...
2 Commits
Author SHA1 Message Date
Alexander Graf 2e7835850a Version 4.2 2018-12-23 17:07:03 +01:00
Alexander Graf 89b56bdfa8 Login: Handle suspicious login and JSON error
Motivated by #92.
2018-12-21 22:39:07 +01:00
2 changed files with 9 additions and 2 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
"""Download pictures (or videos) along with their captions and other metadata from Instagram."""
__version__ = '4.2rc2'
__version__ = '4.2'
try:
+8 -1
View File
@@ -198,7 +198,10 @@ class InstaloaderContext:
self._sleep()
login = session.post('https://www.instagram.com/accounts/login/ajax/',
data={'password': passwd, 'username': user}, allow_redirects=True)
resp_json = login.json()
try:
resp_json = login.json()
except json.decoder.JSONDecodeError:
raise ConnectionException("Login error: JSON decode fail, {} - {}.".format(login.status_code, login.reason))
if resp_json.get('two_factor_required'):
two_factor_session = copy_session(session)
two_factor_session.headers.update({'X-CSRFToken': csrf_token})
@@ -207,6 +210,10 @@ class InstaloaderContext:
user,
resp_json['two_factor_info']['two_factor_identifier'])
raise TwoFactorAuthRequiredException("Login error: two-factor authentication required.")
if resp_json.get('checkpoint_url'):
raise ConnectionException("Login: Checkpoint required. Point your browser to "
"https://www.instagram.com{}, "
"follow the instructions, then retry.".format(resp_json.get('checkpoint_url')))
if resp_json['status'] != 'ok':
if 'message' in resp_json:
raise ConnectionException("Login error: \"{}\" status, message \"{}\".".format(resp_json['status'],