Help on cURL POST to remote page with javascript

Discussion in 'PHP' started by andreevpopov, Aug 7, 2010.

  1. #1
    Hi all,

    I am new here and I really thank God that I found this forum! I have read the materials here on working with cURL on javascript-form-submission pages. However, I can't to get my script to work. Can anybody here please help me out or drop me a hint on where to correct my script?

    ==Situation==

    My company utilizes www[dot]myfax[dot]com[slash]free[slash] to send our company faxes. My task is to write a code that would submit files for faxes electronically.

    Note: The site also requires e-mail confirmation but I haven't get to that stage yet. I have run tests on submitting fax requests both by code and manually through the site, and have confirmed that the code doesn't work on the submission level because I managed to receive confirmation e-mails for manual submissions. Also, I tried my script with different staff email addresses because I figured out that it blocks only the same e-mail address from sending more than 2 faxes a day.

    <?php
    
    //target page url
    $strPage_url = 'www.myfax.com/free/';
    
    //create array of data to be posted
    $arrPost_data = array (
        'ctl00$MainSection$tbRecipientName' => 'I am recipient', //max length = 50
        'ctl00$MainSection$tbRecipientCompany' => 'I am recipient company', //max length = 50
        'ctl00$MainSection$tbRecipientFaxNumber' => '+1 (206) 202-8273', //recipient fax
        'ctl00$MainSection$ddlRecipientCountry' => html_entity_decode ('{&quot;c&quot;:{&quot;i&quot;:&quot;2&quot;,&quot;n&quot;:&quot;United States&quot;,&quot;t&quot;:&quot;1&quot;,&quot;s&quot;:&quot;US&quot;},&quot;m&quot;:{&quot;i&quot;:&quot;1&quot;,&quot;v&quot;:&quot;+1 (###) ###-####&quot;,&quot;d&quot;:&quot;&quot;,&quot;f&quot;:&quot;&quot;,&quot;c&quot;:&quot;&quot;,&quot;r&quot;:&quot;&quot;}}'),
        'ctl00$MainSection$tbSenderName' => 'I am sender', //max length = 50
        'ctl00$MainSection$tbSenderCompany' => 'I am sender company', //max length = 50
        'ctl00$MainSection$tbSenderEmailAddress' => 'abc@example.com', //email
        'ctl00$MainSection$nbAntiSpam$nbAntiSpam_NoBotExtender_ClientState' => '-150', //number drawn from inspecting the packages sent by manual form submission
        'ctl00$MainSection$fileUpload' => '@/files/file.pdf', //file
        'ctl00$MainSection$tbMessage' => 'hello world', //message
        '__EVENTTARGET' => '',
        '__EVENTARGUMENT' => '',
        '__VIEWSTATEENCRYPTED' => ''
        );
    
    //visit the page and get cookies
    $curl_connection = curl_init ($strPage_url);
    curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
    curl_setopt($curl_connection, CURLOPT_REFERER, "http://www.myfax.com/free/");
    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($curl_connection, CURLOPT_COOKIEJAR, 'CURLCOOKIE');
    $strGet_page_contents = curl_exec ($curl_connection);
    curl_close ($curl_connection);
    
        //get page to retrieve view state and event validation
        if ( preg_match ( '/"__VIEWSTATE"[\s]+?value="([\s\S]+?)"/' , $strGet_page_contents , $arrView_state ) ) {
            $strView_state = $arrView_state[1];
            $arrPost_data['__VIEWSTATE'] = $strView_state;
        }
        if ( preg_match ( '/"__EVENTVALIDATION"[\s]+?value="([\s\S]+?)"/' , $strGet_page_contents , $arrEvent_validation ) ) {
            $strEvent_validation = $arrEvent_validation[1];
            $arrPost_data['__EVENTVALIDATION'] = $strEvent_validation;
        }
        if ( preg_match ( '/id="ctl00_MainSection_nbAntiSpam_nbAntiSpam_NoBotExtender_ClientState" value="([\s\S]+?)"/' , $strGet_page_contents , $arrAnti_spam ) ) {
            $strAnti_spam = $arrAnti_spam[1];
            $arrPost_data['ctl00$MainSection$nbAntiSpam$nbAntiSpam_NoBotExtender_ClientState'] = $strAnti_spam;
        }
    
    //traverse array and prepare data for posting (key1=value1)
    foreach ( $arrPost_data as $key => $value) {
        $arrPost_items[] = $key . '=' . $value;
    }
    
    //create the final string to be posted using implode()
    $strPost_string = implode ('&', $arrPost_items);
    
    //create cURL connection
    $curl_connection = curl_init($strPage_url);
    
    //set options
    curl_setopt ($curl_connection, CURLOPT_POST, 1);
    curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
    curl_setopt($curl_connection, CURLOPT_REFERER, "http://www.myfax.com/free/");
    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
    //set cookie
    curl_setopt ($curl_connection, CURLOPT_COOKIEFILE, 'CURLCOOKIE');
    unlink ( 'CURLCOOKIE' );
    curl_setopt($curl_connection, CURLOPT_COOKIE, session_name() . '=' . session_id());
    //set header
    $arrHeaders = array ( 'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8' );
    curl_setopt($curl_connection, CURLOPT_HTTPHEADER, $arrHeaders );
    
    //set data to be posted
    curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $strPost_string);
    
    //perform our request
    $strResult = curl_exec($curl_connection);
    
    //show information regarding the request - for debugging
    echo "<pre>";
    print_r(curl_getinfo($curl_connection));
    echo curl_errno($curl_connection) . '-' . curl_error($curl_connection);
    echo "<hr>";
    var_dump ($arrPost_items);
    echo "</pre>";
    
    //close the connection
    curl_close($curl_connection);
    ?> 
    PHP:
     
    andreevpopov, Aug 7, 2010 IP
  2. happpy

    happpy Well-Known Member

    Messages:
    926
    Likes Received:
    14
    Best Answers:
    0
    Trophy Points:
    120
    #2
    you must escape the "$" in the post data. otherwise they get interpreted
     
    happpy, Aug 9, 2010 IP
  3. andreevpopov

    andreevpopov Peon

    Messages:
    4
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3

    Thanks a lot happpy! You pointed out a fundamental error in my script :rolleyes:

    I updated my script accordingly, and polished out some useless lines of code, but I still couldn't get it to work. I did a watch on the packets sent by the webpage on normal use and I found that it had the following cookies.

    [output from Wireshark]
    Cookie: __utmz=88471047.1280829735.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SSLB=1; SSID=AgB6lCkAAAAAJ-lXTKasAQEn6VdMCgApI2BMAAAAAAAAAAApI2BMAQAJAAAAygAAAAA; SSSC=1.G5501121823586233510.10.9.202; SSRT=KSNgTAE; ASP.NET_SessionId=hjscdafaki3d3m45fngdpmft; ProtusIPSolutions=4211124416.23808.0000; __utma=88471047.1550346862.1280829735.1281355449.1281368864.10; __utmc=88471047; __utmb=88471047.2.10.1281368864
    
    Code (markup):
    However, only the cookies " ASP.NET_SessionId" and "ProtusIPSolutions" are present when I access the page through cURL:

    [headers captured from cURL script, line 41-46 below in PHP script]
    
    Set-Cookie: ASP.NET_SessionId=lubhg1i52no5gz45pgwh4ly3; path=/; HttpOnly
    Set-Cookie: ProtusIPSolutions=4211124416.23808.0000; expires=Mon, 09-Aug-2010 17:56:00 GMT; path=/
    
    Code (markup):
    I'm not sure if those cookies are the key to the my problem, though.
    Would someone please help me on the code and drop me a hint to point me in the right direction? Many thanks!

    <?php
    //target page url
    $strPage_url = 'www.myfax.com/free/';
    
    //create array of data to be posted
    $arrPost_data = array (
    	'ctl00$MainSection$tbRecipientName' => 'Recipient', //max length = 50
    	'ctl00$MainSection$tbRecipientCompany' => 'RecipientCompany', //max length = 50
    	'ctl00$MainSection$tbRecipientFaxNumber' => '+1 (206) 202-8273', //recipient fax
    	'ctl00$MainSection$ddlRecipientCountry' => html_entity_decode ('{&quot;c&quot;:{&quot;i&quot;:&quot;2&quot;,&quot;n&quot;:&quot;United States&quot;,&quot;t&quot;:&quot;1&quot;,&quot;s&quot;:&quot;US&quot;},&quot;m&quot;:{&quot;i&quot;:&quot;1&quot;,&quot;v&quot;:&quot;+1 (###) ###-####&quot;,&quot;d&quot;:&quot;&quot;,&quot;f&quot;:&quot;&quot;,&quot;c&quot;:&quot;&quot;,&quot;r&quot;:&quot;&quot;}}'), //
    	'ctl00$MainSection$tbSenderName' => 'Sender', //max length = 50
    	'ctl00$MainSection$tbSenderCompany' => 'SenderCompany', //max length = 50
    	'ctl00$MainSection$tbSenderEmailAddress' => 'abc@example.com', //email
    	'ctl00$MainSection$fileUpload' => '@/files/file.pdf', //file
    	'ctl00$MainSection$tbMessage' => 'hello world!',//message
    	'__EVENTTARGET' => '',
    	'__EVENTARGUMENT' => '',
    	'__VIEWSTATEENCRYPTED' => '',
    	'ctl00$MainSection$meeRecipientFaxNumber_ClientState' => '',
    	'ctl00$MainSection$tbFriend1' => '',
    	'ctl00$MainSection$tbFriend2' => '',
    	'ctl00$MainSection$tbFriend3' => '',
    	'ctl00$MainSection$ibSendFax.x' => 39, //? unknown number
    	'ctl00$MainSection$ibSendFax.y' => 17, //? unknown number
    	'ctl00$MainSection$hfRecipientFaxNumber' => 12062028273,
    	'ctl00$MainSection$hfRecipientFaxNumberMask' => '+1 (999) 999-9999',
    	'ctl00$MainSection$hfRecipientFaxNumberCountryId' => 2,
    	'ctl00$MainSection$hfRecipientFaxNumberMaskId' => 1,
    	'ctl00$MainSection$hfTimeZone' => '-480',
    	'ctl00$MainSection$hfModalMessage' => '',
    	'hiddenInputToUpdateATBuffer_CommonToolkitScripts' => 1 //?
    	);
    
    //visit the page and get cookies
    $curl_connection = curl_init ($strPage_url);
    curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
    curl_setopt($curl_connection, CURLOPT_REFERER, "http://www.myfax.com/free/");
    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
    curl_setopt ($curl_connection, CURLOPT_COOKIEJAR, 'CURLCOOKIE');
    curl_setopt($curl_connection, CURLOPT_HEADER, true);
    $strGet_page_contents = curl_exec ($curl_connection);
    
    //log the page
    $fhGet_page = fopen ( 'Get_page.html' , 'w' );
    fwrite ( $fhGet_page , $strGet_page_contents );
    fclose ( $fhGet_page );
    
    //several variables unique to each visit
    	if ( preg_match ( '/"__VIEWSTATE"[\s]+?value="([\s\S]+?)"/' , $strGet_page_contents , $arrView_state ) ) {
    		$strView_state = $arrView_state[1];
    		$arrPost_data['__VIEWSTATE'] = $strView_state;
    	}
    	if ( preg_match ( '/"__EVENTVALIDATION"[\s]+?value="([\s\S]+?)"/' , $strGet_page_contents , $arrEvent_validation ) ) {
    		$strEvent_validation = $arrEvent_validation[1];
    		$arrPost_data['__EVENTVALIDATION'] = $strEvent_validation;
    	}
    	if ( preg_match ( '/AjaxControlToolkit\.NoBotBehavior, \{"ChallengeScript":"~([\d]+?)"/' , $strGet_page_contents , $arrAnti_spam ) ) {
    		$strAnti_spam = $arrAnti_spam[1];
    		$intAnti_spam_value = ~intval($strAnti_spam);
    		$arrPost_data['ctl00$MainSection$nbAntiSpam$nbAntiSpam_NoBotExtender_ClientState'] = $intAnti_spam_value;
    	}
    
    //escape the $'s
    foreach ( $arrPost_data as $key => $value ) {
    	$strNew_key = str_replace ( '$' , '\$' , $key );
    	$strNew_value = str_replace ( '$' , '\$' , $value );
    	$arrPost_data[$strNew_key] = $strNew_value;
    	if ( $strNew_key != $key ) {
    		unset ( $arrPost_data[$key] );
    	}
    }
    
    //traverse array and prepare data for posting (key1=value1)
    foreach ( $arrPost_data as $key => $value) {
    	$arrPost_items[] = urlencode ( $key ) . '=' . urlencode ( $value );
    }
    
    //create the final string to be posted using implode()
    $strPost_string = implode ('&', $arrPost_items);
    
    //create cURL connection
    $curl_connection = curl_init($strPage_url);
    
    //set options
    curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
    curl_setopt($curl_connection, CURLOPT_REFERER, "http://www.myfax.com/free/");
    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_connection, CURLOPT_HEADER, true);
    
    //set cookie
    curl_setopt ($curl_connection, CURLOPT_COOKIEFILE, 'CURLCOOKIE');
    unlink ( 'CURLCOOKIE' );
    
    //set header
    $arrHeaders = array ( 'Host' => 'www.myfax.com', 'Origin' => 'http://www.myfax.com' );
    curl_setopt($curl_connection, CURLOPT_HTTPHEADER, $arrHeaders );
    
    //set data to be posted
    curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $strPost_string);
    
    //perform our request
    $strPost_page_contents = curl_exec($curl_connection);
    
    //log the POST-resulting page
    $fhPost_page = fopen ( 'Post_page.html' , 'w' );
    fwrite ( $fhPost_page , $strPost_page_contents );
    fclose ( $fhPost_page );
    
    //show information regarding the request
    echo "<pre>";
    print_r(curl_getinfo($curl_connection));
    echo curl_errno($curl_connection) . '-' . curl_error($curl_connection);
    echo "<hr>";
    var_dump ($strPost_string);
    echo "</pre>";
    
    //close the connection
    curl_close($curl_connection);
    ?>
    
    PHP:
     
    andreevpopov, Aug 9, 2010 IP
  4. andreevpopov

    andreevpopov Peon

    Messages:
    4
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #4
    I updated my script but I still couldn't get the script to work. What I mean by this is that -

    when I use a browser to open the page and submit a fax, I would receive a confirmation email with a "confirmation link" in it. This is what I expect would happen if the script runs successfully. However, so far I have received no confirmation emails after using the script to submit my fax. Hence, I am still debugging the script to try to get it to work.

    Would someone please point me in the right direction please? Many thanks!

    Further details:

    (1) my updated script

    <?php
    //target page url
    $strPage_url = 'http://www.myfax.com/free/';
    
    //create array of data to be posted
    $arrPost_data = array (
    	'ctl00$MainSection$tbRecipientName' => 'Recipient', // max length = 50
    	'ctl00$MainSection$tbRecipientCompany' => 'RecipientCompany', //max length = 50
    	'ctl00$MainSection$tbRecipientFaxNumber' => '+1 (206) 202-8273', //recipient fax
    	'ctl00$MainSection$ddlRecipientCountry' => html_entity_decode ('{&quot;c&quot;:{&quot;i&quot;:&quot;2&quot;,&quot;n&quot;:&quot;United States&quot;,&quot;t&quot;:&quot;1&quot;,&quot;s&quot;:&quot;US&quot;},&quot;m&quot;:{&quot;i&quot;:&quot;1&quot;,&quot;v&quot;:&quot;+1 (###) ###-####&quot;,&quot;d&quot;:&quot;&quot;,&quot;f&quot;:&quot;&quot;,&quot;c&quot;:&quot;&quot;,&quot;r&quot;:&quot;&quot;}}'),
    	'ctl00$MainSection$tbSenderName' => 'Sender', //max length = 50
    	'ctl00$MainSection$tbSenderCompany' => 'SenderCompany', //max length = 50
    	'ctl00$MainSection$tbSenderEmailAddress' => 'abc@example.com', //email
    	'ctl00$MainSection$fileUpload' => '@/files/file.pdf', //file
    	'ctl00$MainSection$tbMessage' => 'hello world!', //message
    	'ctl00$MainSection$ibSendFax.x' => mt_rand ( 1 , 182 ),
    	'ctl00$MainSection$ibSendFax.y' => mt_rand ( 1 , 40 ),
    	'__EVENTTARGET' => '',
    	'__EVENTARGUMENT' => '',
    	'__VIEWSTATEENCRYPTED' => '',
    	'ctl00$MainSection$meeRecipientFaxNumber_ClientState' => '',
    	'ctl00$MainSection$tbFriend1' => '',
    	'ctl00$MainSection$tbFriend2' => '',
    	'ctl00$MainSection$tbFriend3' => '',
    	'ctl00$MainSection$hfRecipientFaxNumber' => 12062028273,
    	'ctl00$MainSection$hfRecipientFaxNumberMask' => '+1 (999) 999-9999',
    	'ctl00$MainSection$hfRecipientFaxNumberCountryId' => 2,
    	'ctl00$MainSection$hfRecipientFaxNumberMaskId' => 1,
    	'ctl00$MainSection$hfTimeZone' => '-480',
    	'ctl00$MainSection$hfModalMessage' => '',
    	'hiddenInputToUpdateATBuffer_CommonToolkitScripts' => 0
    	);
    
    //several variables unique to each visit
    	if ( preg_match ( '/"__VIEWSTATE"[\s]+?value="([\s\S]+?)"/' , $strGet_page_contents , $arrView_state ) ) {
    		$strView_state = $arrView_state[1];
    		$arrPost_data['__VIEWSTATE'] = $strView_state; //
    	}
    	if ( preg_match ( '/"__EVENTVALIDATION"[\s]+?value="([\s\S]+?)"/' , $strGet_page_contents , $arrEvent_validation ) ) {
    		$strEvent_validation = $arrEvent_validation[1];
    		$arrPost_data['__EVENTVALIDATION'] = $strEvent_validation; //
    	}
    	if ( preg_match ( '/AjaxControlToolkit\.NoBotBehavior, \{"ChallengeScript":"~([\d]+?)"/' , $strGet_page_contents , $arrAnti_spam ) ) {
    		$strAnti_spam = $arrAnti_spam[1];
    		$intAnti_spam_value = ~intval($strAnti_spam);
    		$arrPost_data['ctl00$MainSection$nbAntiSpam$nbAntiSpam_NoBotExtender_ClientState'] = $intAnti_spam_value; //
    	}
    
    //preparing data for posting
    	foreach ( $arrPost_data as $key => $value ) {
    		//1. escape the $'s
    		$strNew_key = str_replace ( '$' , '\$' , $key );
    		$strNew_value = str_replace ( '$' , '\$' , $value );
    		//2. urlencode
    		$strNew_key = urlencode ( $strNew_key );
    		$strNew_value = urlencode ( $strNew_value );
    		$arrPost_data[$strNew_key] = $strNew_value;
    		if ( $strNew_key != $key ) {
    			unset ( $arrPost_data[$key] );
    		}
    	}
    
    //set page url
    $curl_connection = curl_init ($strPage_url);
    
    //set curl options
    curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729)");
    curl_setopt($curl_connection, CURLOPT_REFERER, "http://www.myfax.com/free/");
    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_connection, CURLOPT_COOKIEJAR, 'CURLCOOKIE');
    curl_setopt($curl_connection, CURLOPT_HEADER, true);
    curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
    
    //visit page to get cookies
    $strGet_page_contents = curl_exec ($curl_connection);
    
    //log page
    $fhGet_page = fopen ( 'Get_page.html' , 'w' );
    fwrite ( $fhGet_page , $strGet_page_contents );
    fclose ( $fhGet_page );
    
    //2nd curl connection
    
    //set headers: mimic a firefox connection
    $arrHeaders = array (
    	'Host: www.myfax.com',
    	'Origin: http://www.myfax.com',
    	'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    	'Accept-Language: en-us,en;q=0.5',
    	'Accept-Encoding: gzip,deflate',
    	'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
    	'Keep-Alive: 115',
    	'Connection: keep-alive'
    	);
    curl_setopt($curl_connection, CURLOPT_HTTPHEADER, $arrHeaders );
    
    //set data to be posted
    curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $arrPost_data);
    
    //display headers
    curl_setopt($curl_connection, CURLINFO_HEADER_OUT, true);
    
    //post to page
    $strPost_page_contents = curl_exec($curl_connection);
    
    //log the page
    $fhPost_page = fopen ( 'Post_page.html' , 'w' );
    fwrite ( $fhPost_page , $strPost_page_contents );
    fclose ( $fhPost_page );
    
    //show information regarding the request
    echo "<pre>";
    print_r(curl_getinfo($curl_connection, CURLINFO_HEADER_OUT));
    echo curl_errno($curl_connection) . '-' . curl_error($curl_connection);
    
    //close the connection
    curl_close($curl_connection);
    ?>
    PHP:
    (2) output from my script

    POST /free/ HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729)
    Referer: http://www.myfax.com/free/
    Cookie: ProtusIPSolutions=4211124416.20992.0000; ASP.NET_SessionId=yez3aw55s03jsv45412qbb45
    Host: www.myfax.com
    Origin: http://www.myfax.com
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us,en;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive
    Content-Length: 3737
    Expect: 100-continue
    Content-Type: multipart/form-data; boundary=----------------------------9add31cf2d64
    
    0-
    Code (markup):
     
    andreevpopov, Aug 13, 2010 IP
  5. andreevpopov

    andreevpopov Peon

    Messages:
    4
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #5
    (3) a normal POST request, captured from Wireshark

    POST /free/ HTTP/1.1
    Host: www.myfax.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729)
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us,en;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 115
    Connection: keep-alive
    Referer: http://www.myfax.com/free/
    Cookie: SSID=AgABRCkIAAAAM3ZQTGq1DAEzdlBMGgAAAAAA5jRdTAAAAAB6hWJMAAAAAAAAAAAAAAAJAAAAM3ZQTA; SSRT=241iTAE; __utma=88471047.1847435192.1280341560.1281500199.1281525105.28; __utmz=88471047.1281176797.15.8.utmcsr=forums.devnetwork.net|utmccn=(referral)|utmcmd=referral|utmcct=/viewtopic.php; __utma=1.873224143.1280342275.1281110208.1281114508.6; __utmz=1.1281114508.6.4.utmcsr=cogito-lab.com|utmccn=(referral)|utmcmd=referral|utmcct=/auto_fax.php; velaroret1336=5; myfaxAff=aid=AFCJ; AffiliateID=AFCJ; SSLB=1; SSSC=1.G5499025106452395370.26.0.0; ASP.NET_SessionId=r2tlytvtzmxc2345wltujo2v; ProtusIPSolutions=4211124416.23552.0000; __utmb=88471047.10.10.1281525105; __utmc=88471047
    Content-Type: multipart/form-data; boundary=---------------------------162821245525734
    Content-Length: 148474
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="__EVENTTARGET"
    
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="__EVENTARGUMENT"
    
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="__VIEWSTATE"
    
    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
    -----------------------------162821245525734
    Content-Disposition: form-data; name="__VIEWSTATEENCRYPTED"
    
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="__EVENTVALIDATION"
    
    KIERL6+Sc+++cILAxQvrHn0Hk2XYcu/lEql4ige5KP7t1Bo01nOliNfci+COsWSv0edaQ9M2J7D3X1KgIcmo1rUYYI9QGAfsiSL5S56Gl+tsyfQL42TxViyxp7IPGWg3SnWNdgB3aHbc43iS8gMrKujFLoO1J6W1tEa+3+NwouWA2sqdwa3PUL678qS3t/NtzEFraYfy6q9WX53xjlFgKJwLgl6J2uR1ZkDlqWYs+eN4I4jqrBn01db2sgNor3hTl2iS4B/ANmvxdNh/AsEVjBXWDLy6lk08ry7UHOUHqHeUq337BoxFgejcw4Xpwtdi0DTDnL8jD4rz6PnbzvB5dilE5jGvO2ib2mtpPjVs+GhsL/Pa6dJVcQ9MF1oS/OtR+qDH4itQ46+lJZ+RwVjmorTs3hzgO8Dxjy30u0RvU/SxCRMafDGJ6Dq2uNvKxzwFze+H+yHiuXHOcpeXV0Kj95I1+bRwRfKfabHmcYZ/xod+/UJ/U+SE5h5acAPYsTbVnd3u+cdPJq75nKoOKCO0VQ==
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$nbAntiSpam$nbAntiSpam_NoBotExtender_ClientState"
    
    -241
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbRecipientName"
    
    Recipient
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbRecipientCompany"
    
    RecipientCompany
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$ddlRecipientCountry"
    
    {"c":{"i":"2","n":"United States","t":"1","s":"US"},"m":{"i":"1","v":"+1 (###) ###-####","d":"","f":"","c":"","r":""}}
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbRecipientFaxNumber"
    
    +1 (206) 202-8273
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$meeRecipientFaxNumber_ClientState"
    
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbSenderName"
    
    Sender
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbSenderCompany"
    
    SenderCompany
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbSenderEmailAddress"
    
    abc@example.com
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$fileUpload"; filename="file.pdf"
    Content-Type: application/pdf
    
    [PDF DETAILS REMOVED TO SAVE SPACE]
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbMessage"
    
    helloworld
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbFriend1"
    
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbFriend2"
    
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$tbFriend3"
    
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$ibSendFax.x"
    
    84
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$ibSendFax.y"
    
    6
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$hfRecipientFaxNumber"
    
    12062028273
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$hfRecipientFaxNumberMask"
    
    +1 (999) 999-9999
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$hfRecipientFaxNumberCountryId"
    
    2
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$hfRecipientFaxNumberMaskId"
    
    1
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$hfTimeZone"
    
    -480
    -----------------------------162821245525734
    Content-Disposition: form-data; name="ctl00$MainSection$hfModalMessage"
    
    
    -----------------------------162821245525734
    Content-Disposition: form-data; name="hiddenInputToUpdateATBuffer_CommonToolkitScripts"
    
    0
    -----------------------------162821245525734--
    
    Code (markup):
     
    andreevpopov, Aug 13, 2010 IP