如何使用Python和Requests登录网站帐户

2024-04-20 04:59:50 发布

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

我尝试用Python3和Requests模块登录2个网站帐户。

第一个网站是:https://www.amundi-ee.com/psf/#login,我需要在这个页面上抓取信息:https://www.amundi-ee.com/psf/#avoirs
第二个网站是:https://zone.mfgl.com/pensions/burohappold/index.asp(在登录后,有一个重定向到https://zone.mfgl.com/pensions/burohappold/login2.asp的另一个额外的随机安全问题,在4/5选择,如出生地,或第一个宠物名)和之后,我需要抓取这个页面上的信息:https://zone.mfgl.com/pensions/burohappold/statement-page.asp

其思想是检索个人帐户信息,以便在另一个脚本中进行处理。 我知道如何使用请求(在一个基本的层面上),但我正在为这两个特定的网站而挣扎(我相信是因为第一个网站的密码必须通过点击输入,第二个网站的重定向)。在

import requests
import logging

logging.basicConfig(level=logging.DEBUG)

URL1 = 'https://www.amundi-ee.com/psf/#login'
URL2 = 'https://www.amundi-ee.com/psf/#'
URL3 = 'https://zone.mfgl.com/pensions/burohappold/index.asp'
URL4 = 'https://zone.mfgl.com/pensions/burohappold/login2.asp'
URL5 = 'https://zone.mfgl.com/pensions/burohappold/statement-page.asp'

payload1 = {
    'username' : '000000',
    'password' : '000000'
}
payload2 = {
    'username' : '000000',
    'password' : '000000'
}
sub_payload1 = {
    'password' : 'aaaaaa'
}
sub_payload2 = {
    'password' : 'bbbbbb'
}
sub_payload3 = {
    'password' : 'cccccc'
}

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}


with requests.Session() as c:
    c.post(URL1, headers=headers, data=payload1)
    r = c.get(URL2, headers=headers)
    print(r.text)

with requests.Session() as d:
    d.post(URL3, headers=headers, data=payload2)
    #How to manage the redirection here to URL4?
    #How to test which extra security question is supplied and submit corresponding sub_payload?
    s = d.get(URL5, headers=headers)
    print(s.text)

对于第二个网站,我真的不知道如何处理重定向和问题测试。。。在

有效负载'username'/'password'必须与这些网站表单中的特定名称匹配吗?在

谢谢你的帮助和指导(我是初学者)。在


Tags: httpscom信息zone网站wwwpasswordee
1条回答
网友
1楼 · 发布于 2024-04-20 04:59:50

所以我设法使它为第二个网站,下面的代码,如果有人感兴趣。有一个隐藏的表单域。 我将为第一网站打开一个新主题。在

import requests, time
from lxml import html

LOGIN = 'https://zone.mfgl.com/pensions/burohappold/index.asp'
LOGIN2 = 'https://zone.mfgl.com/pensions/burohappold/login2.asp'
PROTECTED_PAGE = 'https://zone.mfgl.com/pensions/burohappold/statement-page.asp'
payload = {
    'username': 'username',
    'password': 'password',
    'action': 'login'
}
s_payload1 = {
    'answer': 'answer',
    'correctanswer': 'answer',
    'action': 'submit'
}
s_payload2 = {
    'answer': 'answer',
    'correctanswer': 'answer',
    'action': 'submit'
}
s_payload3 = {
    'answer': 'answer',
    'correctanswer': 'answer',
    'action': 'submit'
}

with requests.session() as s:
    s.post(LOGIN, data=payload)
    time.sleep(2)
    r = s.get(LOGIN2)
    #2nd login question test to submit appropriate sub_payload
    if 'XXXX' in r.text:
        s.post(LOGIN2, data=s_payload1)
    if 'YYYY' in r.text:
        s.post(LOGIN2, data=s_payload2)
    if 'ZZZZ' in r.text:
        s.post(LOGIN2, data=s_payload3)
    f = s.get(PROTECTED_PAGE)

tree = html.fromstring(f.content)
a = tree.xpath('//td/text()')
index = a.index("Total")
Funds = a[32]
print(Funds)

相关问题 更多 >