2012-02-14 88 views
0

我需要一個大約2012年的如何使用PHP cURL登錄到UPS的示例。我不打電話之間的會話。有3頁要提取,1)登錄頁面2)密碼頁面和3)發票頁面如何使用php cURL登錄到UPS.com

我以前工作過,但它不再。我刪除了這個cookie文件,並且它工作了一段時間,然後我收到消息「您的當前請求由於不活動而超時了,您將需要重新啓動您的請求。」如果我沒有在窗口內登錄,即使登錄成功,也會超時。我嘗試刪除cookie文件並重新開始,並沒有工作。任何想法如何使它超時窗口是無限的?這裏有我有,憑證刪除代碼:

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

我不能讓過去的第一個登錄頁面,甚至刪除並重新創建的cookie文件後,我得到:

您當前的請求已超時由於不活動。您將需要重新啓動您的請求。

任何幫助表示讚賞。

+0

看起來違背了服務條款起坐做到這一點。 – 2012-02-14 01:01:53

+0

UPS確實有這樣的API的API,你知道。 – 2012-02-14 01:22:39

回答

1
  1. 嘗試從其他服務器連接。也許你被列入黑名單。
  2. CURLOPT_FRESH_CONNECTCURLOPT_FORBID_REUSE捲曲選項。 submiting後數據之前
  3. 訪問登陸頁面
0

是的,我很無聊,但這就是爲什麼你不應該這樣做。

1.2˚FUPS技術協議:

自動訪問。沒有任何限制,任何通過自動查詢設備,機器人或 託管的UPS技術訪問UPS系統或 重複數據收集和提取工具,例程,腳本或具有類似功能的其他機制本身不是UPS 以下目的明文禁止使用 。

+0

啊,好吧,不知道。好吧,不幸的是我必須手動完成。他們沒有這個API,順便說一句。他們有一個跟蹤和評級API,但他們沒有開發票API。我很欣賞這些反饋。 – user1207994 2012-02-14 01:28:37

+0

我不爲他們工作,無論如何,我都不會告訴他們:-) – 2012-02-14 01:32:04