金字塔CSRF令牌从GET更改为POST

时间:2012-11-29 21:28:55

标签: python csrf pyramid

我正在使用python请求模块登录网页。我通过在网址上发出csrf_token请求获取GET,并使用BeautifulSoup进行解析,以获得csrf_token,这很好并且效果很好,但是当我做的时候POST并使用csrf_token中的GETcsrf_token已更改,我无法使用无效csrf_token登录。

我了解csrfGETGET的更改,但不应从GET更改为POST。 如何让csrf_token不改变?我也可以访问源代码,但我没有写它。

当我使用pdb.set_trace()进入代码时,我可以将csrf_token更改为GET的内容,然后继续,然后一切正常。

这是我的请求代码:

import sys
import requests
from bs4 import BeautifulSoup

#~ URL       = 'https://portal.bitcasa.com/login'
URL       = 'http://0.0.0.0:12080/login'
EMAIL     = 'foo@foo.com'
PASSWORD  = 'abc123'
CLIENT_ID = 12345

client = requests.session(config={'verbose': sys.stderr})

# Retrieve the CSRF token first


soup = BeautifulSoup(client.get(URL).content)
csrftoken = soup.find('input', dict(name='csrf_token'))['value']

print csrftoken

# Parameters to pass
data    = dict(email=EMAIL, password=PASSWORD, csrf_token=csrftoken)
headers = dict(referer=URL)
params  = dict(client_id=CLIENT_ID)


r = client.post(URL, data=data, headers=headers, params=params)

print r
print r.text

我可以使用此方法登录其他网页。

我可以提供哪些其他信息来帮助您?

由于

0 个答案:

没有答案