Skip to content

Commit 662ae90

Browse files
authored
Bypass Cloudflare 403 error using cloudscraper (#1291)
* Bypass Cloudflare 403 error using cloudscraper * add docs
1 parent e40c61a commit 662ae90

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

tools/get_session.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
import json
44
import sys
55
import pyotp
6+
import cloudscraper
67

7-
# NOTE: pyotp and requests are dependencies
8-
# > pip install pyotp requests
8+
# NOTE: pyotp, requests and cloudscraper are dependencies
9+
# > pip install pyotp requests cloudscraper
910

1011
TW_CONSUMER_KEY = '3nVuSoBZnx6U4vzUxf5w'
1112
TW_CONSUMER_SECRET = 'Bcs59EFbbsdF6Sl9Ng71smgStWEGwXXKSjYvPVt7qys'
@@ -41,10 +42,10 @@ def auth(username, password, otp_secret):
4142
"X-Twitter-Client-DeviceID": ""
4243
}
4344

44-
session = requests.Session()
45-
session.headers = twitter_header
45+
scraper = cloudscraper.create_scraper()
46+
scraper.headers = twitter_header
4647

47-
task1 = session.post(
48+
task1 = scraper.post(
4849
'https://api.twitter.com/1.1/onboarding/task.json',
4950
params={
5051
'flow_name': 'login',
@@ -71,9 +72,9 @@ def auth(username, password, otp_secret):
7172
}
7273
)
7374

74-
session.headers['att'] = task1.headers.get('att')
75+
scraper.headers['att'] = task1.headers.get('att')
7576

76-
task2 = session.post(
77+
task2 = scraper.post(
7778
'https://api.twitter.com/1.1/onboarding/task.json',
7879
json={
7980
"flow_token": task1.json().get('flow_token'),
@@ -88,7 +89,7 @@ def auth(username, password, otp_secret):
8889
}
8990
)
9091

91-
task3 = session.post(
92+
task3 = scraper.post(
9293
'https://api.twitter.com/1.1/onboarding/task.json',
9394
json={
9495
"flow_token": task2.json().get('flow_token'),
@@ -109,7 +110,7 @@ def auth(username, password, otp_secret):
109110
response_text = t3_subtask["enter_text"]["hint_text"]
110111
totp = pyotp.TOTP(otp_secret)
111112
generated_code = totp.now()
112-
task4resp = session.post(
113+
task4resp = scraper.post(
113114
"https://api.twitter.com/1.1/onboarding/task.json",
114115
json={
115116
"flow_token": task3.json().get("flow_token"),

0 commit comments

Comments
 (0)