2009-04-17 3 views
7

Ho il seguente script python e vorrei inviare "false" informazioni di intestazione lungo in modo che la mia applicazione agisca come se fosse firefox. Come potrei farlo?Invia intestazioni lungo python

import urllib, urllib2, cookielib 

username = '****' 

password = '****' 

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

jar = cookielib.FileCookieJar("cookies") 

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

response = opener.open("http://www.***.com") 

response = opener.open("http://www.***.com/login.php") 

response = opener.open("http://www.***.com/welcome.php", login_user) 

risposta

6

Utilizzare la funzione addheaders() sull'oggetto opener.
Basta aggiungere questa linea dopo aver creato il vostro apertura, prima di iniziare a pagine di apertura:

opener.addheaders = [('User-agent', 'Mozilla/5.0')] 

http://docs.python.org/library/urllib2.html (che è in fondo a questo documento)

5

Devi essere un po 'più di basso livello per essere in grado di farlo.

request = urllib2.Request('http://stackoverflow.com') 
request.add_header('User-Agent', 'FIREFOX LOL') 
opener = urllib2.build_opener() 
data = opener.open(request).read() 
print data 

Non testato.

1

FWIW, a seconda di quanto appunto si vuole imitare Firefox, l'impostazione di User-Agent potrebbe non essere sufficiente (sebbene ciò sia probabilmente sufficiente per la maggior parte dei casi). Per fare in modo che il tuo script assomigli alla normale navigazione del web, potresti voler impostare un Referer appropriato e fare richieste aggiuntive per il resto del contenuto della pagina (Javascript/CSS/Immagini/Flash/ecc.). Qualcosa di cui parlare, anche se forse non appropriato per la tua situazione particolare.