【问题标题】:Error while fetching csrftoken获取 csrftoken 时出错
【发布时间】:2018-02-21 07:40:04
【问题描述】:

我在尝试获取 csrftoken 时遇到错误。
我尝试将令牌名称从 csrftoken 更改为 csrf,但仍然出现错误。

import requests
url='myurl'
Username='username'
Password='password'

requests.Session().get(url)

csrftoken= requests.Session().cookies['csrftoken']
logindata=dict(csrfmiddlewaretoken=csrftoken,username=
Username,password=Password)

requests.Session().post(url,data=logindata,headers={'referer' :'homepage'})

page=requests.session().get('2nd url')
print page.content

错误是:-

文件 "C:\Users\dell\AppData\Local\Programs\Python\Python36-32\lib\site-packa es\requests\cookies.py",第 329 行,在 __getitem__return self._find_no_duplicates(name)'

文件 "C:\Users\dell\AppData\Local\Programs\Python\Python36-32\lib\site-packa es\requests\cookies.py",第 400 行,在 _find_no_duplicates raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path)) eyError: "name='csrftoken', domain=None, path=None"'

【问题讨论】:

  • 那么 domain=None, path=None.. 您是否跟进了错误消息并提供了所需的信息?修改您的问题,以便在其中包含请求的响应信息。那么你的问题就已经很完整了,并在万维网中等待帮助回复;-)
  • 感谢您的回复,但实际上我是 python 新手,所以我无法真正检测到我正在搜索网络但无法找到错误的原因。我发现了其他图书馆是mechanicalsoup。将尝试使用它登录,如果我能够登录,将更新。
  • Hint... google 或此处在 SO + 搜索功能 + eyError: "name='csrftoken', domain=None, path=None"' = 可能的解决方案 @ 987654321@。或here.
  • 感谢您的帮助。如果我能得到它,我会看看
  • 实际上我检查了网页 html 代码,没有隐藏元素。你也可以告诉我如何找到 cookie 名称。因为我把 cookie 名称弄错了吗?因此得到错误

标签: python cookies python-requests


【解决方案1】:

此代码规避了requests 版本中带有大写“S”的Session 部分。试试看这是否适合你:

import requests

url = 'url'
client = requests.session()
# Retrieve the CSRF token first
csrf = client.get(url).cookies['csrftoken']

login_data = dict(username=EMAIL, password=PASSWORD, csrfmiddlewaretoken=csrf, next='/')
r = client.post(URL, data=login_data, headers=dict(Referer=url))

# Check if it worked?
print r.status_code

也许它在您的安装中出现错误?

EDIT1:

试试这个:

import requests
from bs4 import BeautifulSoup

client = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0'}
url = 'url'

soup = BeautifulSoup(client.get(url).text, "html.parser")
csrf = soup.find(name="csrf")

【讨论】:

  • 我遇到了同样的错误。据我了解,我认为该错误是因为我没有给出正确的令牌名称而引起的,其他一切都很好
  • 那我别无选择了……所以你必须等待骑兵来帮助你。 GL!
  • 所以现在尝试使用 selenium 的解决方法,因为我搜索它提供了浏览器实例。希望它有效.....顺便说一句谢谢你的努力。
  • 在发帖前曾尝试通过使用soup 找到但没有运气......无论如何,再次感谢你的努力......!
猜你喜欢
  • 1970-01-01
  • 2018-08-25
  • 2021-02-03
  • 2020-11-12
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
相关资源
最近更新 更多