Python请求,如何登录网站

问题描述 投票:1回答:1

我试图刮this website但它需要登录。我正在努力通过在python中使用请求库成功登录。

通过html中的表单查看,没有隐藏的值,并且在控制台中拦截http请求时,表单的登录发布请求包含用户名:“username here”password:“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)

而且

import requests
from fake_useragent import UserAgent

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

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

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

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

print(response.text)

有一点我注意到,在post请求之后,如果我试图查看cookie - print(response.cookies)没有cookie,但是对于get请求,print(login.cookies)有一个cookie。

我已经关注并阅读了this blogrequests documentation,并经历了许多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邮件是我发布到网址时,但用户名/密码是正确的,但它说错了。不知道为什么? “isStaff”:false,“user”:{“name”:“Vuk”}响应是正确的,因为这是我的名字,与尝试的登录凭据相关联,而且我不是工作人员。

有关如何进行的任何想法?

最后编辑:成功得到它。感谢您抓住我没有发布到正确的网址!事实证明,上面的202消息是成功的。它将我的名称识别为属于登录凭据,但他们只是选择显示任何消息。在帖子请求之后,如果我使用获取请求到我想要的页面,我会收到很好的回复。谢谢!

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)
python html cookies web-scraping python-requests
1个回答
0
投票

我看到表单将凭据发布到“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."}一样返回错误

© www.soinside.com 2019 - 2024. All rights reserved.