1

我正在使用 python requests 模块登录网页。我csrf_token通过GET在 url 上发出请求,解析它BeautifulSoup以获得csrf_token很好并且工作得很好,但是当我做 aPOST并使用csrf_tokenfrom 时GETcsrf_token已经改变了,我无法使用无效登录csrf_token

我理解csrfGETto 的变化,GET但不应该从GETto变化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

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

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

谢谢

4

0 回答 0