سؤال

I need a circa 2012 example of how to login to UPS using PHP cURL. I am not closing the session between calls. There are 3 pages to be fetched, 1) The login page 2) The password page and 3) the invoice page

I had it work before, however it doesn't anymore. I deleted the cookie file and it worked for a while, then I get the message "Your current request has timed out due to inactivity. You will need to restart your request." If I don't login within a window it times out even on a successful login. I tried deleting the cookie file and starting again and that didn't work. Any ideas how to make it so the timeout window is infinite? Here's the code I have, credentials removed:

              $cookie_file_path = "/tmp/cookie.txt";
              // remove previous cookie
              if (file_exists($cookie_file_path)) {
            `rm -fr {$cookie_file_path}`;
              } 
            $login_url = 'https://www.ups.com/one-to-one/login';
            $password_url = 'https://www.ups.com/one-to-one/password';
            $invoice_url = 'upsDOTcomSLASHviewbillSLASHinvoices';
            $agent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0";

            $login_data = "sysid=null&lang=null&langc=null&method=null&returnto=null&loc=en_US&uid=<user_id>&rememberMe=1&next=Next&pm_fp=version%253D1%2526pm%255Ffpua%253Dmozilla%252F5%252E0%2520%2528windows%2520nt%25206%252E1%253B%2520wow64%253B%2520rv%253A10%252E0%2529%2520gecko%252F20100101%2520firefox%252F10%252E0%257C5%252E0%2520%2528Windows%2529%257CWin32%2526pm%255Ffpsc%253D24%257C1920%257C1200%257C1160%2526pm%255Ffpsw%253D%257Cqt6%257Cqt5%257Cqt4%257Cqt3%257Cqt2%257Cqt1%257Cswf%257Cpdf%257Cpdf%2526pm%255Ffptz%253D%252D5%2526pm%255Ffpln%253Dlang%253Den%252DUS%257Csyslang%253D%257Cuserlang%253D%2526pm%255Ffpjv%253D1%2526pm%255Ffpco%253D1";
            $password_data = "sysid=null&lang=null&langc=null&method=null&returnto=null&loc=en_US&password=<password>&next=Log+In&pm_fp=version%253D1%2526pm%255Ffpua%253Dmozilla%252F5%252E0%2520%2528windows%2520nt%25206%252E1%253B%2520wow64%253B%2520rv%253A10%252E0%2529%2520gecko%252F20100101%2520firefox%252F10%252E0%257C5%252E0%2520%2528Windows%2529%257CWin32%2526pm%255Ffpsc%253D24%257C1920%257C1200%257C1160%2526pm%255Ffpsw%253D%257Cqt6%257Cqt5%257Cqt4%257Cqt3%257Cqt2%257Cqt1%257Cswf%257Cpdf%257Cpdf%2526pm%255Ffptz%253D%252D5%2526pm%255Ffpln%253Dlang%253Den%252DUS%257Csyslang%253D%257Cuserlang%253D%2526pm%255Ffpjv%253D1%2526pm%255Ffpco%253D1";

            $headers[] = "Accept: */*";
            $headers[] = "Connection: Keep-Alive";
            $headers[] = "Content-Type: application/x-www-form-urlencoded";
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $login_url);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
            curl_setopt($ch, CURLOPT_USERAGENT, $agent);
            curl_setopt($ch, CURLOPT_POST, 1); 
            curl_setopt($ch, CURLOPT_POSTFIELDS, $login_data); 
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_REFERER, 'https://www.ups.com/myups/login'); 
            curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
            curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
            ob_start();
            $result = curl_exec ($ch);
            ob_end_clean();
            echo curl_error($ch);   // prints nothing if successful
            //curl_close($ch);


            //$ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $password_url);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
            curl_setopt($ch, CURLOPT_HEADER, 1);
            curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
            curl_setopt($ch, CURLOPT_POST, 1); 
            curl_setopt($ch, CURLOPT_POSTFIELDS, $password_data); 
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
            curl_setopt($ch, CURLOPT_REFERER, $login_url); 
            curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
            curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
            ob_start();
            $result = curl_exec ($ch);
            ob_end_clean();
            echo curl_error($ch)        // prints nothing if successful
            //curl_close($ch);


            //$ch = curl_init();
           curl_setopt($ch, CURLOPT_URL, $invoice_url);
           curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/html; charset=utf-8'));
           curl_setopt($ch, CURLOPT_HEADER, 1);
            curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
            curl_setopt($ch, CURLOPT_POST, 1); 
            curl_setopt($ch, CURLOPT_POSTFIELDS, $invoice_data); 
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
            curl_setopt($ch, CURLOPT_REFERER, $password_url);
            curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
            curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
            ob_start(); 
            $result = curl_exec ($ch);
            ob_end_clean();
            echo curl_error($ch);       // prints nothing if successful
            curl_close($ch);

I can't get past the first login page even after deleting and re-creating cookie file, as I get:

Your current request has timed out due to inactivity. You will need to restart your request.

Any help is appreciated.

هل كانت مفيدة؟

المحلول

  1. Try connecting from another server. Maybe you got blacklisted.
  2. Play with CURLOPT_FRESH_CONNECT or CURLOPT_FORBID_REUSE curl options.
  3. Visit login page before submiting the post data

نصائح أخرى

yes I was bored, but here is why you shouldn't be doing it.

1.2 f of UPS Technology Agreement:

Automated Access. Without limitation, any access to the UPS Systems or hosted UPS Technology by automated inquiry devices, robots, or repetitive data gathering and extraction tools, routines, scripts or other mechanisms with similar functionality that itself is not UPS Technology licensed for such purposes hereunder is expressly prohibited.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top