[twitter] implement 'csrf' option (#2676)
This commit is contained in:
@@ -2271,6 +2271,19 @@ Description
|
|||||||
<https://help.twitter.com/en/using-twitter/twitter-conversations>`__.
|
<https://help.twitter.com/en/using-twitter/twitter-conversations>`__.
|
||||||
|
|
||||||
|
|
||||||
|
extractor.twitter.csrf
|
||||||
|
----------------------
|
||||||
|
Type
|
||||||
|
``string``
|
||||||
|
Default
|
||||||
|
``"cookies"``
|
||||||
|
Description
|
||||||
|
Controls how to handle Cross Site Request Forgery (CSRF) tokens.
|
||||||
|
|
||||||
|
* ``"auto"``: Always auto-generate a token.
|
||||||
|
* ``"cookies"``: Use token given by the ``ct0`` cookie if present.
|
||||||
|
|
||||||
|
|
||||||
extractor.twitter.size
|
extractor.twitter.size
|
||||||
----------------------
|
----------------------
|
||||||
Type
|
Type
|
||||||
|
|||||||
@@ -873,8 +873,11 @@ class TwitterAPI():
|
|||||||
cookies = extractor.session.cookies
|
cookies = extractor.session.cookies
|
||||||
cookiedomain = extractor.cookiedomain
|
cookiedomain = extractor.cookiedomain
|
||||||
|
|
||||||
# CSRF
|
csrf = extractor.config("csrf")
|
||||||
csrf_token = cookies.get("ct0", domain=cookiedomain)
|
if csrf is None or csrf == "cookies":
|
||||||
|
csrf_token = cookies.get("ct0", domain=cookiedomain)
|
||||||
|
else:
|
||||||
|
csrf_token = None
|
||||||
if not csrf_token:
|
if not csrf_token:
|
||||||
csrf_token = util.generate_token()
|
csrf_token = util.generate_token()
|
||||||
cookies.set("ct0", csrf_token, domain=cookiedomain)
|
cookies.set("ct0", csrf_token, domain=cookiedomain)
|
||||||
|
|||||||
Reference in New Issue
Block a user