为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用python中的post请求登录网站

无法使用python中的post请求登录网站

芜湖不芜 2023-02-07 10:50:43
我正在尝试输入我的用户名、密码并登录到网站。我是初学者,也是第一次尝试这个。我不知道我是否必须在此处包含任何其他数据。我正在尝试的示例网站是:http ://testing-ground.scraping.pro/login 。我正在传递我的凭据并通过打印 page.content 检查成功登录后是否出现欢迎页面的内容。但是它显示访问被拒绝的内容(当您输入错误的凭据时出现)。我不知道我在这里错在哪里。import requestswith HTMLSession() as c:    url='http://testing-ground.scraping.pro/login?mode=login'    usr='admin'    pwd='12345'    c.get(url)    login_data=dict(username=usr,password=pwd)    c.post(url,data=login_data)    page=c.get('http://testing-ground.scraping.pro/login?mode=welcome')    print(page.content)
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

我没有对此进行测试,但似乎您在请求中使用了错误的用户名和密码参数名称。快速检查站点发送的请求显示:

//img1.sycdn.imooc.com//63e1bc9c00011d1e02270160.jpg

如您所见,在表单数据中,用户名发送为usr,密码发送为pwd。但是,你在构建登录数据的dict时,使用login_data=dict(username=usr,password=pwd)了 , 构造了一个 , 的dict {"username": usr, "password": pwd},与实际请求的要求不符。你想要的是dict(usr=usr,pwd=pwd).



查看完整回答
反对 回复 2023-02-07
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

查看<form>页面源代码中的标记。或者您可以检查网络选项卡以获取每个字段的名称值的发布请求。正确的字段名称是usrpwd

//img1.sycdn.imooc.com//63e1bcae00019f6c13680332.jpg

所以基本上改变这行代码:

login_data=dict(username=usr,password=pwd)

login_data=dict(usr=usr,pwd=pwd)


查看完整回答
反对 回复 2023-02-07
  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信