Skip to content

Commit 0336ce1

Browse files
Add support for fetching a guest token from the API
1 parent 193d4f8 commit 0336ce1

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

snscrape/modules/twitter.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,6 @@ def _check_guest_token_response(self, r):
219219
if r.status_code != 200:
220220
self._set_random_user_agent()
221221
return False, f'non-200 response ({r.status_code})'
222-
if 'document.cookie = decodeURIComponent("gt=' not in r.text and 'gt' not in r.cookies:
223-
self._set_random_user_agent()
224-
return False, 'unable to find guest token'
225222
return True, None
226223

227224
def _ensure_guest_token(self, url = None):
@@ -234,6 +231,14 @@ def _ensure_guest_token(self, url = None):
234231
if 'gt' in r.cookies:
235232
logger.debug('Found guest token in cookies')
236233
self._guestTokenManager.token = r.cookies['gt']
234+
if not self._guestTokenManager.token:
235+
logger.debug('No guest token in response')
236+
logger.info('Retrieving guest token via API')
237+
r = self._post('https://api.twitter.com/1.1/guest/activate.json', data = b'', headers = self._apiHeaders, responseOkCallback = self._check_guest_token_response)
238+
o = r.json()
239+
if not o.get('guest_token'):
240+
raise snscrape.base.ScraperError('Unable to retrieve guest token')
241+
self._guestTokenManager.token = o['guest_token']
237242
assert self._guestTokenManager.token
238243
logger.debug(f'Using guest token {self._guestTokenManager.token}')
239244
self._session.cookies.set('gt', self._guestTokenManager.token, domain = '.twitter.com', path = '/', secure = True, expires = self._guestTokenManager.setTime + 10800)

0 commit comments

Comments
 (0)