我正在尝试在Spotify登录页面上获取csrf令牌。我以前没有问题,但是现在看来我只能在50%的时间内获得令牌。我尝试了这个简单的代码:
import requests
def Main():
s = requests.session()
s.get("https://accounts.spotify.com/en/login/?_locale=en-US&continue=https:%2F%2Fwww.spotify.com%2Fus%2Faccount%2Foverview%2F")
print(s.cookies)
print(s.cookies.get_dict())
try:
print(s.cookies['csrf_token'])
except KeyError:
Main()
Main()
如果运行程序,您会看到CSRF仅打印了几次,而其他所有时间都没有打印。为什么请求仅有时而不是总是只能获得CRSF cookie /令牌?我以前从未遇到过这个问题。
编辑:我的请求版本为2.21.0
答案 0 :(得分:1)
您间歇性获得csrf_token
的原因是因为您经常访问网站或没有标题就访问它-服务器认为您可能是机器人或攻击者。这些原因将导致服务器响应40倍或50倍。因此,您应该添加标题并将间隔设置为1秒。
import requests
import time
def Main():
time.sleep(1)
with requests.session() as s:
s.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br"
}
resp = s.get("https://accounts.spotify.com/en/login/?_locale=en-US&continue=https:%2F%2Fwww.spotify.com%2Fus%2Faccount%2Foverview%2F")
print(s.cookies['csrf_token'])
[Main() for _ in range(10)]