mirror of
https://github.com/instaloader/instaloader.git
synced 2026-10-19 07:02:16 -07:00
Compare commits
2
Commits
v4.14
...
2fa-experiments
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4022e7fae7 | ||
|
|
ac28a33b4d |
@@ -253,6 +253,8 @@ class InstaloaderContext:
|
|||||||
'ig_vw': '1920', 'ig_cb': '1', 'csrftoken': '',
|
'ig_vw': '1920', 'ig_cb': '1', 'csrftoken': '',
|
||||||
's_network': '', 'ds_user_id': ''})
|
's_network': '', 'ds_user_id': ''})
|
||||||
session.headers.update(self._default_http_header())
|
session.headers.update(self._default_http_header())
|
||||||
|
# Getting mid cookie value
|
||||||
|
session.get("https://i.instagram.com/api/v1/web/login_page/")
|
||||||
# Override default timeout behavior.
|
# Override default timeout behavior.
|
||||||
# Need to silence mypy bug for this. See: https://github.com/python/mypy/issues/2427
|
# Need to silence mypy bug for this. See: https://github.com/python/mypy/issues/2427
|
||||||
session.request = partial(session.request, timeout=self.request_timeout) # type: ignore
|
session.request = partial(session.request, timeout=self.request_timeout) # type: ignore
|
||||||
@@ -307,7 +309,8 @@ class InstaloaderContext:
|
|||||||
# username is invalid.
|
# username is invalid.
|
||||||
raise InvalidArgumentException('Login error: User {} does not exist.'.format(user))
|
raise InvalidArgumentException('Login error: User {} does not exist.'.format(user))
|
||||||
# '{"authenticated": true, "user": true, "userId": ..., "oneTapPrompt": false, "status": "ok"}'
|
# '{"authenticated": true, "user": true, "userId": ..., "oneTapPrompt": false, "status": "ok"}'
|
||||||
session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
|
if 'csrftoken' in login.cookies:
|
||||||
|
session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
|
||||||
self._session = session
|
self._session = session
|
||||||
self.username = user
|
self.username = user
|
||||||
self.user_id = resp_json['userId']
|
self.user_id = resp_json['userId']
|
||||||
@@ -324,8 +327,15 @@ class InstaloaderContext:
|
|||||||
raise InvalidArgumentException("No two-factor authentication pending.")
|
raise InvalidArgumentException("No two-factor authentication pending.")
|
||||||
(session, user, two_factor_id) = self.two_factor_auth_pending
|
(session, user, two_factor_id) = self.two_factor_auth_pending
|
||||||
|
|
||||||
login = session.post('https://www.instagram.com/accounts/login/ajax/two_factor/',
|
login = session.post('https://www.instagram.com/api/v1/web/accounts/login/ajax/two_factor/',
|
||||||
data={'username': user, 'verificationCode': two_factor_code, 'identifier': two_factor_id},
|
data={
|
||||||
|
'identifier': two_factor_id,
|
||||||
|
'queryParams': '{"next":"/"}',
|
||||||
|
'trust_signal': 'true',
|
||||||
|
'username': user,
|
||||||
|
'verification_method': '1',
|
||||||
|
'verificationCode': two_factor_code,
|
||||||
|
},
|
||||||
allow_redirects=True)
|
allow_redirects=True)
|
||||||
resp_json = login.json()
|
resp_json = login.json()
|
||||||
if resp_json['status'] != 'ok':
|
if resp_json['status'] != 'ok':
|
||||||
@@ -333,7 +343,8 @@ class InstaloaderContext:
|
|||||||
raise BadCredentialsException("2FA error: {}".format(resp_json['message']))
|
raise BadCredentialsException("2FA error: {}".format(resp_json['message']))
|
||||||
else:
|
else:
|
||||||
raise BadCredentialsException("2FA error: \"{}\" status.".format(resp_json['status']))
|
raise BadCredentialsException("2FA error: \"{}\" status.".format(resp_json['status']))
|
||||||
session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
|
if 'csrftoken' in login.cookies:
|
||||||
|
session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
|
||||||
self._session = session
|
self._session = session
|
||||||
self.username = user
|
self.username = user
|
||||||
self.two_factor_auth_pending = None
|
self.two_factor_auth_pending = None
|
||||||
|
|||||||
Reference in New Issue
Block a user