Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-requests:website-won';无法接受登录请求_Python_Http_Python Requests - Fatal编程技术网

Python-requests:website-won';无法接受登录请求

Python-requests:website-won';无法接受登录请求,python,http,python-requests,Python,Http,Python Requests,我正在使用python请求登录网站,但它不会接受我的请求 我在网站的源代码中寻找了隐藏的输入,但没有找到任何输入,我听说这可能与添加标题有关,但我不知道如何找到标题或如何将它们添加到我的代码中 session = requests.session() login_data = { 'csrfmiddlewaretoken': 'S75hu6eF1FV6axGK8ffV5JC7mYw8Z3AbviU453U0rOQPYPu7iiBCVxRnV2XywfVh', 'usernam

我正在使用python请求登录网站,但它不会接受我的请求

我在网站的源代码中寻找了隐藏的输入,但没有找到任何输入,我听说这可能与添加标题有关,但我不知道如何找到标题或如何将它们添加到我的代码中


session = requests.session()

login_data = {
    'csrfmiddlewaretoken': 'S75hu6eF1FV6axGK8ffV5JC7mYw8Z3AbviU453U0rOQPYPu7iiBCVxRnV2XywfVh',
    'username': '<my_username>',
    'password': '<my_password>',
    'next': '/course/2021573/french-1-145/garden/speed_review/?source_element=ms_mode&source_screen=eos_ms'
}

session.get(url)

r = session.post('https://www.memrise.com/course/2021573/french-1-145/garden/speed_review/?source_element=ms_mode&source_screen=eos_ms/login.py', login_data)

if r.status_code == 200:
    res = session.get(url)
    print('YES!!!')
else:
    print('NOOOOOOOOOOOOOOOO')

会话=请求。会话()
登录\u数据={
“csrfmiddlewaretoken”:“S75hu6eF1FV6axGK8ffV5JC7mYw8Z3AbviU453U0rOQPYPu7iiBCVxRnV2XywfVh”,
“用户名”:“,
“密码”:“,
“下一步”:“/course/2021573/french-1-145/garden/speed\u review/?source\u element=ms\u mode&source\u screen=eos\u ms”
}
session.get(url)
r=会话。post('https://www.memrise.com/course/2021573/french-1-145/garden/speed_review/?source_element=ms_mode&source_screen=eos_ms/login.py,登录名(U数据)
如果r.status_code==200:
res=session.get(url)
打印(‘是!!!’)
其他:
打印('nooooooooooooooo')

我希望状态代码是200,但事实并非如此——当它不接受请求时,我不知道状态代码是什么。如果您能帮助解决此问题,我们将不胜感激。

www.memrise.com在其登录中有CSRF令牌方法,因此您必须使用BeautifulSoup从登录页面找到CSRF令牌并使用标题

import bs4
import requests

url = 'https://www.memrise.com/login/'
session = requests.session()

response = session.get(url)
soup = bs4.BeautifulSoup(response.text, 'lxml')
csrf_token = soup.find('input', {'name': 'csrfmiddlewaretoken'}).get('value')

headers = {
    'Host': 'www.memrise.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Accept-Encoding': 'gzip, deflate, br',
    'Referer': 'https://www.memrise.com/login/',
    'Content-Type': 'application/x-www-form-urlencoded',
}

login_data = {
    'csrfmiddlewaretoken': csrf_token,
    'username': '<my_username>',
    'password': '<my_password>',
    'next': '/course/2021573/french-1-145/garden/speed_review/?source_element=ms_mode&source_screen=eos_ms'
}

r = session.post(url, login_data, headers=headers)

if r.status_code == 200:
    res = session.get(url)
    print('YES!!!')
else:
    print('NO')
导入bs4
导入请求
url='1〕https://www.memrise.com/login/'
会话=请求。会话()
response=session.get(url)
soup=bs4.BeautifulSoup(response.text,“lxml”)
csrf_token=soup.find('input',{'name':'csrfmiddlewaretoken'}).get('value'))
标题={
“主持人”:“www.memrise.com”,
“用户代理”:“Mozilla/5.0(Windows NT 6.2;WOW64)AppleWebKit/537.31(KHTML,如Gecko)Chrome/26.0.1410.64 Safari/537.31”,
“接受”:“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”,
‘接受语言’:‘en-US,en;q=0.5’,
“接受编码”:“gzip,deflate,br”,
“Referer”:https://www.memrise.com/login/',
“内容类型”:“应用程序/x-www-form-urlencoded”,
}
登录\u数据={
“csrfmiddlewaretoken”:csrf_令牌,
“用户名”:“,
“密码”:“,
“下一步”:“/course/2021573/french-1-145/garden/speed\u review/?source\u element=ms\u mode&source\u screen=eos\u ms”
}
r=session.post(url、登录数据、标题=标题)
如果r.status_code==200:
res=session.get(url)
打印(‘是!!!’)
其他:
打印('否')

它给出了什么状态码?这是403禁止的错误-我已经检查了代码中没有url错误尝试通过邮递员登录并检查此url需要哪些标题。尝试
robobrowser
你抢先一步:)我想问OP“你知道CSRF令牌是如何工作的吗?”不,抱歉-当我尝试上面的代码时,仍然会出现403错误代码。@jack,我在请求时错过了标题。现在它正在工作。