2015-07-09 9 views
6

Da alcuni giorni non riesco ad accedere a Facebook più con il mio script. La pagina di accesso di Facebook dà l'errore:Errore di Python Mechanize in Facebook cookie

Cookie richiesti, i cookies non sono abilitati sul tuo browser.

Non so perché questo errore appare perché accetto i cookie nel mio script. Spero che qualcuno possa darmi una mano, ho già cercato su google e provato diversi metodi di cookie.

import cookielib 
import urllib2 
import mechanize 

br = mechanize.Browser() 
cookiejar = cookielib.LWPCookieJar() 
br.set_cookiejar(cookiejar) 
br.set_handle_equiv(True) 
br.set_handle_gzip(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 

br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time = 1) 
br.addheaders = [ ('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1') ] 

user = "EMAIL" 
pass = "PASSWORD" 
url = "https://www.facebook.com/login.php" 

#Open URL and submit 
br.open(url) 
br.select_form(nr=0) 
br.form['email'] = user 
br.form['pass'] = pass 
response = br.submit() 

#Opens website and write source to html-output.txt 
fileobj = open("HTML-OUTPUT.txt","wb") 
fileobj.write(response.read()) 
fileobj.close() 
+0

Noi abbiamo la stesso problema, ma solo quando il login di Facebook viene caricato attraverso il CNA. –

+0

Dennis, cosa intendi con CNA? Forse c'è una soluzione, ho letto qualcosa sui cookie di esportazione dal tuo browser reale (cioè Firefox) e li importano nel tuo script. Come posso entrare in contatto con te? Ho davvero bisogno di risolvere questo problema. Vieni dai Paesi Bassi? –

+0

Abbiamo lo stesso problema qui. È frustrante, poiché utilizziamo lo script per identificare quando c'è un problema di accesso a Facebook, quindi possiamo essere consapevoli prima che i nostri utenti inizino a lamentarsi di non poter accedere alla nostra app ... –

risposta

4

Supponendo che come si fa a effettuare l'accesso non è importante (come lo siete stati pronti a usare i cookie di Mozilla per farlo), è possibile utilizzare il sito web mobile per realizzarlo.

Innanzitutto, accedere a Facebook utilizzando la sua versione mobile (che non richiede i cookie), quindi reindirizzare il browser alla pagina che si desidera salvare.

minori modifiche al codice:

user = "EMAIL" 
passwd = "PASSWORD" 
url = "https://m.facebook.com/login.php" 

#Open URL and submit 
br.open(url) 
br.select_form(nr=0) 
br.form['email'] = user 
br.form['pass'] = passwd 
br.submit() 

response = br.open("https://www.facebook.com/") 

#Opens website and write source to html-output.txt 
fileobj = open("HTML-OUTPUT.txt","wb") 
fileobj.write(response.read()) 
fileobj.close() 
1

ti consiglierei di utilizzare this reusable application fatta per questo scopo:

$ pip install django-oauth-tokens 

E dopo nel terminale

>>> from oauth_tokens.providers.facebook import FacebookAuthRequest 
>>> req = FacebookAuthRequest(username='...', password='...') 
>>> response = req.authorized_request(url='https://facebook.com') 
>>> response.content.count(USER_FULL_NAME) 
>>> fileobj = open("HTML-OUTPUT.txt","wb") 
>>> fileobj.write(response.content) 
>>> fileobj.close() 
4 
+0

ImportError: impossibile importare il nome SingleRelatedObjectDescriptor –

+0

forse è un errore di una delle dipendenze, perché l'applicazione non ha menzioni di questa classe https://github.com/ramusus/django-oauth-tokens/search?q=SingleRelatedObjectDescriptor – ramusus

Problemi correlati