2

我可以使用此代码登录 Facebook。登录后,我可以访问需要您登录的页面。

def SignIn(self):
    url = 'https://login.facebook.com/login.php?login_attempt=1'
    data = "locale=en_US&non_com_login=&email="+str(self.Username)+"&pass="+str(self.Password)+"&lsd=20TOl"
    self.cookie = cookielib.CookieJar()

    try:
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie))
    except:
        sys.stderr.write("Unexpected error!".format(src))

    try:
         self.opener.open('https://www.facebook.com')
    except:
         sys.stderr.write("Unexpected error!1")

    try:
         self.opener.open(url, data)
    except:
        sys.stderr.write("Unexpected error!2")

    self.IsSignIned=True  
    return self.opener

但是这段代码不起作用

import requests


headers = {'Host':'www.facebook.com',
'Origin':'http://www.facebook.com',
'Referer':'http://www.facebook.com/',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11'}


s = requests.session(headers=headers)
login_data = {
    'locale':'en_US',
    'non_com_login':'',
    'email':'mymail@mail.com',
    'pass':'mypassword',
    'lsd':'20TOl'
    }

r=s.post('https://login.facebook.com/login.php?login_attempt=1',data=login_data,verify=False)
print r.content
print r.status_code

它返回

Facebook登入

需要 Cookie

您的浏览器未启用 Cookie。在继续之前,请在您的安全首选项中进行调整。

我必须使用 requests 库,因为我需要 Gzip 和 keep-alive

问题是什么?有没有其他图书馆可以处理所有这些?(Gzip,保活cookie,..)

4

5 回答 5

2

你真的需要自己做所有的事情吗?您是否尝试过 facepy(https://github.com/jgorset/facepy)?

该库也使用“请求”,但我确信他们解决了这个问题(假设你想登录,因为你需要一个访问令牌来做 OpenGraph 的东西)。

于 2012-07-10T11:46:07.510 回答
0

self.cookie =,cookielib.CookieJar() 你没有在第二个代码中激活 python cookie。

于 2013-08-06T11:06:16.727 回答
0

我阅读了您的问题,并认为您想在登录后获取信息。下面是我显示 HTML 内容的代码,它解决了你的问题吗?

#!/usr/bin/python

import urllib, urllib2, cookielib

username = 'yourusername'

password = 'yourpassword'

cj = cookielib.CookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

login_data = urllib.urlencode({'username' : username, 'j_password' : password})

opener.open('https://login.facebook.com/login.php?login_attempt=1', login_data)

resp = opener.open('http://www.facebook.com/')

print resp.read()
于 2014-10-23T23:45:32.733 回答
0

我在中国使用selenium自动登录微信。代码在这里:

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support import ui
from selenium.webdriver.common.keys import Keys

def page_is_loaded(driver):
    return driver.find_element_by_tag_name("body") != None

driver = webdriver.Firefox() # open firefox browser
driver.get('https://mp.weixin.qq.com/') # go to url 

wait = ui.WebDriverWait(driver, 10)
wait.until(page_is_loaded)

wechat_account = driver.find_element_by_id("account") # here you should find the facebook login account id in webpage sourcecode and change the string "account"
wechat_account.send_keys("user@email.com")      # input your email address or your wechat account

your_password = driver.find_element_by_id("pwd")
your_password.send_keys("balabalabala")         # your password instead of balabalabala
your_password.send_keys(Keys.RETURN)

print "Mission Completed! Write your new article.-->"

希望它会有所帮助。

于 2015-10-23T08:02:11.030 回答
0

我建议你使用硒。

from selenium import webdriver  ##Imports the selenium web driver
driver = webdriver.Firefox()    ##Create a Firefox Webdriver
driver.get("https://www.facebook.com/")  ##Tells the driver to go to     facebook.com
driver.find_element_by_css_selector("#email").send_keys("insert username here")
driver.find_element_by_css_selector("#pass").send_keys("insert password  here")
driver.find_element_by_css_selector("#u_0_q").click()

有关更深入的指南,我建议您看一下这篇文章

于 2016-06-25T13:52:40.583 回答