Pregunta

Tengo un script Perl que usa LWP::Agente de usuario para descargar una página web que luego procesa utilizando expresiones regulares.El problema es que partes de la página web que son HTML normal no se devuelven a LWP::UserAgent ya que el sitio reconoce que el navegador no tiene Flash instalado y en su lugar devuelve HTML solicitándonos que descarguemos Flash en lugar del HTML apropiado que necesitamos analizar.

¿Cómo puedo hacer que LWP::UserAgent parezca tener flash instalado en el servidor web desde el que solicitamos la página?Estoy usando el siguiente código para inicializar LWP::UserAgent:

use LWP::UserAgent;
my $ua = LWP::UserAgent->new(cookie_jar => { },requests_redirectable => [ ]);
$ua->agent('Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:9.9.9.9) Gecko/20079999 Firefox/2.0.0.1');
$ua->timeout(10);

¡Gracias de antemano por tu ayuda!

¿Fue útil?

Solución 3

@ Michael Tanto y @dma_k eran correctas. El servidor no estaba comprobando si LWP :: agente de usuario había instalado flash. En cambio, por alguna razón el contenido devuelto no estaba siendo objeto de dumping correctamente mientras estábamos tratando de depurar la secuencia de comandos. Por desgracia, no encontrar una manera de solucionar este problema, pero después de algún ensayo y error nos dimos cuenta de cómo sacar los campos correspondientes en la página. Lo sentimos que no hay realmente una respuesta correcta para éste.

Otros consejos

Te recomendaría usar insecto de fuego para eso, complemento muy agradable y potente para FF.Estoy de acuerdo con Michael en que el servidor puede obtener dicha información sobre el cliente solo a partir de los encabezados que se le envían, o desde un script que se ejecuta en el cliente y puede comunicarse con el servidor (JavaScript, Flex, ...).Para el caso de JavaScript, puede intentar desactivarlo temporalmente en FF e intentar recargar la página:Si el servidor te responde lo mismo que para LWP, entonces sabes la respuesta.

El sitio es, probablemente, probando si el flash se instala usando javascript. A menudo, esta prueba es el lado del cliente solamente y no por no debería afectar a la página. Pero tal vez están disparando una solicitud asíncrona diciendo al servidor que Flash está instalado. Para la prueba de ello, tiene que descargar TamperData, cargar hasta la ventana TamperData desde el menú de herramientas y actualiza la página. La ventana le mostrará todas las solicitudes que se han disparado y se puede inspeccionarlas. Si hay alguna petición como http://whatever.com/flash_test.php?flash_installed=true , a continuación, se puede volver a esta solicitud mediante LWP.

Otra opción es descompilar la aplicación flash. Esto es muy fácil de hacer y, a menudo obtendrá fuente completo, incluyendo comentarios de código, y aquí es un libre juicio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top