use warnings; use strict; use WWW::Mechanize; use HTTP::Cookies; my $outfile = "auto_play.tmp"; my $outfile1 = "auto_play.log"; my $url = ""; my $username = 'xxxxxxxxxxx'; my $password = 'xxxxxxxxxxx'; my $fragment = ""; my $fragment1 = ""; my $new_url = ""; my $play_url = ""; my $output_page = ""; my $mech = WWW::Mechanize->new(); print "here1\n"; $mech->cookie_jar(HTTP::Cookies->new()); $mech->get($url); sleep(2); print "here1.1\n"; $mech->field("j_username", $username); sleep(2); print "here1.2\n"; $mech->field("j_password", $password); sleep(2); print "here1.3\n"; $mech->submit(); sleep(2); print "here2\n"; $mech->follow_link( url => '/games/lotto'); sleep(1); $mech->form_name("playslip_form_lotto"); print "here2.1\n"; $mech->tick("drawDays", 'WEDNESDAY'); $mech->field("numberWeeks", '1'); $mech->field("line_0_pool_0_col_0", '1'); $mech->field("line_0_pool_0_col_1", '2'); $mech->field("line_0_pool_0_col_2", '3'); $mech->field("line_0_pool_0_col_3", '4'); $mech->field("line_0_pool_0_col_4", '5'); $mech->field("line_0_pool_0_col_5", '6'); sleep(2); print "here2.11\n"; $mech->submit(); print "here2.12\n"; sleep(1); print "here2.2\n"; $mech->form_name("confirm-play-slip"); print "here2.3\n"; $output_page = $mech->content(); open(OUTFILE, ">$outfile"); binmode(OUTFILE, ":utf8"); print OUTFILE "$output_page"; close(OUTFILE); print "here2.31\n"; my $find = 'name="SYNCHRONIZER_TOKEN" value="'; while ($output_page =~ m/$find/g) { my $pstion = pos($output_page); #print("Matched $find at position $pstion\n"); $fragment=substr $output_page,$pstion,36; } my $find1 = 'name="SYNCHRONIZER_URI" value="'; while ($output_page =~ m/$find1/g) { my $pstion1 = pos($output_page); #print("Matched $find at position $pstion1\n"); $fragment1=substr $output_page,$pstion1,30; } print "here2.4\n"; my @forms = $mech->forms; for my $form (@forms) { print STDERR "FORM: ".$form->attr( 'name' ).' - '.$form->attr( 'id' )."\n"; my @inputs = $form->inputs; for my $input (@inputs) { print STDERR " INPUT: ".$input->type().' - '.$input->name()."\n"; } } print "TOKEN value=[$fragment]\n"; print "URI value=[$fragment1]\n"; $mech->field("SYNCHRONIZER_TOKEN", $fragment); $mech->field("SYNCHRONIZER_URI", $fragment1); sleep(1); my $rtn = $mech->submit(); print "Returned : $rtn\n"; #my $rtn = $mech->post(); # Also tried this but got .... # Can't call method "as_string" on an undefined # value at /usr/local/share/perl5/WWW/Mechanize.pm line 2467. #$mech->click('confirm'); # And this but got... # No clickable input with name confirm at # /usr/local/share/perl5/WWW/Mechanize.pm line 1742. print "here2.5\n"; $output_page = $mech->content(); print "here2.6\n"; open(OUTFILE, ">$outfile1"); binmode(OUTFILE, ":utf8"); print OUTFILE "$output_page"; close(OUTFILE); print "End\n";