Python请求,如何登录网站

标签 python html cookies web-scraping python-requests

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

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

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

这是我的尝试

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)

我注意到一件事,在发布请求之后,如果我尝试查看 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 "}}

我只是通过访问 url 收到 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)

最佳答案

我看到表单将凭据发布到“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 try."

关于Python请求,如何登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47966110/

相关文章:

python - 如何通过python中的套接字将字符串发送到java服务器?

html - 具有空间填充元素的组合 HTML 布局

javascript - 使用 CSS/Javascript 样式化图像映射

cookies - meteor 与 i18next cookies

python - 正则表达式-Python : Capture three (3) words after a specific word

python - 如何导入标准库模块而不是本地目录?

Python高效反向列表JSON序列化

html - 从 Bootstrap .nav-tabs 中删除一些边框

asp.net - 请求静态内容时避免使用 cookie

jquery - jQuery 是否在帖子中发送 cookie?