我正在使用 python requests 模块登录网页。我csrf_token
通过GET
在 url 上发出请求,解析它BeautifulSoup
以获得csrf_token
很好并且工作得很好,但是当我做 aPOST
并使用csrf_token
from 时GET
,csrf_token
已经改变了,我无法使用无效登录csrf_token
。
我理解csrf
从GET
to 的变化,GET
但不应该从GET
to变化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
我可以使用此方法登录其他网页。
我还可以提供哪些其他信息来帮助您帮助我?
谢谢