使用python请求登录的基础知识

2024-06-25 07:19:21 发布

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

我已经搜索了很多关于如何使用python请求登录的信息,但是每个人都在用另一种方式登录。有人能解释一下如何用这个urlhttp://weborder2.givi.it/home的请求登录吗。你知道吗


Tags: 信息home方式iturlhttpweborder2givi
2条回答

右键单击=>;检查窗体上的元素。这是一个POST表单
所以试试这样的方法(尽管没有测试)

r = requests.post('http://weborder2.givi.it/home', data = {'_58_login':'yourlogin', '_58_password': 'yourpassword'})

首先,我们应该创建一个会话(某种模拟无头浏览器的方式,因为会话对象总是存储cookies、会话id、头,以及与真实用户会话相关的任何内容)

然后应该打开网站(模拟你到达登录页面,因为cookies很重要)

要查看整个过程,请在Chrome中打开一个开发人员控制台,重现整个登录过程,并查看Networking选项卡,查看浏览器发出的请求,查找related To the login,然后您将在那里找到登录站点所需的负载。你知道吗

其中一些应该被解析,因为无法解析(哈希、表单日期和数据,具体取决于网站) 在我们的例子中form date应该用lxml.html文件(您可以在开发人员控制台的Elements页中搜索它,并收集它的'xpath'

下面的代码再现了您在浏览器中所做的整个过程

import requests
import lxml.html

session = requests.Session()

login_page = session.get('http://weborder2.givi.it/home')
form_date = lxml.html.fromstring(login_page.content).xpath('//*[@id="_58_fm"]/input[1]')[0]

data = {'_58_formDate': form_date,
        '_58_saveLastPath': 'false',
        '_58_redirect': '',
        '_58_doActionAfterLogin': 'false',
        '_58_login': your_login_name,
        '_58_password': your_password,
        '_58_rememberMe': 'false'}

session.post('http://weborder2.givi.it/home?p_p_id=58&p_p_lifecycle=1&p_p_state=maximized&p_p_mode=view&_58_struts_action=%2Flogin%2Flogin', data = data)

相关问题 更多 >