sub fetchCoveragePlans { my @subData = @_; my $familySize = $subData[3]; # 01001,42,42,2 my $cookie_jar = HTTP::Cookies->new( file => 'cookies.dat', autosave => 1, ); trace("Fetch data for " . getFileName(@subData)); my $mech = WWW::Mechanize->new(cookie_jar => $cookie_jar, quiet => 0,); $mech->agent_alias( 'Windows IE 6' ); # $mech->conn_cache(LWP::ConnCache->new); # Fetch - Find Insurance Page $mech->get($HOMEURL); my $sessionId; my $response = $mech->response(); if ($mech->response->status_line != STATUS_OK) { trace("Error fetching Page 1. Status = ". $mech->response->status_line .". Try after sometime."); return; } ##---------------------------------------------------------------------------------------------------## for my $key ( $response->header_field_names() ) { if ($key =~ /Set-Cookie/is) { $sessionId = $response->header( $key ); if ($sessionId =~ /JSESSIONID=(.*?);/) { $sessionId = $1; } } } trace("Found Session Id = $sessionId"); ##---------------------------------------------------------------------------------------------------## my $savePage = "$HOMEDIR/$currDir/".getFileName(@subData); my $html = $mech->content; ##---------------------------------------------------------------------------------------------------## my $jsURL = "https://www.mahealthconnector.org/portal/dwr/call/plaincall/__System.pageLoaded.dwr"; my $response = $mech->post($jsURL, [ 'callCount' => "1", 'windowName' => "", 'c0-scriptName' => "__System", 'c0-methodName' => "pageLoaded", 'c0-id' => "0", 'batchId' => "0", 'page' => "/portal/site/connector/menuitem.55b6e23ac6627f40dbef6f47d7468a0c/", 'httpSessionId' => $sessionId, 'scriptSessionId' => "", ]); if ($mech->response->status_line != STATUS_OK) { trace("Error fetching Page 5a. Status = ". $mech->response->status_line .". Try after sometime."); return; } ##---------------------------------------------------------------------------------------------------## # dwr.engine.remote.handleNewScriptSession("71A70B8E00AB93A125F4D986E5D7B66D"); my $scriptSessionId; if ($html =~ /handleNewScriptSession\("(.*?)"/ ) { $scriptSessionId = $1; } ##---------------------------------------------------------------------------------------------------## my $jsURL4='https://www.mahealthconnector.org/portal/dwr/call/plaincall/LandingDelegate.getPovertyLevelForFamilySize.dwr'; my $response = $mech->post($jsURL4, [ 'callCount' => "1", 'windowName' => "", 'c0-scriptName' => "LandingDelegate", 'c0-methodName' => "getPovertyLevelForFamilySize", 'c0-id' => "0", 'c0-param0' => "number:2", 'c0-param1' => "string:INDIVIDUAL", 'batchId' => "1", 'page' => "/portal/site/connector/menuitem.55b6e23ac6627f40dbef6f47d7468a0c/", 'httpSessionId' => $sessionId, 'scriptSessionId' => $scriptSessionId, ]); ##---------------------------------------------------------------------------------------------------## #dwr.engine.remote.handleCallback("1","0",{minAnnIncome:45396.00,minMonthlyIncome:3783.00}); my $redirectConnector; $html=$mech->{content}; if($html=~/handleCallback\(\s*["](.*?)["]\s*[,]\s*["](.*?)["]\s*[,]\s*["{](.*?)[}"]\s*\)/is) { $redirectConnector = $3; } ##---------------------------------------------------------------------------------------------------## my $url3='https://www.mahealthconnector.org/portal/site/connector/menuitem.55b6e23ac6627f40dbef6f47d7468a0c/'; $mech->get($url3); if ($mech->response->status_line != STATUS_OK) { trace("Error fetching Page 5a. Status = ". $mech->response->status_line .". Try after sometime."); return; } ##---------------------------------------------------------------------------------------------------## #$mech->find_link( text_regex => qr/download/i ); ####my $link=$mech->find_link( id_regex => qr/continue/i ); my $link= $mech->click_button( value => "Continue" ); my $continueLink='https://www.mahealthconnector.org'.$link->url; $mech->get($continueLink); if ($mech->response->status_line != STATUS_OK) { trace("Error fetching Page 5a. Status = ". $mech->response->status_line .". Try after sometime."); return; } my $html = $mech->content; ##---------------------------------------------------------------------------------------------------## ###$link= $mech->find_link( text_regex => qr/Browse\s+now/i ); $link= $mech->click_button( value => "Shop Now" ); my $browseLink='https://www.mahealthconnector.org'.$link->url; $mech->get($browseLink); if ($mech->response->status_line != STATUS_OK) { trace("Error fetching Page 3. Status = ". $mech->response->status_line .". Try after sometime."); return; } ##---------------------------------------------------------------------------------------------------## my $form1_fields = { 'js_enabled' => 'true' }; my $response = $mech->submit_form( form_name => 'js_form', fields => $form1_fields); if ($mech->response->status_line != STATUS_OK) { trace("Error fetching Page 3. Status = ". $mech->response->status_line .". Try after sometime."); return; } ##---------------------------------------------------------------------------------------------------## #trace("Fetching page with all family information"); my %form2_fields = getConnector2Fields(@subData); sleep(5); my $response = $mech->submit_form( form_name => 'connector_step2a_form', fields => \%form2_fields); if ($mech->response->status_line != STATUS_OK) { trace("Error fetching Page 3. Status = ". $mech->response->status_line .". Try after sometime."); return; } ##---------------------------------------------------------------------------------------------------## my $mechClone = $mech->clone(); my $jsURL3='https://www.mahealthconnector.org/portal/dwr/call/plaincall/__System.pageLoaded.dwr'; my $response = $mechClone->post($jsURL3, [ 'callCount' => "1", 'windowName' => "", 'c0-scriptName' => "__System", 'c0-methodName' => "pageLoaded", 'c0-id' => "0", 'batchId' => "0", ###### 'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step2a-load-rates%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken", 'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step2a%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken", 'httpSessionId' => $sessionId, 'scriptSessionId' => "", ]); ##---------------------------------------------------------------------------------------------------## # dwr.engine.remote.handleNewScriptSession("71A70B8E00AB93A125F4D986E5D7B66D"); $html=$mechClone->{content}; if($html=~/handleNewScriptSession\(\s*"(.*?)"\s*\)/is) { $scriptSessionId = $1; } ##---------------------------------------------------------------------------------------------------## my $jsURL4='https://www.mahealthconnector.org/portal/dwr/call/plaincall/NonGroupPlanPremiumsDelegate.fetchHealthPlans.dwr'; my $response = $mechClone->post($jsURL4, [ 'callCount' => "1", 'windowName' => "", 'c0-scriptName' => "NonGroupPlanPremiumsDelegate", 'c0-methodName' => "fetchHealthPlans", 'c0-id' => "0", 'batchId' => "1", ###### 'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step2a-load-rates%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken", 'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step2a%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken", 'httpSessionId' => $sessionId, 'scriptSessionId' => $scriptSessionId, ]); ##---------------------------------------------------------------------------------------------------## # dwr.engine.remote.handleCallback("1","0","connector-step3a"); my $redirectConnector; $html=$mechClone->{content}; if($html=~/handleCallback\(\s*["](.*?)["]\s*[,]\s*["](.*?)["]\s*[,]\s*["{](.*?)[}"]\s*\)/is) { $redirectConnector = $3; } if($redirectConnector!~/connector-step3a/is) { trace("A network error occurred during your request. Please try again later."); return; } undef($mechClone); ##---------------------------------------------------------------------------------------------------## my $form1_fields = { 'connector_redirect_to_page' => $redirectConnector, }; $mech->submit_form( form_name => 'loadingrates', fields => $form1_fields); ##---------------------------------------------------------------------------------------------------## my $form5_fields = { 'ben_pkg_choice' => 'All' }; sleep(2); $mech->submit_form( form_name => 'connector_step3a_form', fields => $form5_fields); if ($mech->response->status_line != STATUS_OK) { trace("Error fetching Page 5. Status = ". $mech->response->status_line .". Try after sometime."); return; } ##---------------------------------------------------------------------------------------------------## my $mechClone = $mech->clone(); my $jsURL3='https://www.mahealthconnector.org/portal/dwr/call/plaincall/__System.pageLoaded.dwr'; my $response = $mechClone->post($jsURL3, [ 'callCount' => "1", 'windowName' => "", 'c0-scriptName' => "__System", 'c0-methodName' => "pageLoaded", 'c0-id' => "0", 'batchId' => "0", 'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step4soa%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken", 'httpSessionId' => $sessionId, 'scriptSessionId' => "", ]); ##---------------------------------------------------------------------------## # dwr.engine.remote.handleNewScriptSession("71A70B8E00AB93A125F4D986E5D7B66D"); $html=$mechClone->{content}; if($html=~/handleNewScriptSession\(\s*"(.*?)"\s*\)/is) { $scriptSessionId = $1; } ##---------------------------------------------------------------------------------------------------## my $jsURL2 = "https://www.mahealthconnector.org/portal/dwr/call/plaincall/BrowsePlansDelegate.filterAndSortHealthPlans.dwr"; my $response = $mechClone->post($jsURL2, [ 'callCount' => "1", 'windowName' => "", 'c0-scriptName' => "BrowsePlansDelegate", 'c0-methodName' => "filterAndSortHealthPlans", 'c0-id' => "0", 'c0-param0' => "string:Bronze%7CSilver%7CGold", 'c0-param1' => "string:", 'c0-param2' => "string:", 'c0-param3' => "string:", 'c0-param4' => "string:0", 'batchId' => "1", 'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step4soa%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken", 'httpSessionId' => $sessionId, 'scriptSessionId' => $scriptSessionId, ]); ##---------------------------------------------------------------------------## my $retVal = savePageData($savePage, $mechClone->content()); if ($retVal == 1) { trace("Saved Final Page : $savePage\n"); } else { trace("Error retrieving data for : $savePage\n"); } ##---------------------------------------------------------------------------## undef($mechClone); undef($mech); ##---------------------------------------------------------------------------## }