Tengo un problema. Al tratar de automatizar el uso de este convertidor online a través de perl usé el LWP::UserAgent pero no funciona. No funciona porque el servidor es algo especial y sumado a mis pocos conocimientos es fatal pero creo conocer lo básico. Paso a explicar lo que he podido analizar con este servidor:
Primero aislé el form que hace una petición POST al servidor (al parecer hacía una petición JSON. Esa parte la borré y ahora solo es un "simple" POST).
Using html4strict Syntax Highlighting
- <html>
- <body>
- <form id="forms" class="forms" action="http://www23.online-convert.com/es/inicio-conversion-imagen" name="forms" method="post">
- <input type="text" name="external_url" id="external_url" value="http://www.madboxpc.com/wp-content/uploads/2011/07/opera_next_12.jpg">
- <input type="checkbox" name="equalize" value="1"> Ecualizar
- <input type="checkbox" name="normalize" value="1"> Normalizar
- <input type="checkbox" name="enhance" value="1"> Mejorar
- <input type="checkbox" name="sharpen" value="1"> Enfocar
- <input type="checkbox" name="antialias" value="1"> Antialias
- <input type="checkbox" name="despeckle" value="1"> Eliminar manchas
- <input type="submit">
- <input type="hidden" name="string_method" value="convertir-a-webp">
- </form>
- </body>
- </html>
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
El código HTML hace una conversión de una URL JPG a WEBP.
Inspeccionando con la herramienta del Chrome veo esto (con el método POST, sus cabeceras):
Request URL:http://www23.online-convert.com/es/inicio-conversion-imagen
Request Method:POST
Status Code:302 Moved Temporarily
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-ES,es;q=0.8
Cache-Control:max-age=0
Content-Length:128
Content-Type:application/x-www-form-urlencoded
Host:www23.online-convert.com
Origin:null
Proxy-Connection:keep-alive
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36
Form Data view source view URL encoded
external_url:http://www.madboxpc.com/wp-content/uploads/2011/07/opera_next_12.jpg
string_method:convertir-a-webp
Response Headers view source
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive
Content-Encoding:gzip
Content-Length:20
Content-Type:text/html
Date:Mon, 22 Jul 2013 22:47:36 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Location:http://www.online-convert.com/es/resultado/accc0a9071ee3547238b8088528ee57e
Pragma:no-cache
Server:Apache
Set-Cookie:OC_PHPSESSID=3grah00tcff5plhih9vvr9e3fr8hcbj3m0bg28ituvgvntmkg6h1; expires=Mon, 29-Jul-2013 22:47:40 GMT; path=/; domain=.online-convert.com; HttpOnly
Vary:User-Agent,Accept-Encoding
Via:1.0 Internet_Kawaii_El_Alto-Bolivia_2012 (squid/3.1.19)
X-Cache:MISS from Internet_Kawaii_El_Alto-Bolivia_2012
X-Cache-Lookup:MISS from Internet_Kawaii_El_Alto-Bolivia_2012:3128
X-Powered-By:PHP/5.3.17submit
En la parte de Response Headers existe un valor de redirección (creo): Location:http://www.online-convert.com/es/resultado/accc0a9071ee3547238b8088528ee57e. En esta URL se encuentra la respuesta de la conversión. En este caso la URL de la imagen en formato WEBP.
Aunque existe una cookie en esta parte, al parecer no es importante ya que en el navegador las cookies están borradas y bloqueadas.
La respuesta que da este servidor al parecer es solamente las cabeceras y nada en el contenido, redireccionándolo inmediatamente a esa URL de Location.
Tratando de hacer esto con LWP useragent recibo una página de error generado por el servidor (no son los típicos errores de HTML).
Using perl Syntax Highlighting
- use CGI qw(:standard );
- use CGI::Carp qw(fatalsToBrowser);
- use LWP::UserAgent;
- my $url = "http://www23.online-convert.com/es/inicio-conversion-imagen";
- my $query = "external_url:http%3A%2F%2Fwww.madboxpc.com%2Fwp-content%2Fuploads%2F2011%2F07%2Fopera_next_12.jpg&string_method:convertir-a-webp";
- my $ua = LWP::UserAgent->new;
- $ua->agent('Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36');
- my $req = HTTP::Request->new(POST => $url);
- $req->content_type('application/x-www-form-urlencoded');
- $req->content($query);
- my $response = $ua->request($req);
- my $content = $response->content(); # contenido de la respuesta. AQUÍ ESPERO RECIBIR NADA, AL IGUAL QUE EL NAVEGADOR, PERO RECIBO EL ERROR GENERADO
- print "Content-type: text/txt\n\n";
- print $content;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Falta algo y no sé qué puede ser.
Apelando a sus conocimientos me despido esperando una respuesta... Gracias.