当前位置: 首页 > 面试题库 >

通过python请求传递csrftoken

云项禹
2023-03-14
问题内容

如何通过python模块Requests传递csrftoken?这就是我所拥有的,但是它不起作用,并且我不确定将其传递给哪个参数(数据,标头,身份验证…)

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>

问题答案:

如果要设置引荐来源标头,则对于该特定站点,您需要将引引来源设置为与登录页面相同的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))

当使用不安全时httpReferer标头通常会被过滤掉,否则无论如何很容易被欺骗,因此大多数站点不再需要设置标头。但是,在使用SSL连接并设置了SSL连接的情况下,让站点确认它至少引用了可能在逻辑上发起了请求的内容确实有意义。加密连接(使用https://)后,Django会执行此操作,然后主动要求它。



 类似资料:
  • 问题内容: 我已经按照npm软件包文档中的建议编写了axios POST请求,例如: 它可以工作,但是现在我修改了后端API以接受标头。 内容类型:“ application / json” 授权:“ JWT fefege …” 现在,此请求在Postman上可以正常工作,但是在编写axios调用时,我遵循 此链接 ,无法完全正常工作。 我经常出错。 这是我的修改请求: 任何帮助是极大的赞赏。 问

  • 如果要在多个Servlet或JSP中传递复杂的对象,使用请求属性是最简单的方法。HttpServletRequest接口定义了setAttribute、getAttribute和removeAttribute方法分别用于保存、获得和删除请求域中的对象。并且还可以通过getAttributeNames方法获得所有保存在请求域中的属性名。在下面的例了将演示在两个Servlet之间传递一个MyClass

  • 问题内容: 我有一个请求URI和一个令牌。如果我使用: 等等,我得到200并查看相应的JSON数据。因此,我安装了请求,并且当我尝试访问该资源时,我得到了403,这可能是因为我不知道传递该令牌的正确语法。谁能帮我解决这个问题?这就是我所拥有的: 我已经尝试过: 但是这些都不起作用。 问题答案: 在python中: 相当于 并要求翻译 当您希望请求使用基本身份验证并设计授权标头时,如下所示: 这是b

  • 我想在点击页面底部时从数据库中检索数据。 现在,我所了解的是: URL。py 视图。py公司 index.html 基本上,它在开始时加载5项,而我试图实现的是,当我到达页面底部时,它会再加载1项。因此jQuery在控制台上工作。日志(“测试”)工作,在我的终端上显示 “获取/加载/HTTP/1.1”200 484 这也很好。 我想我搞砸了ajax不知何故。虽然我不确定。 你可能知道我是个笨蛋,但

  • 问题内容: 我想集成python Selenium和Requests模块以在网站上进行身份验证。 我正在使用以下代码: 问题是,即使我传递了从请求会话生成的cookie ,当我尝试访问浏览器时,登录身份验证仍然存在。 如何修改上面的代码以通过身份验证网页? 谁能帮我解决这个问题? 非常感谢您的帮助。 最好的祝福。 问题答案: 我终于发现了问题所在。在向库发出请求之前,我应该先传递浏览器的cooki

  • 我有一个用Java编写的AWS Lambda函数,它由AWS API网关调用触发。 我试图向其中一个endpoint发出请求,并使用JSON作为有效负载。 然后,网关将检测,并通过默认模板传递所有请求参数(包括正文)。有趣的是这一部分 它应该给我一张