Python3,正在尝试登录facebook并获取soucecode

Python3,正在尝试登录facebook并获取soucecode,python,http,python-3.x,post,python-requests,Python,Http,Python 3.x,Post,Python Requests,我正试图通过发送post请求登录Facebook,并从我的个人资料页面获取HTML源代码 我尝试了很多方法,但是我的脚本总是返回相同的登录页面 希望有人能给我一些提示/建议 import http.cookiejar import urllib.parse import urllib.error from urllib.request import urlopen post_data = { 'email':'xxx', 'pass':'xxx', 'legacy_r

我正试图通过发送post请求登录Facebook,并从我的个人资料页面获取HTML源代码

我尝试了很多方法,但是我的脚本总是返回相同的登录页面

希望有人能给我一些提示/建议

import http.cookiejar
import urllib.parse
import urllib.error
from urllib.request import urlopen


post_data = {
    'email':'xxx',
    'pass':'xxx',
    'legacy_return':'1',
    'trynum':'1',
    'timezone':'240',
    'lgndim':'xxx',
    'lgnrnd':'xxx',
    'lgnjs': 'xxx'
}

try:
    cj = http.cookiejar.CookieJar()
    opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
    login_data = urllib.parse.urlencode(post_data)
    encode_data = login_data.encode('UTF-8')
    opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64)')]
    opener.open('https://www.facebook.com/login.php?', encode_data)
    resp = opener.open('https://www.facebook.com/login.php?')
    print (resp.read().decode('utf-8'))
    print (resp.geturl())
except urllib.error.HTTPError as err:
    print(err.code)

快速查看Facebook登录显示,Facebook发布的变量比代码中的变量多。我知道FB一直在努力广泛打击刮削,我猜他们正在使用页面javascript和其他技术来阻止你做你想做的事情

我尝试使用Firefox的插件“”拦截对/login的POST调用,我复制了每个变量(包括您不使用的变量,如'lsd'和'qstamp'),但在Python中模拟请求仍然不起作用


最后,最简单的答案是使用Facebook API。Graph API文档是

谢谢您的回答,但我认为一定有办法使用python库实现这一点。@JunYuZhou您实现了吗?