Python请求登录麦当劳

2024-06-30 16:39:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是,当登录到麦当劳登录页面,我收到了200码,这是正常的,但当我打印的文本从html页面上说,“内容修改”,我不知道为什么。我不知道我应该使用什么标题(没有CSRF令牌)我的登录数据包含我的帐户信息,所以我不会发布。你知道吗

我也试过使用会话。你知道吗

headers = {'Content-Encoding': 'gzip', 'Set-Cookie': 'HttpOnly;Secure, MCDCountry_code=US; path=/', 'Content-Type': 'application/json', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36', 'referer': 'https://www.mcdonalds.com/us/en-us/subscription.html', 'origin': 'https://www.mcdonalds.com/us/en-us/'}
data= {
    "signinemail" : "myemail",
    "signinpassword": 'mypass'
    }
e = requests.post("https://www.mcdonalds.com/us/en-us/subscription.html", data=data, headers=headers, allow_redirects=True)

我希望被重定向到主页,但什么也没有。我的问题是我做错了什么?你知道吗


Tags: https文本com标题内容datahtmlwww
1条回答
网友
1楼 · 发布于 2024-06-30 16:39:42

您的问题可能是POST请求中缺少一个cookie。你知道吗

在通过浏览器登录时,使用您喜爱的浏览器查看发送的请求。试着找出饼干里有什么。你知道吗

在Python中,您可以传递一个类似的cookie:

import requests

jar = requests.cookies.RequestsCookieJar()
jar.set('some_var', 'some_value', domain='www.mcdonalds.com', path='/us/en-us')

headers = {'Content-Encoding': 'gzip', 'Set-Cookie': 'HttpOnly;Secure, MCDCountry_code=US; path=/', 'Content-Type': 'application/json', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36', 'referer': 'https://www.mcdonalds.com/us/en-us/subscription.html', 'origin': 'https://www.mcdonalds.com/us/en-us/'}
data= {
    "signinemail" : "myemail",
    "signinpassword": 'mypass'
    }
e = requests.post("https://www.mcdonalds.com/us/en-us/subscription.html", cookies=jar, data=data, headers=headers, allow_redirects=True)

请注意,我还没有测试这个,我不想登录到麦当劳网站,但这是模式。注意,如果您只想传递一个cookie并且只想将它直接应用于请求,那么不必使用jarjar允许您定义多个cookie,或者将它们指向请求站点的特定部分。简单cookie:

my_cookie = {'some_var': 'some_value'}
e = requests.post("https://www.mcdonalds.com/us/en-us/subscription.html", cookies=my_cookie, data=data, headers=headers, allow_redirects=True)

正如@johngordon所建议的,您还可以首先在登录页上执行GET,然后从那里获得所需的cookie,并将它们与登录请求一起传递回去。你知道吗

相关问题 更多 >