python-3.x - 如何正确登录 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 但无济于事。帮助
解决方案
解决方案是将用户代理更改为:
Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.3.3057 Mobile Safari/537.35+
推荐阅读
- node.js - 如何docker化复合节点js项目
- r - 有谁知道如何让我的代码运行得更快?
- git - 通过 SSH 连接 github 返回权限被拒绝错误
- ios - 在 UserDefaults 的数组中更改字典中的值
- ibm-cloud - 如何更新 ibmcloud 中包含多个操作的包?
- google-apps-script - 如何使用 Apps 脚本在 BigQuery 中运行查询并将结果保存在表中?
- php - 尝试在 laravel 中的表或其关系中搜索
- asp.net-core - .Net Core 5.0 - 在注册时向用户添加角色
- lua - Lua/love2d - 游戏的资产文件夹路径
- cookies - 管理从其他服务器 next.js 接收到的服务器中的 cookie