Как вы передаете csrftoken с запросами модуля python? Это то, что у меня есть, но оно не работает, и я не уверен, в какой параметр его передать (данные, заголовки, авторизация...)
import requests
from bs4 import BeautifulSoup
URL = 'https://portal.bitcasa.com/login'
client = requests.session(config={'verbose': sys.stderr})
# Retrieve the CSRF token first
soup = BeautifulSoup(client.get('https://portal.bitcasa.com/login').content)
csrftoken = soup.find('input', dict(name='csrfmiddlewaretoken'))['value']
login_data = dict(username=EMAIL, password=PASSWORD, csrfmiddlewaretoken=csrftoken)
r = client.post(URL, data=login_data, headers={"Referer": "foo"})
Каждый раз одно и то же сообщение об ошибке.
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
r.text
? Все ещеCSRF verification failed
? Я вижу, что в форме также есть полеnext
(по умолчанию/
), может быть, его нужно добавить? Дважды проверьте, что опубликовано, когда вы делаете это вручную. - person Martijn Pieters   schedule 26.11.2012CSRF verification failed. Request aborted.
- person Jeff   schedule 26.11.2012username
,password
,csrfmiddlewaretoken
иnext
? Или есть другие поля дополнительно? Что произойдет, если вы добавитеnext='/'
в свой словарьlogin_data
? - person Martijn Pieters   schedule 26.11.2012next='/'
дает ту же ошибку. - person Jeff   schedule 26.11.2012URL
? - person Martijn Pieters   schedule 26.11.2012client.get
, но не анализируйте, просто используйте вместо этогоvalue = client.cookies['csrftoken']
. Иначе без понятия. - person Martijn Pieters   schedule 26.11.2012