Python请求无法登录

时间:2017-09-06 23:57:26

标签: python html beautifulsoup python-requests urllib

我很欣赏你在这里做的事情。通常我可以在Stackoverflow的帮助下弄清楚我的问题,但这次我被卡住了。希望你能帮助我!

问题很简单:如何使用 Python的请求登录this webpage

我的步骤:

  1. 获取登录网址
  2. 提供登录详细信息。根据HTML,我需要提供“电子邮件”和“密码”。
  3. 创建会话并使用帖子登录
  4. 如果登录成功,请检查HTML
  5. 不幸的是,在这种情况下,简单方法似乎不起作用。例如,details的输出为:

    <script>
        dataLayer = [{
            'environment': 'production',
            'loggedIn': '0',
            'userCode': '',
            'rank': '',
            'totalBalance': '0',
            'overAgeCasino': '0'
        }];
    </script>
    

    显然,如果登录成功,'0'的{​​{1}}应更改为'loggedIn'

    在一个示例中,我发现您可能需要添加“csrftoken”,并且可以在HTML中将其作为“隐藏”类型找到。但是,type ='hidden'部分中的名称似乎与此无关,也没有值(link to screenshot of HTML)。 在其他地方我读到CSFR令牌也存储在CookieJar中,但它不存在:

    '1'

    我发现很难相信登录是不可能的,但我已经没有想法了。如果有人知道如何使用urllib(2),它也很有用。我宁愿不使用Selenium,因为我无法顺利运行它。

    代码:

    <RequestsCookieJar[<Cookie PHPSESSID=5dib6cf6kpvf29dsn725ljcec7 for .napoleongames.be/>, <Cookie locale=en_GB for .napoleongames.be/>, <Cookie user=false for .napoleongames.be/>]>
    

    接头:

     import requests
        from bs4 import BeautifulSoup
        from datetime import date
    
    date_str = str(date.today())
    login_url = 'https://en-gb.sports.napoleongames.be/user/login'
    protected_url = 'proctected_url'
    
    payload = {'email': 'address@example.com',
               'password': '*********'}
    
    with requests.Session() as session:
        session.get(login_url)
        login_page = session.post(login_url,
                              data=payload)
    
        html_body = BeautifulSoup(login_page.content, 'html.parser').find(
            name='body', attrs={'id': 'user_login'})
        details = html_body.findAll('script')[0]
        page = session.get(protected_url)
    

1 个答案:

答案 0 :(得分:3)

提交表单时,您应该考虑表单标记内的其他字段,而不仅仅是您需要填写的字段。在这种情况下,当您查看页面源时,还有一个字段在登录时被填充。

您可以尝试在有效负载中添加:

payload = {'email': 'address@example.com',
           'password': '*********'
           'buttons_app_service_user_login[buttonClicked]': 'buttons_app_service_user_login-save'}

如果有效或者您遇到其他问题,请告诉我。