我试图通过发送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的插件“Tamper Data”拦截对/login的POST调用,我复制了每个变量(包括不使用的变量,比如“lsd”和“qstamp”),但在Python中模拟请求仍然不起作用。在
最后,最简单的答案是使用Facebook的api。图形API文档是found here
相关问题 更多 >
编程相关推荐