【问题标题】:PHP cURL cookies blockingPHP cURL cookie 阻止
【发布时间】:2012-07-09 07:45:44
【问题描述】:
<?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 文件中有内容,这意味着 cookies.txt 可以正确访问。

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

【问题讨论】:

  • 可能是 ebay 正在发送另一个带有 javascript 的 cookie 以防止自动化,但我不确定。将登录后的cookies与真实浏览器和cookies.txt中的cookies进行对比
  • 哦,如果我调用你的脚本并检查输出,我必须输入验证码......

标签: php curl libcurl


【解决方案1】:

尝试将代理修改为类似的东西;

'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 错误。

【讨论】:

    【解决方案2】:

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

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

    还有一个小技巧,使用 HTTP 客户端库,在纯 cURL 中做这样的事情是一个皮塔,并且会给出一些非常糟糕和不可读的代码。

    https://github.com/guzzle/guzzle 为例。

    【讨论】:

    • 你的意思是使用 curl 不利于登录?以防万一,我只想使用 curl 将登录数据发布到身份验证页面并让它进行身份验证。如果没有,有没有办法在 PHP 中做这样的事情?
    • 没有 curl 非常适合这样做,只是 eBay 可能不希望工具登录到他们的 Web 前端,这不是 Web 前端的用途。 Web 前端是为计算机登录后的真实用户而设计的。如果您正在开发以某种方式自动化 eBay 的软件,您应该使用他们的 API,而不是假装自己是真实用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2011-10-08
    • 2011-11-23
    • 2020-04-16
    相关资源
    最近更新 更多