PHP cURL cookies阻塞

时间:2012-07-09 07:45:44

标签: php curl libcurl

<?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;    ?>

我是cURL的新玩家......

我现在使用此代码登录ebay。

现在的问题是它告诉我它已被某些东西阻止的cookie。

显示的消息:您的网络浏览器设置阻止了Cookie。

我使用firefox进行测试,并尝试了其他浏览器也遇到了同样的问题。

我已确认我的浏览器设置已被接受以进行Cookie访问。

另外,我已经检查过cookies.txt文件中有conntent,这意味着cookies.txt可以正确访问。

那么....这个问题有什么问题?我用的代码是正确的吗? 谢谢大家的帮助。

2 个答案:

答案 0 :(得分: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,然后登录。 您将获得浏览器不支持cookie错误。

答案 1 :(得分:0)

你需要了解一些事情,那就是用curl通过php做HTTP请求与你的浏览器无关。您访问的网站并不关心您使用什么浏览器来运行php脚本。实际请求由您的服务器完成,而不是由您的浏览器完成。

另一方面,如果eBay工程师很聪明他们会阻止这个,你可能不应该做这样的事情,这就是Ebay API's的用途。

还有一点提示,使用HTTP客户端库,在普通的cURL中执行这样的操作是一个皮塔饼,并提供了一些非常糟糕且难以理解的代码。

例如,检查https://github.com/guzzle/guzzle