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

我正在尝试输入我的用户名、密码并登录到网站。我是初学者,也是第一次尝试这个。我不知道我是否必须在此处包含任何其他数据。


我正在尝试的示例网站是:http ://testing-ground.scraping.pro/login 。我正在传递我的凭据并通过打印 page.content 检查成功登录后是否出现欢迎页面的内容。但是它显示访问被拒绝的内容(当您输入错误的凭据时出现)。我不知道我在这里错在哪里。


import requests

with 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)


芜湖不芜
浏览 170回答 2
2回答

慕斯王

我没有对此进行测试,但似乎您在请求中使用了错误的用户名和密码参数名称。快速检查站点发送的请求显示:如您所见,在表单数据中,用户名发送为usr,密码发送为pwd。但是,你在构建登录数据的dict时,使用login_data=dict(username=usr,password=pwd)了 , 构造了一个 , 的dict {"username": usr, "password": pwd},与实际请求的要求不符。你想要的是dict(usr=usr,pwd=pwd).

犯罪嫌疑人X

查看<form>页面源代码中的标记。或者您可以检查网络选项卡以获取每个字段的名称值的发布请求。正确的字段名称是usr和pwd。所以基本上改变这行代码:login_data=dict(username=usr,password=pwd)到login_data=dict(usr=usr,pwd=pwd)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python