首页 > 解决方案 > 从 Python 脚本登录 Magento 帐户

问题描述

我正在尝试使用 requests 模块从 Python 脚本登录 Magento 帐户,我制作的相关代码如下所示:

s = requests.session()
main_url = '<redacted.tld>/en/index.html'
html_data = s.get('https://'+main_url, headers=headers, timeout=(30, 30), verify=dst_verify_ssl)

web_user = 'test@test.com'
web_pass = '123test321'
form_key = soup.find('input', {'name':'form_key'})['value']
l_url = 'https://<redacted.tld>/'
l_route = 'en/customer/account/loginPost/'

login_payload = {
'form_key':form_key,
'login[username]':web_user,
'login[password]':web_pass
}

login_req = s.post(l_url + l_route, headers=headers, data=login_payload)

但这并没有让我登录,所以我想知道是否有人可以告诉我通过 Python 登录到 Magento 帐户需要什么?

谢谢。

标签: pythonmagentomagento2

解决方案


我在公共演示实例上试了一下,我可以在 Magento 2 仪表板上很好地看到数据:

    import requests
    from bs4 import BeautifulSoup
    
    web_user = 'youremail@example.com'
    web_pass = 'yourpassword'
    
    s = requests.session()
    main_url = 'https://magento2demo/'
    html_data = s.get(main_url)
    form_soup = BeautifulSoup(html_data.content, 'html.parser')
    form_key = form_soup.find('input', {'name':'form_key'})['value']
    
    login_route = 'https://magento2demo/customer/account/loginPost/'
    login_payload = {
      'form_key': form_key,
      'login[username]': web_user,
      'login[password]': web_pass
    }
    
    login_req = s.post(login_route, data=login_payload)
    
    account_url = "https://magento2demo/customer/account/"
    html_account = s.get(account_url)
    account_soup =  BeautifulSoup(html_account.content, 'html.parser')
    
    info = account_soup.find('div', {'class':'box-information'}).find('div', {'class':'box-content'})
    assert web_user in str(info)
                "beautifulsoup4": { "version": "==4.9.3"
                "requests": { "version": "==2.26.0"

POST 上的响应代码是什么?你的标题有什么特别之处吗?如果上述方法没有帮助,可能想要添加更多可重复的数据。


推荐阅读