Perl su Windows: automatizzare il completamento di un form

10 ottobre 2014 di In: Networking, Script

Questo script Perl prende IP internet e hostname della macchina su cui viene eseguito e li manda ad un form presente in internet.
Il completamento del form è possibile grazie al modulo WWW::Mechanize;

#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::Simple;
use Sys::Hostname;
use WWW::Mechanize;
 
# Estraggo l'indirizzo IP connettendomi ad un sito
my $ip = get('https://www.net-addiction.net/ip/ip.php');
$ip = 'Non ho trovato un indirizzo IP!' if !$ip;
 
# Estraggo l'hostname
my $host = hostname;
 
# Imposto i campi da compilare con i relativi valori (il nome del campo dev'essere uguale all'attributo name del tag input 
my $mech = WWW::Mechanize->new();
my $url = "https://www.net-addiction.net/ip/form.php"; # Definizione dell'URL contenente il form
$mech->get($url);
my $result = $mech->submit_form(
form_number => 1,                  # L'identificativo del form (nel caso in cui nella pagina ce ne fosse piu' di uno
fields      => 
{
Code		=> 'RLRRLRLL', # Codice di controllo - è la variabile che distingue le richieste autorizzate
IP    		=> $ip,        # L'indirizzo IP estratto
Hostname            => $host,      # L'hostname estratto
}
, button            => 'Invia'     # Questo deve corrispondere all'attributo name del tag input type="submit"
);
print $result->content();         # Esegue il completamento
 
 
 
system("cls"); # Svuota la finestra del prompt
print "Il tuo indirizzo IP e\' ".$ip."\nIl tuo hostname e\' " . $host ."\n"; # Scrive a video IP e Hostname

Dall’altra parte (seguendo l’esempio sopra in https://www.net-addiction.net/ip/form.php) ci deve essere un form tipo:

<html>
<head><title>Pagina per ricezione dati</title></head>
<body>
<?php
if ($_POST['Code'] == 'RLRRLRLL') { // Se il codice corrisponde
 
$ip = $_POST['IP']; // assegno le variabili
$hostname = $_POST['Hostname'];
 
$myfile = fopen("dati.txt", "a") or die("Impossibile aprire il file!"); // Tento di aprire il file in append
$txt = $ip . " - " . $hostname . "\n"; // Creo la stringa da scrivere su file
fwrite($myfile, $txt); // Scrivo su file
fclose($myfile); // chiudo il file
 
echo "<h1>dati inviati</h1>"; // Confermo che i dati sono stati inviati
	}
?>
 
<form id="1" action="form.php" method="POST">
<input type="text" id="Code" name="Code" />
<input type="text" id="IP" name="IP" />
<input type="text" id="Hostname" name="Hostname" />
<input type="submit" id="Invia" name="Invia" value="Invia" />
</form>
</body>
</html>

Lo so, l’ho fatto in PHP per comodità. Quando imparerò un minimo di programmazione web di Perl integrerò.

Nessun commento presente