2009-04-17 15 views
7

Tengo el siguiente script de python y me gustaría enviar información de encabezado "falso" para que mi aplicación actúe como si fuera Firefox. ¿Cómo podría hacer eso?Enviar encabezados en 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) 

Respuesta

6

Utilice la función addheaders() en su objeto opener.
Apenas añada esta línea después de crear su abridor, antes de empezar las páginas de apertura:

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

http://docs.python.org/library/urllib2.html (que es en la parte inferior de este documento)

5

Tienes que obtener un poco más bajo nivel para poder hacer eso.

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

No probado.

1

Fwiw, dependiendo de cuán precisa desea imitar a Firefox, configurar el User-Agent puede no ser suficiente (aunque eso probablemente sea suficiente para la mayoría de los casos). Para hacer que su secuencia de comandos parezca una navegación web "normal", es posible que desee establecer un Referer adecuado y realizar solicitudes adicionales para el resto del contenido de la página (Javascript/CSS/Images/Flash/etc.). Algo sobre lo que pensar, aunque quizás no sea apropiado para su situación particular.

Cuestiones relacionadas