当前位置: 首页 > 面试题库 >

使用python请求登录Facebook

夏英发
2023-03-14
问题内容

我正在尝试找到一种无需使用Python即可通过浏览器自动登录Facebook的方法。我尝试了“请求”库。尝试了几种方法:

URL = 'http://m.facebook.com'
requests.get(URL, auth = ('email@domain.com', 'mypassword'))

form_data = {'email': 'email@domain.com',
             'pass' : 'mypassword'
            }
requests.post(URL, data = form_data)

requests.post(URL + '?email=email@domain.com&pass=mypassword')

最后一种方法填充页面上的“电子邮件”框,但“通过”框保持为空…

有人可以帮我吗?是否可以使用请求模拟FB登录?

谢谢!


问题答案:

您需要发送完整的表格。找出Facebook期望的最简单方法是使用类似Google
Chrome的开发人员工具的工具
来监视您的Web请求。

为了让您的生活更轻松,我已经在Facebook上监视了自己的登录名,并在下面复制了该登录名(显然,已删除了私人信息),并删除了不重要的信息:

Request URL:https://m.facebook.com/login.php?refsrc=https%3A%2F%2Fm.facebook.com%2F&refid=8
Request Method:POST

Form Data:
    lsd:AVqAE5Wf
    charset_test:€,´,€,´,水,Д,Є
    version:1
    ajax:0
    width:0
    pxr:0
    gps:0
    m_ts:1392974963
    li:cxwHUxatQiaLv1nZEYPp0aTB
    email:...
    pass:...
    login:Log In

如您所见,该表单包含许多字段。所有这些都需要提供,以便您登录。电子邮件和密码将由您的代码提供。实际上,其余字段的值由Facebook为您提供的HTML设置。这意味着,要模拟浏览器登录,您需要执行以下步骤:

  1. 进入登录页面(https://m.facebook.com/
  2. 使用HTML解析库(例如BeautifulSoup)来解析HTML并找到表单字段的默认值。
    • 默认值全部位于<input>元素下方的HTML元素中#login_form。您需要按名称查找它们(例如charset_test),然后提取其value属性。
    • 制定如何执行此操作不在此答案的范围内,因此我不再赘述。
  3. 将表单字段的默认值与您的电子邮件和密码结合起来,如下所示:

    data = {
    'lsd': lsd,
    'charset_test': csettest, 
    'version': version,
    'ajax': ajax,
    'width': width,
    'pxr': pxr,
    'gps': gps,
    'm_ts': mts,
    'li': li,
    

    }
    data[‘email’] = email
    data[‘pass’] = pass
    data[‘login’] = ‘Log In’

  4. 使用请求发送登录信息Session

    s = requests.Session()
    

    r = s.post(url, data=data)
    r.raise_for_status()

  5. 通过来发送所有将来的HTTP流量Session

如您所见,这是一种不平凡的做事方式。这是因为不希望程序会使用该网站登录:相反,您应该改用其SDK或Web API。



 类似资料:
  • 问题内容: 我正在尝试使用Python请求登录LinkedIn: 我似乎无法使用此方法登录。我什至尝试在有效负载中使用csrf等,但是会话不是应该为您解决吗? 关于最后一行的注意事项:我使用标题来检查是否已成功登录。(如果我已经登录,则应该看到“ Welcome!| LinkedIn”,而我会看到“世界上最大的专业网络| LinkedIn”) 我想念什么吗? 问题答案: 我修改了一个网络抓取模板,

  • 我正在使用python的请求模块尝试登录网页。我打开了一个窗口。session(),然后我得到cookie和csrf令牌,它包含在meta标记中。我使用用户名、密码、一个隐藏的输入字段和meta标记中的csrf令牌来构建有效负载。之后,我使用post方法,传递登录url、cookie、负载和头。但在那之后,我无法访问登录页面后面的页面。我做错了什么? 这是我执行登录时的请求标头: 到目前为止,这是

  • 问题内容: 我正在尝试使用Python中的“请求”模块发布一个登录网站的请求,但它实际上无法正常工作。我是新来的…所以我不知道是否应该制作我的用户名和密码cookie或我发现的某种HTTP授权内容(??)。 所以现在,我认为我应该使用“发布”和cookie。 我有种感觉,我在做饼干的事情做错了…我不知道。 如果登录不正确,则首页标题应显示在“ Locationary.com”上;如果登录不正确,则

  • 问题内容: 我想集成python Selenium和Requests模块以在网站上进行身份验证。 我正在使用以下代码: 问题是,即使我传递了从请求会话生成的cookie ,当我尝试访问浏览器时,登录身份验证仍然存在。 如何修改上面的代码以通过身份验证网页? 谁能帮我解决这个问题? 非常感谢您的帮助。 最好的祝福。 问题答案: 我终于发现了问题所在。在向库发出请求之前,我应该先传递浏览器的cooki

  • 问题内容: 我是新手。我正在尝试为使用JSON进行身份验证的移动应用程序编写API。我想使用Devise进行身份验证。我相信Devise> 1.3也增加了对JSON的支持,但是我找不到关于它的任何示例或文献。 有人可以为我提供任何相关资源或提供示例代码吗? 谢谢!萨蒂扬 问题答案: 也许这> http://jessehowarth.com/devise? 我计划在一两周内做同样的事情。

  • 我试图使用python请求登录到我的大学的CAS。我在网上看过一些教程和帖子,但是它们都适用于在同一个页面上有用户名和密码字段的CAS。这是我想登录的网站:https://cas.tamu.edu/cas/login?service=https://howdy.tamu.edu/uPortal/Login 如您所见,只有一个用户名字段,然后单击提交后,您将被带到同一个页面,只有该字段现在是密码。这