2012-07-09 128 views
-1
<?php 

$ebay_user_id = "id"; // Please set your Ebay ID 
$ebay_user_password = "password"; // Please set your Ebay Password 
$cookie_file_path = dirname(__FILE__).'/cookie.txt'; // Please set your Cookie File path 

$LOGINURL = "http://signin.ebay.com/aw-cgi/eBayISAPI.dll?SignIn"; 
$agent = "Mozilla/4.0 (compatible;)"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$LOGINURL); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
$result = curl_exec ($ch); 
curl_close ($ch); 

$LOGINURL = "http://signin.ebay.com/aw-cgi/eBayISAPI.dll"; 
$POSTFIELDS = 'MfcISAPICommand=SignInWelcome&siteid=0&co_partnerId=2&UsingSSL=0&ru=&pp=&pa1=&pa2=&pa3=&i1=-1&pageType=-1&userid='. $ebay_user_id .'&pass='. $ebay_user_password; 
$reffer = "http://signin.ebay.com/aw-cgi/eBayISAPI.dll?SignIn"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$LOGINURL); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$POSTFIELDS); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_REFERER, $reffer); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
$result = curl_exec ($ch); 
curl_close ($ch); 
print $result; ?> 

我真的上捲曲的新球員...PHP捲曲的cookie阻塞

我有這樣的代碼現在使用登錄到易趣。

現在的問題是它告訴我它被某些東西阻塞的cookie。

它顯示的消息:您的網絡瀏覽器設置阻止了Cookie。

我使用Firefox進行測試,並嘗試其他瀏覽器也得到了相同的問題。

我確認我的瀏覽器設置已被接受用於cookie訪問。

此外,我檢查了cookie.txt文件內有內容,這意味着cookie.txt可以正確訪問。

那麼....這個問題有什麼問題?我使用的代碼是正確的? 謝謝大家的幫助。

+0

它可能是ebay發送另一個cookie與JavaScript以防止自動化,但我不知道。比較登錄後的cookies與真實瀏覽器以及cookies.txt中的cookies – MilMike 2012-07-09 07:55:41

+0

哦,如果我打電話給腳本並檢查輸出,我必須輸入驗證碼... – MilMike 2012-07-09 07:58:18

回答

0

你需要了解一些東西,那就是通過php做curl的HTTP請求與瀏覽器無關。您訪問的網站並不在乎您使用哪種瀏覽器來運行php腳本。實際的請求由您的服務器完成,而不是由您的瀏覽器完成。另一方面,如果eBay的工程師很聰明,他們會阻止這種情況發生,你可能不應該這樣做,這就是Ebay API's的作用。

有一點小技巧,使用HTTP客戶端庫,在普通cURL中這樣做是一個皮塔餅,並給出了一些非常糟糕和不可讀的代碼。

檢查https://github.com/guzzle/guzzle例如。

+0

您的意思是使用curl不適合登錄?在這種情況下,我只想使用curl將登錄數據發佈到身份驗證頁面並讓其進行身份驗證。如果沒有,有沒有辦法在PHP中做這樣的事情? – user1264222 2012-07-09 08:22:02

+1

沒有捲曲是完美的,這只是eBay可能不希望工具登錄到他們的網頁前端,這不是網絡前端的目的。 Web前端是爲真正的用戶在計算機登錄後製作的。如果您製作的軟件能夠以某種方式自動化eBay,則應該使用他們的API,而不是假裝成真正的用戶。 – ChrisR 2012-07-09 08:32:10

3

嘗試修改代理類似的東西;

'Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1' 

編輯:其實我認爲這個問題是你需要首先查詢登錄頁面, 第一次訪問「http://signin.ebay.com/aw-cgi/eBayISAPI.dll?SignIn」 這將設置Cookie,然後登錄你有。

您可以在瀏覽器中試用,導航至易趣登錄頁面, 清除您的Cookie並登錄。 你會得到不支持cookies錯誤的瀏覽器。