如果要设置引荐来源标头,则对于该特定站点,您需要将引引来源设置为与登录页面相同的URL:
import sys
import requests
URL = 'https://portal.bitcasa.com/login'
client = requests.session()
# Retrieve the CSRF token first
client.get(URL) # sets cookie
if 'csrftoken' in client.cookies:
# Django 1.6 and up
csrftoken = client.cookies['csrftoken']
else:
# older versions
csrftoken = client.cookies['csrf']
login_data = dict(username=EMAIL, password=PASSWORD, csrfmiddlewaretoken=csrftoken, next='/')
r = client.post(URL, data=login_data, headers=dict(Referer=URL))
当使用不安全时http
,Referer
标头通常会被过滤掉,否则无论如何很容易被欺骗,因此大多数站点不再需要设置标头。但是,在使用SSL连接并设置了SSL连接的情况下,让站点确认它至少引用了可能在逻辑上发起了请求的内容确实有意义。加密连接(使用https://
)后,Django会执行此操作,然后主动要求它。