Python3,尝试登录facebook并获取soucod

2024-05-01 21:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过发送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)

Tags: importhttpdataparserequestlogin页面opener
1条回答
网友
1楼 · 发布于 2024-05-01 21:27:18

快速浏览一下Facebook的登录信息,就会发现Facebook发布的变量比代码中的变量要多。我知道FB一直在努力广泛地打击抓取,我猜他们正在使用页面javascript和其他技术来阻止你做你想做的事情。在

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

最后,最简单的答案是使用Facebook的api。图形API文档是found here

相关问题 更多 >