Pythonrequests,如何登录websi

2024-09-30 14:33:36 发布

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

我正在尝试抓取this website,但它需要登录。我正在努力通过使用python中的请求库成功登录。在

在html中查看表单时,没有隐藏的值,在控制台中拦截http请求时,表单的登录post请求包含用户名:“username here”密码:“password here”。在

我还试图调整头,因为我读到一些服务器可能拒绝访问非浏览器头类型。在

这是我的尝试

import requests
from fake_useragent import UserAgent

ua = UserAgent()
headers = {"User-Agent": str(ua.chrome)}

payload = {"username": "username",
           "password": "password"
          }

login = requests.get("https://scsctennis.gametime.net/auth", 
headers=headers)

response = requests.post("https://scsctennis.gametime.net/auth", 
data=payload, cookies=login.cookies, headers=headers)

print(response.text)

以及

^{pr2}$

有一件事我注意到了,在post请求之后,如果我试图查看cookie-print(响应.cookies)没有cookie,但是对于get请求,print(登录.cookies)有一块饼干。在

我跟随并通读了this blog和{a3},并浏览了许多stackoverflow帖子。任何帮助都将不胜感激,谢谢。在

编辑你是对的,它发布到“https://scsctennis.gametime.net/auth/json-index”这里是修改代码与建议。在

import requests

# headers = {'x-requested-with': 'XMLHttpRequest'}
headers = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-
8"}

payload = {"username": "username",
           "password": "password"
          }

s = requests.session()
login = s.get("https://scsctennis.gametime.net/auth/json-index", 
headers=headers)
print(login.text)
response = s.post("https://scsctennis.gametime.net/auth/json-index", 
data=payload, headers=headers)
print(response.text)

各打印声明的回复:

{“code”:505,“msg”:“用户名或密码无法识别。请检查拼写然后再试一次。“}

{“code”:202,“msg”:“用户名或密码无法识别。请检查拼写,然后再试一次。“,“isStaff”:false,“user”:{“name”:“Vuk”}}

我只需访问网址就可以收到505信息,而不是发布到它上面。在

202消息是当我发布到url时,但是用户名/密码是正确的,但是它说它们是错误的。不知道为什么? “isStaff”:false,“user”:{“name”:“Vuk”}响应是正确的,因为这是与尝试登录凭据相关联的我的名称,而且我不是工作人员。在

有什么想法吗?在

上次编辑:成功获取。谢谢你发现我没有贴到正确的网址!结果,上面的202消息是成功的。它将我的名字识别为属于登录凭据,但它们只是选择显示任何消息。 在post请求之后,如果我对我想要的页面使用get请求,我会收到一个很好的响应。谢谢!在

import requests


payload = {"username": "username",
           "password": "password"
           }

s = requests.session()

response = s.post("https://scsctennis.gametime.net/auth/json-index", 
data=payload)
print(response.text)
stuff = s.get("http://scsctennis.gametime.net/scheduling/index/jsoncourtdata/sport/1/date/2017-12-25")` 

print(stuff.text)

Tags: texthttpsauthgetnetresponseusernamepassword
1条回答
网友
1楼 · 发布于 2024-09-30 14:33:36

我看到表单将凭证发布到“https://scsctennis.gametime.net/auth/json-index”并得到响应的json。在

你能发布到这个端点而不是你发布的那个吗?在

向此终结点发布假凭据:

curl "https://scsctennis.gametime.net/auth/json-index" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Cookie: gametime=ba3725642c5b55fe1123dec46e45e3a7"  data "username=test&passwo
rd=test"

返回错误,如{"code":505,"msg":"The username or password was not recognized. Please check the spelling and try again."}

相关问题 更多 >