2012-03-19 103 views
1

我想弄清楚如何使用PHP和CURL登录到网站https://login.alibaba.com。我正在使用下面的代码,但它似乎并没有工作。你会如何推荐我自动登录到这个网站?以编程方式登录AliBaba.com

我当前的代码:

<? 
$cookie = "cookie.txt"; 
// set global curl options 
$curloptions = array(
     CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6', 
     CURLOPT_TIMEOUT => 60, 
     CURLOPT_COOKIEJAR => $cookie, 
     CURLOPT_COOKIEFILE => $cookie, 
     CURLOPT_REFERER => 'http://www.alibaba.com' 
); 

// set userinfo 
$username = 'xxxxxxxxxxx'; 
$password = 'xxxxxxxxxxx'; 

// clear cookie.txt (fresh session) 
$handle = fopen($cookie, 'w'); 
fclose($handle); 

// make a dummy request to generate a session 
curl_http_request('https://login.alibaba.com', $curloptions); 

// login 
curl_http_request('https://login.alibaba.com', 
    array(
     CURLOPT_POSTFIELDS => 'xloginPassport=' . $username . '&xloginPassword=' . $password . '&noCsrfToken=&xloginCheckToken=&rememberme=&runatm=', 
     CURLOPT_POST => TRUE 
    ), $curloptions 
); 

//example request 
echo curl_http_request('https://login.alibaba.com', 
    array(
     CURLOPT_FOLLOWLOCATION => TRUE, 
     CURLOPT_RETURNTRANSFER => TRUE 
    ), $curloptions 
); 

function curl_http_request ($url, $moreoptions = array(), $options = array()) 
{ 
    foreach ($moreoptions as $k => $v) $options[$k] = $v; 
    $handle = curl_init($url); 
    curl_setopt_array($handle, $options); 
    ob_start(); 
    $buffer = curl_exec($handle); 
    ob_end_clean(); 
    curl_close($handle); 
    return $buffer; 
} 
?> 
+0

正统剧访问或? – 2012-03-19 02:11:56

+1

如果您有充分的理由以编程方式访问它们,最好联系他们并询问他们是否提供受支持的API访问权限。比试图绕开显然是专门为了阻止你想要做的事情而开发的保护更好... – 2012-03-19 03:54:06

+0

你是否得到它的工作?即时寻找相同的 – 2012-11-28 12:57:29

回答

0

他们正在使用的登录一些象征性的产生方法,所以,除非你知道如何产生一样的,只是使用他们的网站的登录。

下面是一个典型的登录请求的样子:

https://login.alibaba.com/xman/xlogin.js?pd=alibaba&pageFrom=standardlogin&u_token=Bf0323500b707423d50c96aae931e204b&xloginPassport=andreaswongg70&xloginPassword=10fd852ff6603865cf632b59d935e56b&dmtrack_pageid=ca1b1fe2cdcc700d4f66917813628a849a71fcca49

+0

好的很酷谢谢我将如何存储cookie,以便我可以运行我的脚本,它会看到我登录? – 2012-03-19 02:30:22

+0

我的答案不是关于cookie,而是他们在每次登录尝试时都会生成一个唯一的令牌,所以除非您可以在该时间点您的脚本正在运行时猜测令牌,否则只需执行Web登录即可。 – 2012-03-19 02:31:28

+0

好吧,它不允许我登录...我一直得到结果:var xlogin_failed = {“error_type”:“illegal_password”,“check_token”:“no”} – 2012-03-19 02:36:35