Replicar método POST

Iniciado por NeonMan, 12 Febrero 2008, 19:27 PM

0 Miembros y 1 Visitante están viendo este tema.

NeonMan

Nas!

He programado parte de un bot capaz de obtener archivos de una web (en este caso romnation) leyendo la página, guardando cookies y revelando la Captcha de forma automática, el problema aparece al querer enviar la información recogida. En la página es un form HTML como este.

Código (html4strict) [Seleccionar]
<form name="downloadform" method="post" action="http://download.romnation.net/download.php?PHPSESSID=89bea6eeb54aacd1fa80f135d923478c" onsubmit="return validate()">
<input type="hidden" name="field" value="rom">
<input type="hidden" name="id" value="50384">
<input type="hidden" name="download" value="1">
<input type="hidden" name="dir" value="genesis2">
<input type="hidden" name="filename" value="Land Stalker (U).7z">
<p>Enter the number you see above:</p>
<div id="codediv"><input id="code" type="text" name="code" size="4" maxlength="4">&nbsp;<input type="submit" value="Download"></div>
</form>


dado que las réplicas leas genero con cURL/wget, la forma más sencilla de replicar esto que se me ocurrió es cambiar el método POST por GET, obteniendo una URL del estilo ...download.php?param1=123&param2=3321... sin embargo el servido me dice que he olvidado escribir el código de confirmación, incluso, en la própia página web, simplemente cambiando el post por get me da el error.

Creo que el problema tiene algo que ver con onsubmit="return validate()"[/i] pero no se lo que, los javascrips no hacen nada relevante, ya que la autenticación de la captcha se puede realizar con Lynx pero creo que se me escapa algo referente a ese form.

Alguien sabe como replicar o tiene alguna idea de como generar con cURL/wget la petición del archivo que genera el form antes descrito?

<edit>
El bot en cuestión consiste en una serie de scrips bash, aplicaciones y algo de código propio, que se encargan de realizar el trabajo.
Debian Lenny/sid [testing/unstable] linux x64

Stacker

Hola, el parametro PHPSESSID, que se envia implícitamente en el campo action, se deberia enviar correctamente si usas el método post en el formulario. Creo que el problema está en que al enviar los datos del formulario con el método get se suprime el parametro PHPSESSID.

Se me ocurre que puedes usar javascript para extraer el parámetro PHPSESSID (si no tiene longitud fija con expresiones regulares) y añadirlo a otro campo del formulario. De este modo no se perderá el parametro.

Espero que te ayude, avisa si no he entendido bien algo.

Saludos