2012-07-09 150 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错误的浏览器。