首页 > 解决方案 > 如何正确登录 facebook 移动网站

问题描述

我正在尝试开发一些代码以成功登录 Facebook。现在,为了尽可能简化,我使用mbasic.facebook.com地址。

我的代码如下(在python最新版本中使用请求):

if __name__ == '__main__':
    base_url = 'https://mbasic.facebook.com'
    with requests.session() as session:
    user_agent = (
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
        "AppleWebKit/537.36 (KHTML, like Gecko) "
        "Chrome/76.0.3809.87 Safari/537.36"
    )
    cookie = 'locale=it_IT;'

    default_headers = {
        'User-Agent': user_agent,
        'Accept-Language': 'it-IT,en;q=0.5',
        'cookie': cookie,
    }
    session.headers.update(default_headers)

    login_form_url = '/login/device-based/regular/login/?refsrc=https%3A%2F%2Fmbasic.facebook.com%2F&lwv=100&ref' \
                     '=dbl '

    r = session.get("https://mbasic.facebook.com/login/")
    page1 = BeautifulSoup(r.text, "lxml")
    form = page1.find('form')
    lsd = page1.find('input', {'name': 'lsd'})['value']
    jazoest = page1.find('input', {'name': 'jazoest'})['value']
    mts = page1.find('input', {'name': 'm_ts'})['value']
    li = page1.find('input', {'name': 'li'})['value']
    try_number = page1.find('input', {'name': 'try_number'})['value']
    unrecognized_tries = page1.find('input', {'name': 'unrecognized_tries'})['value']
    data = {'lsd': lsd, 'jazoest': jazoest, 'm_ts': mts, 'li': li, 'try_number': try_number,
            'unrecognized_tries': unrecognized_tries, 'email': credentials["email"], 'pass': credentials["pass"],
            'login': 'Accedi'}

    r = session.post(base_url + login_form_url, data=data, verify=False)

    # now, i need to complete the second part of the login

    h = open("first_login.html", "w", encoding="utf-8")
    h.write(r.text)

    c = BeautifulSoup(r.text, "lxml")
    form = c.find('a')
    action = form.get('href')
    r = session.get(base_url + action, data=data, verify=False)

    f = open("second_login.html", "w", encoding="utf-8")
    f.write(r.text)

现在,使用此代码,我成功地以登录用户的身份获得了我的家庭提要。但是,当我尝试移动到一个特定的 facebook 公共页面时,问题就开始了,因为它返回给我的页面就好像我没有登录一样。当我尝试获取特定的帖子时,也会发生同样奇怪的事情,因为它不向我显示任何评论,就像在我的浏览器中一样。

我尝试使用会话 cookie 但无济于事。帮助

标签: python-3.xfacebookauthenticationweb-scrapingpython-requests

解决方案


解决方案是将用户代理更改为:

Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.3.3057 Mobile Safari/537.35+

推荐阅读