2
好吧,所以我找到了一个基本的脚本来登录到Facebook使用python a回来。它没有工作 - 但经过一些调整(主要是更新后字符串)后,它运行良好很长一段时间。现在它再次停止 - 我怀疑是因为Facebook已经改变了他们的网站。Facebook Python登录脚本不使用API
我已经尝试了进一步的调整,在Firefox中捕获了一个登录名,并确保我尽可能多地模拟后期值等。
我需要直接登录网站,因为我有一堆脚本收集可通过浏览器访问的数据,但不通过API。
花了几天的时间试图解决这个问题,我仍然画空白......我错过了什么?
import sys
import re
import urllib
import urllib2
import cookielib
import json
def main():
# Check the arguments
user = sys.argv[1]
passw = sys.argv[2]
# Initialize the needed modules
CHandler = urllib2.HTTPCookieProcessor(cookielib.CookieJar())
browser = urllib2.build_opener(CHandler)
browser.addheaders = [('Referer', 'http://login.facebook.com'),
('Content-Type', 'application/x-www-form-urlencoded'),
('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)')]
urllib2.install_opener(browser)
res = browser.open('http://m.facebook.com/index.php')
pg=res.read()
mxt = re.search('name="li" value="(\w+)"', pg)
mxt2 = re.search('name="m_ts" value="(\w+)"', pg)
mxt3 = re.search('name="lsd" value="(\w+)"', pg)
mxt4 = re.search('name="locale" value="(\w+)"', pg)
li = mxt.group(1)
m_ts = mxt2.group(1)
lsd = mxt3.group(1)
locale = mxt4.group(1)
res.close()
# Initialize the POST data
data = urllib.urlencode({
'lsd' : lsd,
'charset_test' : urllib.unquote_plus('%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84'),
'version' : '1',
'm_ts' : m_ts,
'li' : li,
'locale' : locale,
'signup_layout' : 'header_button',
'laststage' :'first',
'post_form_id' : pfi,
'email' : user,
'pass' : passw,
'login' : 'Log in'
})
url='https://login.facebook.com/login.php?login_attempt=1&non_com_login=&'+ data
res = urllib2.urlopen(url)
print ('%s' % url)
res.close()
# Get Access Token
res = browser.open('http://developers.facebook.com/docs/reference/api')
conft = res.read()
# For Debugging
fh = open('debug.html', 'w')
fh.write(conft)
fh.close
mat = re.search('access_token=(.*?)"', conft)
acct = mat.group(1)
print ('Using access token: %s' % acct)
我建议将这个'urllib2'转换为'mechanize','re'转换为'BeautifulSoup'。 – Droogans
谢谢 - 刚刚重写了机械化和波什的第一部分 - 它的工作原理。比urllib2好多了。非常感谢。 – user1840180
为了记录,这里是上述的工作答案。 '#!的/ usr/bin中/ python' '进口mechanize' '浏览器= mechanize.Browser()'' browser.set_handle_robots(假)'' 饼干= mechanize.CookieJar()' ' browser.addheaders = [('User-agent','Mozilla/5.0(X11; U; Linux i686; en-US)AppleWebKit/534.7(KHTML,如Gecko)Chrome/7.0.517.41 Safari/534.7')]' 'browser.open(“http://m.facebook.com/”)' 'browser.select_form(nr = 0)' 'browser.form ['email'] ='YOUR_LOGIN'' '浏览器。 form ['pass'] ='YOUR_PASSWORD'' 'response = browser.submit()' – user1840180