我正在使用python请求模块登录网页。我通过在网址上发出csrf_token
请求获取GET
,并使用BeautifulSoup
进行解析,以获得csrf_token
,这很好并且效果很好,但是当我做的时候POST
并使用csrf_token
中的GET
,csrf_token
已更改,我无法使用无效csrf_token
登录。
我了解csrf
从GET
到GET
的更改,但不应从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
我可以使用此方法登录其他网页。
我可以提供哪些其他信息来帮助您?
由于