2012-02-14 1 views
0

J'ai besoin d'un exemple de comment se connecter à UPS en utilisant PHP cURL. Je ne ferme pas la session entre les appels. Il y a 3 pages à chercher, 1) La page de connexion 2) La page de mot de passe et 3) la page de facturecomment se connecter à UPS.com avec php cURL

Je l'ai déjà fait fonctionner, mais ce n'est plus le cas. J'ai supprimé le fichier cookie et cela a fonctionné pendant un certain temps, puis j'ai reçu le message "Votre demande actuelle a expiré en raison de l'inactivité.Vous devrez redémarrer votre demande." Si je ne me connecte pas dans une fenêtre, cela expire même après une connexion réussie. J'ai essayé de supprimer le fichier de cookie et de recommencer et cela n'a pas fonctionné. Des idées comment faire pour que la fenêtre de temporisation soit infinie? Voici le code que je l'ai, les informations d'identification supprimées:

   $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); 

Je ne peux pas aller au-delà de la première page de connexion, même après la suppression et la création de nouveau fichier cookie, que je reçois:

Votre demande actuelle a expiré en raison de l'inactivité. Vous devrez redémarrer votre demande.

Toute aide est appréciée.

+0

ressemble à elle viole les hauts termes de service pour le faire. –

+0

UPS a une API pour de telles choses, vous savez. –

Répondre

1
  1. Essayez de vous connecter à partir d'un autre serveur. Peut-être que vous avez une liste noire.
  2. Jouer avec CURLOPT_FRESH_CONNECT ou CURLOPT_FORBID_REUSE options curl.
  3. Consulter la page de connexion avant de soumettre les données post
0

oui Je m'ennuyais, mais voici pourquoi vous ne devriez pas le faire.

1,2 f UPS Accord sur les technologies:

accès automatisé. Sans limitation, tout accès aux systèmes UPS ou hébergé la technologie UPS par des dispositifs automatisés d'interrogation, des robots, ou des outils de collecte et d'extraction de données répétitives, des routines, des scripts ou d'autres mécanismes avec des fonctionnalités similaires qui ne sont pas elles-mêmes UPS fins ci-dessous est expressément interdite.

+0

Ah, d'accord, je ne savais pas. Eh bien, malheureusement, je vais devoir le faire manuellement alors. Ils n'ont pas d'API pour cela, btw. Ils ont une API de suivi et d'évaluation, mais ils n'ont pas d'API de facturation. J'apprécie les commentaires. – user1207994

+0

Je ne travaille pas pour eux, je ne leur dirai pas si tu le fais quand même :-) –

Questions connexes