繁体   English   中英

PHP cURL cookie阻止

[英]PHP cURL cookies blocking

<?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被某种东西挡住了。

它显示的消息:您的Web浏览器设置阻止了cookie。

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

我已经确认我的浏览器设置可以接受Cookie访问。

另外,我检查了cookies.txt文件中是否包含内容,因此可以正确访问cookies.txt。

所以....这个问题出了什么问题? 我使用的代码正确吗? 谢谢大家的帮助。

尝试将代理修改为类似的内容;

'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,然后以你有。

您可以在浏览器中进行尝试,导航到eBay登录页面,清除cookie,然后登录。 您将得到浏览器不支持cookie错误。

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

另一方面,如果eBay工程师很聪明,他们会阻止此操作,那么您可能应该这样做,这就是Ebay API的目的。

还有一点提示,请使用HTTP客户端库,在纯cURL中执行此类操作是一个皮塔饼,并且会给出一些非常糟糕且无法读取的代码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM